Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
uc-welt:gscheiduino:12-daemmerungsschalter [2016/01/08 16:22] – Hannes Jochriem | uc-welt:gscheiduino:12-daemmerungsschalter [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | [[uc-welt: | + | [[uc-welt: |
====== Kapitel 12: Dämmerungsschalter ====== | ====== Kapitel 12: Dämmerungsschalter ====== | ||
Zeile 30: | Zeile 30: | ||
* graues Kabel von A0 nach H28 | * graues Kabel von A0 nach H28 | ||
- | Das Licht, das wir bei Dunkelheit einschalten wollen ist die grüne LED. | + | Das Licht, das wir bei Dunkelheit einschalten wollen, ist die grüne LED. |
+ | |||
+ | ===== Berechnung ===== | ||
+ | |||
+ | Wir wollen, dass das Licht irgendwann zwischen den Helligkeitsstufen " | ||
+ | |||
+ | ^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, | ||
+ | pinMode(ANALOGPIN, | ||
+ | if(analogRead(ANALOGPIN)< | ||
+ | { // Es ist hell | ||
+ | hell = 1; | ||
+ | digitalWrite(LED_GRUEN, | ||
+ | } | ||
+ | else | ||
+ | { // Der Wert ist im roten Bereich, kann also fallen | ||
+ | hell= 0; | ||
+ | digitalWrite(LED_GRUEN, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 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, | ||
+ | hell = 0; | ||
+ | } | ||
+ | else if((hell == 0) && (messwert < (SCHWELLWERT - HYSTERESE))) | ||
+ | { // Es wird wieder hell: | ||
+ | digitalWrite(LED_GRUEN, | ||
+ | hell = 1; | ||
+ | } | ||
+ | else | ||
+ | { // nichts tun | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | Besteht eine Möglichkeit, | ||
+ | |||
+ | Ja. Wir können einen weiteren Analogeingang verwenden um mit Hilfe eines Potis den Schwellwert einzustellen. | ||
+ | |||
+ | Wir kommen also zu [[uc-welt: |