3. switsch case voorbeeldcode
code:
/*
Switch statement
Creëert een mogelijkheid om diverse sensorbereiken aan te wenden voor verschillende gebruikersniveau's.
1 Jul 2009, modified 9 Apr 2012 by Tom Igoe en verder uitgebreid
en aangepast door H. Visser, afdeling technasium Jacob Roelandslyceum,
Boxtel
programma is publiek domein.
*/
// bepaal eerst de hoogste en de laagste digitale waarde (min 0 - max 1023) van je sensor, in dit geval een LDR (Light
// Dependent Resistance)
const int sensorMinimum = 0; // sensor minimum
const int sensorMaximum = 600; // sensor maximum experimenteel vastgesteld.
int ledPin = 12;
void setup() {
Serial.begin(9600);
pinMode (ledPin, OUTPUT);
}
void loop() {
// waarden van de sensor lezen via analoge ingang A0 en opslaan in de variabele:
int sensorWaarde = analogRead(A0);
// Het sensorbereik 'mappen'. Dwz onderverdelen in (dit geval) 4 keuzeopties. Zie: https://www.arduino.cc/en/Reference/map
// Analoge poorten hebben een maximum digitale output waarde van 255.
int bereik = map(sensorWaarde, sensorMinimum, sensorMaximum, 0, 3);
switch (bereik) // e.e.a. is afhankelijk van de sensor zelf en van de lichtomgeving waarin je experiment uitvoert.
{
case 0: // situatie 0 = "donker" door bv je hand op de sensor te houden.
Serial.println("donker");
digitalWrite (ledPin, HIGH);
delay(3000);
digitalWrite (ledPin, LOW);
break;
case 1: // situatie 1 = "gedimd licht" door bv je hand vlak voor de sensor te houden.
Serial.println("gedimd licht");
break;
case 2: // situatie 2 = "licht" door je hand wat verder van de sensor weg te houden.
Serial.println("licht");
break;
case 3: // situatie 3 = "helder licht" door onbelemmerde lichtval op de LDR.
Serial.println("helder licht");
break;
}
delay(2); // korte vertraging vanwege stabiliteit
}