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
}