Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
uc-welt:gscheiduino:04-ampelsteuerung [2016/01/04 16:39] – Hannes Jochriem | uc-welt:gscheiduino:04-ampelsteuerung [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | [[uc-welt: | + | [[uc-welt: |
- | ====== Kapitel 4: Ampelsteuerung ====== | + | ====== Kapitel 4: Übungsaufgabe |
===== Schaltung ===== | ===== Schaltung ===== | ||
Zeile 35: | Zeile 35: | ||
{{: | {{: | ||
- | |||
- | ===== Programmablauf ===== | ||
- | |||
- | Das Ziel dieser Aufgabe ist es, eine Ampelsteuerung zu simulieren. Das Timing dieser Steuerung soll wie folgt aussehen: | ||
- | |||
- | * Die Ampel startet rot | ||
- | * Nach 2 Sekunden rot wird gelb eingeschaltet | ||
- | * Nach 1 Sekunde erlischt rot und gelb und grün leuchtet | ||
- | * Nach 3 Sekunden schaltet die Ampel von grün auf gelb | ||
- | * Nach 1 Sekunde erlischt gelb und der Zyklus beginnt von vorne | ||
===== Definitionssache ===== | ===== Definitionssache ===== | ||
Zeile 76: | Zeile 66: | ||
Um solche #defines schnell zu erkennen, werden sie in der Regel mit Großbuchstaben geschrieben. Wir erkennen jetzt also, dass zum Beispiel //HIGH// auch eine Konstante ist, die von Arduino bereits definiert wurde. | Um solche #defines schnell zu erkennen, werden sie in der Regel mit Großbuchstaben geschrieben. Wir erkennen jetzt also, dass zum Beispiel //HIGH// auch eine Konstante ist, die von Arduino bereits definiert wurde. | ||
+ | Warum definieren wir das aber? Ganz einfach: Wenn wir die rote LED mehrfach in unserem Code verwenden müssen, können wir jedesmal LED_ROT schreiben. Sollte sich irgendwann der Pin ändern (Und jeder der jetzt denkt: "Warum sollte sich ein Pin ändern?" | ||
+ | |||
+ | ===== Programmablauf ===== | ||
+ | |||
+ | Das Ziel dieser Aufgabe ist es, eine Ampelsteuerung zu simulieren. Das Timing dieser Steuerung soll wie folgt aussehen: | ||
+ | |||
+ | * Die Ampel startet rot | ||
+ | * Nach 2 Sekunden rot wird gelb eingeschaltet | ||
+ | * Nach 1 Sekunde erlischt rot und gelb, grün leuchtet | ||
+ | * Nach 3 Sekunden schaltet die Ampel von grün auf gelb | ||
+ | * Nach 1 Sekunde erlischt gelb und der Zyklus beginnt von vorne | ||
+ | |||
+ | ===== Kleine Hilfestellung ===== | ||
+ | |||
+ | Da die Defines noch neu sind gibt es hier das Grundgerüst des Codes, der erweitert werden soll: | ||
+ | |||
+ | <code c kapitel04_ampel-grund.ino> | ||
+ | #define LED_ROT 13 | ||
+ | #define LED_GELB 12 | ||
+ | #define LED_GRUEN 11 | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(LED_ROT, | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | digitalWrite(LED_ROT, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Die Aufgabe besteht nun darin, den Code an den entsprechenden Stellen so zu erweitern, dass die Ampelsteuerung wie oben beschrieben, | ||
+ | |||
+ | Als Vergleich zur selbst erstellten Lösung gibt es [[uc-welt: | ||
+ | Jetzt wo wir wissen, wie Ausgänge funktionieren, | ||
+ | [[uc-welt: |