Project 08 Digital Hourglass blz 87. terug naar de inleiding
De schets aangepast ipv 6 leds 5 leds die na elkaar om de 10 minuten gaan branden
na een uur doven de leds weer en begint het proces opnieuw.
const int schakelPin = 8;
unsigned long vorigeTijd = 0;
int schakeltoestand;
int vorigeSchakeltoestand = 1;
// variabele met het pinnummer van de eerste led
int led = 2;
// 600000 = 10 minuten in milliseconds
long interval = 600000;
void setup() {
// De for lus maakt van pinnen 2 t/m 6 output pinnen
for (int x = 2; x < 7; x++) {
pinMode(x, OUTPUT);
}
// Op pin 8 is de bewegingsensor aangesloten
pinMode(schakelPin, INPUT);
}
void loop() {
// De stand van de millis timer wordt,
// telkens als de loop wordt doorlopen wordt de tijd in "huidigeTijd" opgeslagen.
// datatype van millis(); is unsigned long
unsigned long huidigeTijd = millis();
// De eerste 10 minuten: vorigeTijd = 0;
// Zodra de 10 minuten (is de interval) om zijn
// komt huidigeTijd in vorigeTijd (wordt dus 10 minuten
// Led op pin 2 wordt ingeschakeld
// Led 2 wordt led 3 en de volgende cyclus van 10 minuten zal beginnen (vorigeTijd = 10 minuten)
if (huidigeTijd - vorigeTijd > interval) {
vorigeTijd = huidigeTijd;
digitalWrite(led, HIGH);
led++;
}
//Let op! zodra led 6 is ingeschakeld wordt de variable led = 7; led 6 moet nog 10 minuten branden
//na deze 10 minuten wordt de variabele led = 8; en worden alle leds uitgeschakeld
if (led == 8) {
// alle leds uitschakelen
for (int x = 2; x < 7; x++) {
digitalWrite(x, LOW);
}
//variabele led en time resetten
led = 2;
vorigeTijd = huidigeTijd;
}
// De toestand van de bewegingsensor wordt uitgelezen
schakeltoestand = digitalRead(schakelPin);
// Als de toestand van de bewegingsensor is verandert
// worden alle 6 leds uitgeschakeld en begint alles weer opnieuw
if (schakeltoestand != vorigeSchakeltoestand) {
for (int x = 2; x < 7; x++) {
digitalWrite(x, LOW);
}
// led en timer resetten en de schakeltoestand opslaan
led = 2;
vorigeTijd = huidigeTijd;
vorigeSchakeltoestand = schakeltoestand;
}
}