29 september 2015

Tutorial 1 - Conventies, programmeren en het gebruik van inputs.

Conventies


Conventies; afspraken met betrekking tot de code. Eentje is er al genoemd: het aangeven van het type PIC dat gebruikt wordt. De Programming Editor doet het (ook) zelf, als niets opgegeven is; hij gaat uit van de aangesloten PIC.


Naamgeving

Aangezien de laatste versie Microchip/PICAXE PICs nogal wat mogelijkheden hebben per pootje (zie het referentie plaatje), is het een goede gewoonte om de commando's te gebruiken met een PORT.PIN notatie. In geval van de 08M2 lijkt dat (en is het) een tikkie overdreven, maar de PICAXE-40X2 heeft maar liefst vier poorten (A, B C en D), dus dan is het zo gek niet.
Kortom, het eerste programma wordt dus:
; connect physical pin 3 to L1, L2, or L3 ; set picaxe type #picaxe 08m2 main: high C.4 ; switch pin 3 high pause 1000 ; wait for 1 second low C.4 ; switch pin 3 low pause 1000 ; wait for 1 second goto main


Programmeren

Aan de hand van voorbeelden staan hieronder een paar programmeer principes uitgewerkt. Hopelijk wordt het potentieel van de PICAXE PICs duidelijk. De referentie staat natuurlijk online.


Symbols

Bij het gebruik van PICs met veel pootjes wordt het steeds lastiger om te onthouden welk in- of uitvoer apparaat gekoppeld is aan welk pootje. Dan is het gebruik van symbols makkelijk. Zo kun je de output C.4 in bovenstaand test programma vervangen door het symbol "LED", of "rode_LED", of "lampje".
; connect physical pin 3 to L1, L2, or L3 ; set picaxe type #picaxe 08m2 symbol LED = C.4 ; define LED connected to C.4 main: high LED ; switch on LED wait 1 ; wait for 1 second low LED ; switch LED off wait 1 ; wait for 1 second goto main ; loop forever

In plaats van pause gebruik ik hier wait. Pause telt in milliseconden, wait in hele seconden. Pause accepteert waarden tussen 1 en 65535, wait verwacht input tussen 1 en 65.


Loops

Loops, of lussen, zijn herhalende stukjes programma. Bovenstaand voorbeeld is een programma, dat altijd maar doorgaat, dankzij het "goto main" als laatste commando. Hordes programmeurs zijn tegen goto-commando's, bovendien wordt "goto" niet door alle programmeertalen herkend. Bovendien is een "goto" altijd op te vangen met een andere constructie.
In bovenstaand voorbeeld is het een loop. Daarnaast ga ik een teller gebruiken - nog een toepassing van SYMBOL, maar nu om een variabele te definiƫren (LED was een constante):
; connect physical pin 3 to L1, L2, or L3 symbol counter = b1 ; define the variable b1 as "counter" symbol LED = C.4 ; define pin 3 with the name "LED" ; set picaxe type #picaxe 08m2 main: for counter = 1 to 5 ; start a for...next loop high LED ; switch pin 3 high pause 500 ; wait for 0.5 second low LED ; switch pin 3 low pause 500 ; wait for 0.5 second next counter ; end of for...next loop end ‘ end program
Dit programma zal dus de LED vijf keer laten "flashen" en is dan beƫindigd. Dat is niet erg spectaculair... als je wilt laten zien wat je kan met zo'n PIC en iemand reageert niet snel genoeg, dan is het alweer voorbij. Je moet de PIC dan opnieuw opstarten, en bij een PICAXE-08M2 betekent dat: spanning eraf en weer opnieuw aansluiten.
Dat kan anders!


Input


Er zitten een aantal schakelaar op het AXE091 prototype bord. Ik ga ervoor zorgen, dat de PIC de LED vijf keer laat flashen nadat de schakelaar ingedrukt is. Om dit voor elkaar te krijgen, sluit ik ingang C.1 (pootje 6) aan op schakelaar SW3. Ingang C.3 (pootje 6) - groene draad. De gele draad is (nog steeds) uitgang C.4 (pootje 3).
Groene draad gaat aan connector met opschrift SW3; de gele is (nog steeds) verbonden met L1:
Het programma wordt vervolgens:
; connect physical pin 3 to L1, L2, or L3 ; connect physical pin 6 to SW1, SW2, or SW3 symbol counter = b1 ; define the variable b1 as "counter" symbol LED = C.4 ; define pin 3 with the name "LED" symbol KEY = pinC.1 ; define pin 6 with the name "KEY" ; set picaxe type #picaxe 08m2 main: ; main loop if KEY = 1 then flash ; 1 means high (Vcc) goto main flash: for counter = 1 to 5 ; start a for...next loop high LED ; switch pin 4 high pause 500 ; wait for 0.5 second low LED ; switch pin 4 low pause 500 ; wait for 0.5 second next counter ; end of for...next loop goto main ; done - wait for next key

En dit is het resltaat:

Wordt vervolgd met analoge input.

Geen opmerkingen :

Een reactie posten