Stap 1: Hoe het werkt
Dit is de schets, is alle code geschreven in de lus-sectie.
int tOn = 500; int tOffTime = 500; int timer; unsigned long previousMillis=0; #define pinLed 4 void setup() { pinMode(pinLed, OUTPUT); } void loop() { if (millis() - previousMillis) >= timer) { if (digitalRead(pinLed)==HIGH) { timer = tOff; } else { timer = tOn; } digitalWrite(pinLed, !digitalRead(pinLed)); } }
Laten we eens kijken hoe het werkt:
- tOn en tOff waarden vertegenwoordigen hoe lang het lampje blijft op en hoe lang blijft uit
- Timer: bij elke cyclus betekent deze waarde "hoe lang tot het lampje staat overschakelen zal" en het gonna be gelijk aan tOn of tOff
- previousMillis: kwamen we dit al in onze vorige Inst. Slaat de vorige waarde van het millis() op de heks de led gewijzigde status.
- als ((millis()-previousMillis) > = timer): dit gebeurt alleen als de waarden van millis is verstreken sinds het vorige evenement zal gelijk zal zijn aan "timer"
- als (digitalRead(ledPin)...: als het lampje brandt, de variabele "timer" zal het opslaan van de tijd Off voor de volgende cyclus en viceversa
In de volgende stap zullen we schrijven alle deze code in een eenvoudige functie met behulp van parameters aan te passen van tOn en tOff