Video: .Build - Bouw je eigen gitaarversterker - Klein kastje dat groots klinkt 2024
De PBASIC FOR-lus zorgt ervoor dat de BASIC Stamp in uw elektronicaproject een lus een bepaald aantal keren uitvoert. Het is ook een geweldige programmeer-tool voor het uitvoeren van een actie op meerdere I / O-pinnen. Een FOR-lus is dus de ideale manier om een LED Flasher-programma te implementeren.
De basisstructuur van een FOR-lus ziet er als volgt uit:
VOOR teller = startwaarde TOT eindwaarde Verklaringen … VOLGENDE
Hier is een voorbeeld dat de LED tien keer op pin 0 knippert:
X VAR BYTE VOOR X = 1 TOT 10 HOOG 0 PAUZE 500 LAAG 0 PAUZE 500 VOLGEND
In dit voorbeeld wordt de lus tien keer uitgevoerd. De waarde van de variabele X wordt telkens met 1 verhoogd door de lus.
In het voorgaande voorbeeld heeft het programma de tellervariabele niet daadwerkelijk gebruikt. Dat is gebruikelijk in FOR-loops; soms is het enige doel van de tellervariabele om te bepalen hoe vaak de lus wordt uitgevoerd. Maar u kunt de tellervariabele binnen de lus gebruiken. Hier is bijvoorbeeld een lus die elke I / O-pen op de stempel HOOG maakt voor een tiende seconde:
IO_Pin VAR BYTE VOOR IO_Pin = 0 TOT 15 HOOG IO_Pin PAUZE 100 LAAG IO_Pin VOLGENDE
Normaal wordt de teller-variabele met één verhoogd bij elke passage door de lus. U kunt het STEP-sleutelwoord gebruiken om desgewenst een andere stapwaarde op te geven. Wanneer u het STEP-sleutelwoord gebruikt, ziet de basisstructuur van de FOR-instructie er als volgt uit:
VOOR teller = startwaarde TOT eindwaarde STAP stapwaarde Verklaringen … VOLGENDE
U zou bijvoorbeeld LED's kunnen knipperen op alleen de even genummerde pinnen:
Led VAR Byte FOR Led = 0 TO 10 STAP 2 HOOG Led PAUZE 100 LAAG Led VOLGENDE
Een ander interessant kenmerk van FOR-lussen is dat ze achterwaarts kunnen tellen. Het enige wat u hoeft te doen is een startwaarde opgeven die groter is dan de eindwaarde, zoals deze:
Led VAR Byte FOR Led = 10 TO 0 STAP 2 HOOG Led PAUSE 100 LAAG Led VOLGENDE
Deze versie van de LED Flasher programma gebruikt een paar FOR-lussen om eerst de LED's in één richting te laten knipperen en vervolgens in de tegenovergestelde richting. De eerste FOR-lus knippert de LED's op pinnen 0, 2, 4, 6 en 8. Dan knippert de tweede FOR-lus de LED's op pinnen 10, 8, 6, 4 en 2. Beide FOR-lussen bevinden zich in een DO lus die ervoor zorgt dat de LED's eindeloos heen en weer stuiteren.
'LED Flasher-programma' Doug Lowe '10 juli 2011' Dit programma knippert LED's aangesloten op pinnen 0, 2, 4, 6, 8 en 10 'heen en weer, zoals Cylon-ogen. "Deze versie van het programma gebruikt FOR-lussen.'{$ STEMPEL BS2}' {$ PBASIC 2. 5} Led VAR-byte Main: FOR Led = 0 TOT 8 STAP 2 HOOG Led PAUSE 100 LAAG Led VOLGENDE VOOR Led = 10 TOT 2 STAP 2 HOOG Led PAUZE 100 LAAG Led VOLGENDE GOTO Hoofd
Wanneer FOR-lussen genest zijn, voltooien de binnenste lus (sen) hun gehele cyclus elke keer door de buitenste lus. Als een FOR-lus die tien keer wordt herhaald in een buitenlus wordt geplaatst die tien keer wordt herhaald, worden de instructies binnen de binnenste lus in totaal 100 keer uitgevoerd - tien keer voor elk van de tien herhalingen van de buitenste lus.
Deze gebruikt een buitenste FOR-lus die de vertragingstijd voor de PAUSE-instructies varieert. Het resultaat is dat de LED's eerst heel snel gaan, maar bij elke herhaling van de buitenlus langzaam 10 ms, totdat de vertraging één seconde per LED bereikt.
'LED Flasher-programma' Doug Lowe '10 juli 2011' Dit programma knippert LED's die zijn aangesloten op pinnen 0, 2, 4, 6, 8 en 10 'heen en weer, zoals Cylon-ogen.' Deze versie van het programma gebruikt geneste FOR-NEXT-lussen om de 'vegende beweging van de LED's te vertragen. '{$ STEMPEL BS2}' {$ PBASIC 2. 5} Led VAR bytesnelheid VAR Word VOOR Snelheid = 10 TOT 1000 STAP 10 VOOR Led = 0 TOT 8 STAP 2 HOOG Led PAUZE Snelheid LAAG Led VOLGENDE VOOR Led = 10 NAAR 2 STAP 2 HOOGLED PAUZE Snelheid LAGE Led VOLGENDE VOLGENDE