Ik heb nu het volgende "huiswerk" gedaan.
De opdracht was om een pot-meter te gebruiken en een led.
Zodra de potmeter boven een getal komt, moet de led branden , beneden dat getal moet de led uit blijven.
Nu vraag ik me af of ik iets kan verbeteren behalve misschien dit zonder delay te schrijven.
Project : Wokwi - Online ESP32, STM32, Arduino Simulator
Ik denk dat die delay er alleen in zit zodat de scherm afdruk niet al te snel gaat.
Als het programma doet wat je verwacht is het goed 
oke
Ik kreeg het idee dat als je verder gaat en complexer projecten aanpakt delay niet meer gebruilkt kan worden.
Dus dat delay meer voor beginners is en de blink zonder delay meer gevorderd
Als je meerdere zaken min-of-meer tegelijk wilt doen is dat inderdaad het geval.
Maar voor een demonstratie programma zoals deze maakt delay() het vele malen simpeler. Als je een uitdaging wilt kun je proberen het potmeter programma om te schrijven naar een millis() gebaseerde benadering.
Ik hou wel van een uitdaging om wat te leren dus ik ga het proberen.
Denk dat het niet zo moeilijk meer is nadat ik het met delay geschreven heb.
Maar we zullen zien.
@sterretje
Lijkt dit een beetje goed
int ledPin = 5;
const unsigned long MSecInterval = 500;
unsigned long msec0;
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long msec = millis();
if (msec - msec0 >= MSecInterval) {
msec0 = MSecInterval ;
potVal = analogRead(potPin);
Serial.println(potVal);
if (potVal > 600) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
}
Als ik het probeer dan lijkt het te werken.
Hier werkt het niet
De reden is msec0 = MSecInterval ;. Je zet msec0 op 500. Zodra millis() boven de 500 komt zal if (msec - msec0 >= MSecInterval) iedere aanroep van loop() waar zijn.
Denk daar eens over na en kijk of je het kunt oplossen. Anders zal ik je daar bij helpen.
Dan ga ik eens goed nadenken.
Als ik het hier ( Wokwi - Online ESP32, STM32, Arduino Simulator ) probeer, werkt het.
Boven de 600 gaat de led aan en beneden de 600 gaat de led uit.
Ja, dat werkt nog steeds. Mijn punt was dat de timing niet klopt; het is geen 500 ms interval meer zoals in de originele sketch.
In de wokwi (en op mijn seriële monitor) vliegen de getallen me om de oren 
oke
dat is dus het probleem.
Eens vandaag goed nadenken waar dan het "probleem" zit.
Als ik alleen naar de code kijk, zie ik niet waar het "probleem" zit
Dat wordt dus een hoop debug getallen bekijken
Even naar oude code gekeken en het lijkt erop dat deze regel :
msec0 = MSecInterval ;
naar dit verandert moet worden,
Zit ik goed ?
msec0 += MSecInterval ;