Hier nun die komplette Software "Lampensimulator" mit folgenden Funktionen:
Nach dem Starten des Programms blinken zuerst einmal alle LED-Leuchtmittel:
LED an PB0 = 0,5 Hz (Hellphase 1 s, Dunkelphase 1 s)
LED an PB1 = 1 Hz (Hellphase 0,5 s, Dunkelphase 0,5 s)
LED an PB2 = 2 Hz (Hellphase 0,25 s, Dunkelphase 0,25 s)
Die Aufgabe sieht vor, dass der Roboter das LED-leuchtmittel mit der niedrigsten Blinkfrequenz ansteuert und eine unter dem LED-Leuchtmittel angebrachte Taste betätigt. Das Blinken des entsprechenden LED-Leuchtmittels erlischt und nach einer Pause von 2 s wird das Positionierungssignal ausgegeben:
Sobald der Taster 1 an PD0 einmal gedrückt wird, sendet er ein Positionierungssignal (fortlaufend).
Sobald der Taster 2 an PD1 einmal gedrückt wird, sendet er ein Positionierungssignal (fortlaufend).
Sobald der Taster 3 an PD2 einmal gedrückt wird, sendet er ein Positionierungssignal (fortlaufend).
Ein weiterer Tastendruck beendet jeweils die Ausgabe des Positionierungssignals und das Blinken setzt wieder ein.
ACHTUNG: Der Tastendruck auf Taster 1 steuert nur das LED-Leuchtmittel 1. Sollten die beiden anderen LED-Leuchtmittel gerade blinken, so tun sie es auch weiterhin ohne Unterbrechung. Die 3 Kanäle (aus jewiels 1 Taster und 1 Lampe) arbeiten völlig unabhängig.
Um diese Unabhängigkeit in der Steuerung der 3 LED-Leuchtmittel zu gewährleisten, war es notwendig, einen festen Takt von 1/8 Sekunde mittels eines 16-Bit Timers (Timer1) zu erzeugen. Daraus werden dann alle Blinksignale und die Positionierungssignale abgeleitet. Der Takt ist für alle 3 Kanäle gleich. Ansonsten hat jeder Kanal aber eigene Zählvariablen.
Software-Projekt "Lampensimulator" für WinAVR (einschließlich Makefile usw.
Quellcode "Lampensimulator":
.