[[uc-welt:gscheiduino:08-analoginputs|← Kapitel 8: Analoge Eingänge]] | [[uc-welt:gscheiduino:00-uebersicht|↑ Übersicht]] | [[uc-welt:gscheiduino:10-batterie|Kapitel 10: Übungsaufgabe Batterietester →]] ====== Kapitel 9: Schwellwertschalter ====== ====== Die Aufgabe ====== Wir wollen nun mit unserem Mikrocontroller eine Spannung überwachen. Wenn sich die Spannung unter einem Grenzwert befindet, leuchtet eine grüne LED, wird dieser Schwellwert überschritten, leuchtet eine rote LED. Der Schwellwert beträgt 3V. Wir berechnen also unseren Wandlerwert: $ Wandlerwert = \dfrac{3V}{0,00488V}-1 = 613 $ Bei der Berechnung des Wandlerwertes runden wir immer ab. Die Formale Frage lautet also: Wenn der Wandlerwert größer 613 ist, soll die rote LED leuchten ====== Umsetzung ====== Umsetzen können wir das, dank dem Wissen aus [[uc-welt:gscheiduino:08-analoginputs#if-operation|Kapitel 8]], sehr elegant: #define LED_ROT 13 #define LED_GRUEN 11 #define ANALOGPIN A0 void setup() { pinMode(LED_ROT, OUTPUT); // Pin auf Ausgang pinMode(LED_GRUEN, OUTPUT); // Pin auf Ausgang pinMode(ANALOGPIN, INPUT); // Pin auf Eingang } void loop() { if(analogRead(ANALOGPIN)>613) { // Wenn der Wert >613 ist, wird folgender Code ausgeführt: digitalWrite(LED_ROT, HIGH); // rote LED an digitalWrite(LED_GRUEN, LOW); // gruene LED aus } else { // Ansonsten wird dieser Code hier ausgeführt: digitalWrite(LED_ROT, LOW); // rote LED aus digitalWrite(LED_GRUEN, HIGH); // gruene LED an } } Ohne Vorwarnung haben wir hier noch eine weitere Funktion des if-Operanden gelernt: Das if-then-else-Statement. Wie man in diesem Fall sieht, ist es ganz praktisch, wenn man zwischen zwei Codeblöcken entscheiden kann. Dies erreicht man durch **else**: if(AUSRUCK) { #CODE1# } else { #CODE2# } Kompliziert ist das nicht, es bedeutet lediglich: Wenn der Ausdruck **true** ist, wird CODE1 ausgeführt, sonst CODE2. ====== Praktischer Test ====== Nun können wir das oben aufgeführte Programm kompilieren und auf den Controller laden. Wenn das Poti auf Anschlag gegen den Uhrzeigersinn gedreht wurde, leuchtet nun die grüne LED auf. Wenn wir nun das Poti langsam im Uhrzeigersinn drehen, erreichen wir den Punkt, an dem 3V am Analogeingang anliegen. An diesem Punkt wird die rote LED ein- und die grüne ausgeschaltet. Drehen wir wieder zurück (gegen den Uhrzeigersinn) erlischt dir rote LED und die grüne fängt an zu leuchten. Wie gewohnt gibt es jetzt wieder eine Übungsaufgabe: [[uc-welt:gscheiduino:10-batterie|Kapitel 10: Übungsaufgabe Batterietester]]