LED-Blinken
Programmcode mit Aufgabenstellung
void setup () { // Zwei Schrägstriche: Alles, was von hier bis zum Zeilenende geschrieben wird, ist ein Kommentar und wird vom Arduino nicht beachtet.
// Alle Befehle, die innerhalb der geschweiften Klammern vom setup () stehen, werden ein Mal ausgeführt.
pinMode (6, OUTPUT); // Pin 6 wird als OUTPUT definiert. An OUTPUTs kann der Arduino entweder 5V (High) oder 0V (Low) anlegen.
} // Ende des Setups.
void loop () { // Start der Schleife. Alles, was innerhalb der Loop steht, wird als Schleife ausgeführt.
digitalWrite (6, HIGH); // Befehl, der Pin 6 auf HIGH - d.h. 5V - setzt
delay (1000); // delay pausiert den Arduino für den Wert in Milli-Sekunden
digitalWrite (6, LOW); // Befehl, der Pin 6 auf LOW - d.h. 0V - setzt
delay (1000);
} // Ende der Schleife. Die Schleife wird jetzt wieder von vorne durchlaufen.
/* P1_LED-Blinken_14.05.2019
**********************************************************
AUFGABEN (Hinweise und Lösungen finden Sie am Ende!)
**********************************************************
1 VORBEREITUNG - Laden Sie dieses Programm unverändert auf den Aruino hoch. Wenn alles geklappt hat, blinkt die LED.
2 EINSTIEG (Partneraufgabe) - Machen Sie sich mit dem Programmcode vertraut.
Erklären Sie einer Person den Aufbau des Programms und die einzelnen Programmfunktionen mit eigenen Worten.
3 BLINKGESCHWINDIGKEIT - Lassen Sie die LED schneller blinken. Ändern Sie hierfür den Programmcode und übertragen Sie ihn anschließend auf den Arduino.
Tipp: Wo im Programm steht ein Wert für die Zeit? Ändern Sie diesen und laden das Programm wieder auf den Arduino.
4 AUFLÖSUNGSFÄHIGKEIT I - Bestimmen Sie die zeitliche Auflösungsfähigkeit des menschlichen Auges (Wahrnehmungsschwelle).
Erhöhen Sie hierfür schrittweise die Blinkfrequenz der LED, bis das Blinken nicht mehr von einem Dauerleuchten zu unterscheiden ist.
5 AUFLÖSUNGSFÄHIGKEIT II (Partneraufgabe) - Testen Sie mit anderen Personen, ob diese Schwelle bei unterschiedlichen Personen identisch ist.
6 WEITERE LEDS - Verschalten Sie eine weitere LED mitsamt Vorwiderstand mit dem Arduino (z.B. an PIN 10) und lassen Sie beide LEDs im Wechsel blinken.
Tipp: Sie müssen unter >> void setup << definieren, an welchem Port die zusätzliche LED angesteuert wird und wie sich der Port verhalten soll. Kopieren Sie die entsprechenden Befehle und passen Sie sie an.
7 DIMMEN VON LEDS - Dimmen Sie die LED zunächst, anstatt sie direkt auszuschalten. Dieses funktioniert nur an den PWM-Ausgängen des Arduino. Diese sind auf dem Arduino an der kleinen Wellenlinie zu erkennen.
Verwenden Sie dazu den Befehl >> analogWrite(6, 100); << und spielen Sie mit den letzten Wert (0-255).
8 MORSECODE I - Lassen Sie den Arduino Ihren Namen oder ein beliebiges Wort (z.B. SOS) morsen. Eine Tabelle mit Morsecodes finden Sie auf dem Begleitblatt oder z.B. unter en.wikipedia.org/wiki/Morse_code
9 MORSECODE II (Partneraufgabe) - Lassen Sie eine Person einen (kurzen) Morsecode entschlüsseln (dekodieren).
10 FUNKTIONEN - Das Morseprogramm ist sicher sehr lang und unübersichtlich. Es wäre übersichtlicher wenn man direkt DITs und DAHs (d.h. kurze und lange LED-Morse-Zeichen) aufrufen könnte.
Definieren Sie dazu im Quellcode DIT und DAH als Funktion. Fügen Sie dazu außerhalb von >> void loop() { ... } << für DIT folgendes ein:
void DIT() {
*Befehle, um LEDs an- und auszuschalten*
}
Anschließend können Sie diesen Code an einer beliebien Stelle innerhalb von z.B. void loop mit >> DIT(); << aufrufen
und Morsecodes mit DIT();DIT();DIT(); usw. ausführen. Verfahren Sie genauso mit einer Funktion für DAH();
**********************************************************
LÖSUNGSHINWEISE
**********************************************************
3 BLINKGESCHWINDIGKEIT - LÖSUNGSHINWEISE
- Nach jeder Änderung im Programmcode muss dieser erneut übertragen werden!
- Das Blinken der LED läuft wie folgt ab: LED einschalten, warten, LED ausschalten, warten, wiederholen.
- Ändern Sie beide Werte, die das Programm zwischen ein- und ausschalten wartet.
- Die Zeitdauer wird in Millisekunden angegeben, für eine halbe Sekunde schreiben Sie bspw. delay(500);
- Gibt es eine Fehlermeldung? Haben Sie vlt. ein Semikolon ; am Ende der Befehlszeile vergessen?
- geht vor lauter Fehlermeldungen gar nichts mehr? Laden Sie das Programm erneut.
4 AUFLÖSUNGSFÄHIGKEIT I - LÖSUNGSHINWEISE
- Ändern Sie die Werte bei delay. Das zeitliche Auflösungsvermögen des menschlichen Auges liegt zwischen 30 und 70 Ereignissen pro Sekunde.
7 DIMMEN VON LEDS - Der Befehl für Dimmen lautet analogWrite(6, 100); er kann zusammen mit einem kurzen delay hinter den Befehl >> digitalWrite (6, HIGH); << eingefügt werden.
Experimentieren Sie mit verschiedenen Werten und bauen den Befehl mehrmals und verringern Sie so schrittweise die Helligkeit.
**********************************************************
LÖSUNGEN
**********************************************************
3 BLINKGESCHWINDIGKEIT - LÖSUNG:
Ändern Sie den Wert bei delay. Um die LED schneller blinken zu lassen, muss die Pause zwischen dem Blinken verringert werden, bspw. >> delay (200); <<
4 AUFLÖSUNGSFÄHIGKEIT I - LÖSUNG
fügen Sie unter >> void setup << folgenden Code hinzu:
>> pinMode (10, OUTPUT); <<
fügen Sie unter >> void loop << folgenden Code hinzu:
digitalWrite (10, HIGH);
delay (500);
digitalWrite (10, LOW);
10 FUNKTIONEN - LÖSUNG
Fügen Sie unterhalb der loop-Schleife ein:
void DIT() {
digitalWrite (6, HIGH);
delay (200);
digitalWrite (6, LOW);
delay (500);
}
void DAH() {
digitalWrite (6, HIGH);
delay (500);
digitalWrite (6, LOW);
delay (500);
}
Benutzen Sie anschließend innerhalb der loop-Schleife die Befehle DIT(); bzw. DAH();,
z.B. >> DIT();DIT();DIT();DAH();DAH();DAH();DIT();DIT();DIT(); << für das Morsezeichen SOS
*/