Elektronica projecten: Hoe om te gebruiken voor Loops in PBASIC code

De PBASIC FOR-lus zal de BASIC Stamp in uw elektronica project uit te voeren een lus een bepaald aantal keren. Het is ook een geweldige programmering hulpmiddel voor het uitvoeren van een actie op meerdere I / O pinnen. Zo, een FOR-lus is de ideale manier om de uitvoering van een LED Flasher programma.

De basisstructuur van een FOR-lus ziet er als volgt uit:

FOR counter = start-value to-value eindigen
Verklaringen ...
NEXT

Hier is een voorbeeld dat de LED op pin 0 tien keer knippert:

X VAR BYTE
Voor X = 1 tot 10
HIGH 0
PAUZE 500
LOW 0
PAUZE 500
NEXT

In dit voorbeeld wordt de lus tien keer uitgevoerd. De waarde van de variabele X verhoogd met 1 telkens door de lus.

In het voorgaande voorbeeld, heeft het programma niet gebruiken overigens tellervariabele. Dat is gebruikelijk in VOOR lussen; soms de enige doel de teller variabele te bepalen hoeveel keren de lus uitgevoerd. Maar je kunt de teller variabele gebruiken binnen de lus. Bijvoorbeeld, hier is een lus die elke I / O-pin op de Stamp HIGH voor een tiende van een seconde maakt:

IO_Pin VAR BYTE
VOOR IO_Pin = 0 tot 15
HIGH IO_Pin
PAUZE 100
LOW IO_Pin
NEXT

Normaal gesproken wordt de teller variabele verhoogd met een aan elke doorgang door de lus. U kunt de STEP keyword gebruiken om een ​​andere stap waarde opgeven als je wilt. Wanneer u de STEP keyword gebruiken, de basisstructuur van de FOR statement ziet er als volgt uit:

FOR counter = start-waarde om stap voor stap-waarde-waarde eindigen
Verklaringen ...
NEXT

Bijvoorbeeld, kon u LED's op alleen de even genummerde pinnen als dit knipperen:

Led VAR Byte
Voor led = 0 tot 10 STAP 2
HIGH Led
PAUZE 100
LOW Led
NEXT

Een ander interessant kenmerk van de lussen is dat ze achteruit kan tellen. Het enige wat je hoeft te doen is aangeven een begin waarde die groter is dan de eindwaarde, zoals deze:

Led VAR Byte
Voor led = 10 TO 0 STEP 2
HIGH Led
PAUZE 100
LOW Led
NEXT

Deze versie van het LED Flasher programma een paar lussen aan de LEDs knipperen eerste in één richting en vervolgens in de tegenovergestelde richting. De eerste FOR lus knippert de LED's op pennen 0, 2, 4, 6 en 8. Vervolgens wordt de tweede FOR lus knippert de LED's op pinnen 10, 8, 6, 4, en 2. Beide lussen zitten in een DO lus die de LED blijft stuiteren heen en weer voor onbepaalde tijd.

'LED Flasher Program
'Doug Lowe
"10 juli 2011
'
Dit programma knippert LEDs verbonden met pin 0, 2, 4, 6, 8, en 10
'Heen en weer, net als Cylon ogen.
'
'Deze versie van het programma gebruikt voor lussen.
'{$ STAMP BS2}
'{$ PBASIC 2.5}
Led VAR Byte
Hoofd:
Voor led = 0 tot 8 STAP 2
HIGH Led
PAUZE 100
LOW Led
NEXT
Voor led = 10 TOT 2 STAP 2
HIGH Led
PAUZE 100
LOW Led
NEXT
GOTO Hoofd

Wanneer VOOR lussen zijn genest, de binnenste lus (s) te voltooien hun hele cyclus elke keer door de buitenste lus. Als een lus die tien keer herhaald wordt geplaatst binnen een buitenste lus die tien keer herhaalt, zal de verklaringen in de binnenste lus totaal 100 keer uitvoeren - tien keer voor elk van de tien herhalingen van de buitenste lus.

Deze maakt gebruik van een buitenste FOR-lus dat de vertraging varieert voor de PAUZE verklaringen. Het resultaat is dat de LED vegen zeer snel begin, maar langzaam 10 ms bij elke herhaling van de buitenste lus totdat de vertraging van een seconde per LED bereikt.

'LED Flasher Program
'Doug Lowe
"10 juli 2011
'
Dit programma knippert LEDs verbonden met pin 0, 2, 4, 6, 8, en 10
'Heen en weer, net als Cylon ogen.
'
'Deze versie van het programma maakt gebruik van geneste FOR-NEXT lussen aan het vertragen
'Vegen beweging van de LED's.
'{$ STAMP BS2}
'{$ PBASIC 2.5}
Led VAR Byte
Snelheid VAR Word
Voor snelheid = 10 tot 1000 STAP 10
Voor led = 0 tot 8 STAP 2
HIGH Led
PAUZE Speed
LOW Led
NEXT
Voor led = 10 TOT 2 STAP 2
HIGH Led
PAUZE Speed
LOW Led
NEXT
NEXT