Hallo allemaal,
Ik ben bezig om ledjes te laten schakelen als er op een knop gedrukt word.
Ze gaan met 2sec vertraging aan, tot zover werkt het goed, enkel als ik de knop even indruk en loslaat, gaan er maar 3 aan van de 4 en dan gaan ze allemaal ineen keer weer uit, maar dat zal ook te maken hebben met iets wat niet klopt in de code van de 'timer'.
Zodra de knop weer losgelaten word zouden ze met vertraging na elkaar uit moeten gaan, maar op een of andere manier krijg ik het niet werkend.
Ik heb al verschillende manieren geprobeerd met de millis, maar de juiste manier blijkbaar nog niet.
Is er iemand die me kan zeggen wat ik niet goed doe en waarom, en hoe ik het wel werkend zou kunnen krijgen?
Dankjewel alvast!
unsigned long previousMillis = 0;
const long TimerA = 5000UL;
const long TimerB = 10000UL;
const long TimerC = 15000UL;
const long TimerD = 20000UL;
const int button = 6;
const int led1 = 8;
const int led2 = 9;
const int led3 = 10;
const int led4 = 11;
int buttonState = 0;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
buttonState = digitalRead(button);
if (buttonState == HIGH) {
digitalWrite(led1, HIGH);
delay(2000);
digitalWrite(led2, HIGH);
delay(2000);
digitalWrite(led3, HIGH);
delay(2000);
digitalWrite(led4, HIGH);
}
unsigned long currentMillis = millis();
if (buttonState!= HIGH) {
if (currentMillis - previousMillis >= TimerA) {
digitalWrite(led1, LOW); // turn the LED off by making the voltage LOW
}
if (currentMillis - previousMillis >= TimerB) {
digitalWrite(led2, LOW);
}
if (currentMillis - previousMillis >= TimerC) {
digitalWrite(led3, LOW);
}
{
if (currentMillis - previousMillis >= TimerD) {
digitalWrite(led4, LOW);
}
}
}
}
verlichting1.ino (1.15 KB)