Code zur Musterlösung
Der ADC liest Werte von 0 - 1023 aus dem Poti. Der Schwellwert hier im Büro war 500, es sollten also die gängisten Werte mit dem Poti dargestellt werden können.
- kapitel13_daemmerungsschalter.ino
#define LED_GRUEN 11 #define ANALOGPIN A0 #define POTIPIN A1 #define HYSTERESE 60 int hell = 1; int messwert = 0; int schwellwert = 0; void setup() { pinMode(LED_GRUEN, OUTPUT); // Pin auf Ausgang pinMode(ANALOGPIN, INPUT); // Pin auf Eingang pinMode(POTIPIN, INPUT); // Pin auf Eingang schwellwert = analogRead(POTIPIN); if(analogRead(ANALOGPIN)<schwellwert) { // Es ist hell hell = 1; digitalWrite(LED_GRUEN, LOW); // gruene LED aus } else { // Der Wert ist im roten Bereich, kann also fallen hell= 0; digitalWrite(LED_GRUEN, HIGH); // gruene LED an } } void loop() { messwert = analogRead(ANALOGPIN); schwellwert = analogRead(POTIPIN); // Lieber mehr Klammern setzen als zu wenig, so ist die Reihenfolge sicher definiert: if((hell == 1) && (messwert > (schwellwert + HYSTERESE))) { // Es wird dunkel: digitalWrite(LED_GRUEN, HIGH); // gruene LED an hell = 0; } else if((hell == 0) && (messwert < (schwellwert - HYSTERESE))) { // Es wird wieder hell: digitalWrite(LED_GRUEN, LOW); // gruene LED aus hell = 1; } else { // nichts tun } }