Hoi teuntje, welkom !
Omdat jij beloofd had dat je de moeite had genomen met millis aan het werk te zijn, heb ik de moeite genomen je sketch te downloaden en openen.
Ik zou je graag willen vragen ook even de moeite te nemen de gebruiksaanwijzing van het forum (klik !) te lezen, inclusief de verwijzing naar het Engelstalige deel daarvan.
Dat helpt jou het forum optimaal te gebruiken, zodat je ons helpt jou te helpen.
Deze sketch is niet groot, en kan daarom gemakkelijk als code worden ingevoegd in je vraag en hoeft dan niet onnodig gedownload te worden.
Daarom heb ik je code even laten optimaliseren zodat ie er nog iets netter uitziet, en plaats ik hem hier:
int pinLightsensor = 2;
int pinBuzzer = 3;
int sitStatus;
int sittingtolong = LOW;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinLightsensor, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
sitStatus = digitalRead(pinLightsensor);
Serial.println(sitStatus);
if (sitStatus == sittingtolong)
{
digitalWrite(pinBuzzer, HIGH);
}
else
{
digitalWrite(pinBuzzer, LOW);
}
delay(500);
}
Ik zal je vertellen wat ik lees in deze code:
Je leest een 1 of een 0 van een lichtsensor en je slaat het resultaat op in sitStatus.
Daarna kijk je of deze waarde overeenkomt met LOW, want dat heb je al in sittingtolong gezet.
In dat geval zet je iets aan.
In het andere geval zet je dat uit.
En dan doe je een halve seconde helemaal niets, om daarna weer van voor af aan te beginnen.
En dat was het.
Behalve wachten aan het eind van je handelingen, doe je helemaal niets met tijd.
Ik zie geen 2 seconden of wat dan ook voorbij komen.
Wat ik wel zie is dat je een goede les geleerd hebt uit de blink without delay sketch, maar net niet helemaal zoals bedoeld.
En dat kan ik zien aan de namen die je hebt gegeven aan je variabelen (ook als die helemaal niet variabel zijn).
Ik heb het dan met name over sitStatus en sittingtolong (te vertalen als "zitten in verlangen").
Ik neem even aan dat je eigenlijk bedoelde sittingTooLong (zit al te lang).
Maar de waarde die daar in staat, en wat je er mee doet gaat dan niet goed.
Je zou eens kunnen kijken of de zoemer al 2000 milliseconden aan staat.
In dat geval zet je 'm uit.
Maar dan moet je dus naar de millis kijken.
En je moet niet alleen bijhouden hoe het met de lichtsensor gaat.
Je moet bijvoorbeeld ook bijhouden of je de zoemer aan hebt staan.
En soms moet je ook weer iets op nul zetten, wellicht ook door meer dan 1 oorzaak.
Maak daarom eens een lijstje van dingen die je allemaal in de gaten moet houden.
En zorg er voor dat namen die je aan variabelen geeft, kloppen met waar ze voor staan.
Overigens zijn er best veel mogelijke vormen van variabelen, en dat is niet voor niets.
Voor een kleine sketch als deze is dat niet zo'n probleem en dus kun je dat voor nu wel even laten schieten.
Maar wanneer je sketches straks groter en gecompliceerder worden, heb je echt nodig dat je de juiste vormen kiest.
Dus das ook een aandachtspuntje voor je.