Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
uc-welt:gscheiduino:12-daemmerungsschalter [2016/01/08 15:59] – angelegt Hannes Jochriemuc-welt:gscheiduino:12-daemmerungsschalter [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-[[uc-welt:gscheiduino:11-hysterese|← Kapitel 11: Hysterese]] | [[uc-welt:gscheiduino:00-uebersicht|↑ Übersicht]]  | [[ →]]+[[uc-welt:gscheiduino:11-hysterese|← Kapitel 11: Hysterese]] | [[uc-welt:gscheiduino:00-uebersicht|↑ Übersicht]]  | [[uc-welt:gscheiduino:13-einstellbarer-daemmerungsschalter|Kapitel 13: Übungsaufgabe einstellbarer Dämmerungsschalter →]]
  
 ====== Kapitel 12: Dämmerungsschalter ====== ====== Kapitel 12: Dämmerungsschalter ======
Zeile 20: Zeile 20:
 ===== Aufbau ===== ===== Aufbau =====
  
 +Der Aufbau für unseren Dämmerungsschalter sieht so aus:
 +
 +{{:uc-welt:gscheiduino:gscheiduino_breadboard_kap12-daemmerung.png?direct&300|Aufbau Dämmerungsschalter}}
 +
 +  * 10kOhm zwischen D28 und G28
 +  * LDR zwischen J28 und J30
 +  * rotes Kabel von der linken Spannungsschiene nach A28
 +  * blaues Kabel von der rechten Masseschiene nach H30
 +  * graues Kabel von A0 nach H28
 +
 +Das Licht, das wir bei Dunkelheit einschalten wollen, ist die grüne LED.
 +
 +===== Berechnung =====
 +
 +Wir wollen, dass das Licht irgendwann zwischen den Helligkeitsstufen "Wohnzimmer" und "Straßenbeleuchtung" einschaltet. Die Spannungen sind ([[bauteile:ldr#ergebnisse|wie hier zu sehen]]) zwischen 2,5 und 4,16V. Wir nehmen jetzt einfach mal den Wert 3,5V. Die Hysterese soll nun ±0,3V betragen. Wie wir [[uc-welt:gscheiduino:08-analoginputs#theorie|hier]] gelernt haben sind die Analogwandlerwerte also:
 +
 +^Spannung^Wandlerwert^
 +| 3,5V | 715 |
 +| 0,3V | 60 |
 +
 +===== Code =====
 +
 +Wir können den Code vom letzten Beispiel fast 1:1 verwenden:
 +
 +<code c kapitel12_daemmerungsschalter.ino>
 +#define LED_GRUEN 11
 +#define ANALOGPIN A0
 +#define HYSTERESE 60
 +#define SCHWELLWERT 715
 + 
 +int hell = 1;
 +int messwert = 0;
 + 
 +void setup()
 +{
 +  pinMode(LED_GRUEN, OUTPUT); // Pin auf Ausgang
 +  pinMode(ANALOGPIN, INPUT);  // Pin auf Eingang
 +  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);
 +  // 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
 +  }
 +}
 +</code>
 +
 +Die Werte SCHWELLWERT und HYSTERESE können natürlich noch angepasst werden um ein gutes Ergebnis zu erzielen. Hier im Büro von eHaJo funktionieren folgende Werte am Besten:
 +
 +  * SCHWELLWERT 500
 +  * HYSTERESE 200
 +
 +Nun bietet sich eine Übungsaufgabe an: Da der Schwellwert abhängig vom Widerstand und von der gewünschten Helligkeit ist, wäre es sehr sinnvoll, wenn man den nachträglich, ohne Programmierung, ändern könnte.
 +
 +Besteht eine Möglichkeit, dies zu tun?
 +
 +Ja. Wir können einen weiteren Analogeingang verwenden um mit Hilfe eines Potis den Schwellwert einzustellen.
 +
 +Wir kommen also zu [[uc-welt:gscheiduino:13-einstellbarer-daemmerungsschalter|Kapitel 13: Übungsaufgabe einstellbarer Dämmerungsschalter]]