[[uc-welt:gscheiduino:04-ampelsteuerung|← Zurück zum Kapitel]]
====== Musterlösung Ampelsteuerung ======
#define LED_ROT 13
#define LED_GELB 12
#define LED_GRUEN 11
void setup()
{
pinMode(LED_ROT, OUTPUT);
pinMode(LED_GELB, OUTPUT);
pinMode(LED_GRUEN, OUTPUT);
}
void loop()
{
digitalWrite(LED_ROT, HIGH);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, LOW);
delay(2000);
digitalWrite(LED_ROT, HIGH);
digitalWrite(LED_GELB, HIGH);
digitalWrite(LED_GRUEN, LOW);
delay(1000);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, HIGH);
delay(3000);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, HIGH);
digitalWrite(LED_GRUEN, LOW);
delay(1000);
}
Als kleines Beispiel zur Pinänderung:
Sollten wir nun die grüne LED anstatt an Pin11 plötzlich an Pin10 anstecken, können wir diese Änderung sehr einfach ganz am Anfang am define vornehmen:
#define LED_ROT 13
#define LED_GELB 12
#define LED_GRUEN 10
void setup()
{
pinMode(LED_ROT, OUTPUT);
pinMode(LED_GELB, OUTPUT);
pinMode(LED_GRUEN, OUTPUT);
}
void loop()
{
digitalWrite(LED_ROT, HIGH);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, LOW);
delay(2000);
digitalWrite(LED_ROT, HIGH);
digitalWrite(LED_GELB, HIGH);
digitalWrite(LED_GRUEN, LOW);
delay(1000);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, HIGH);
delay(3000);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, HIGH);
digitalWrite(LED_GRUEN, LOW);
delay(1000);
}
====== Optimierte Variante ======
Den Code von ganz oben kann man natürlich noch optimieren und die überflüssigen Anweisungen entfernen:
#define LED_ROT 13
#define LED_GELB 12
#define LED_GRUEN 11
void setup()
{
pinMode(LED_ROT, OUTPUT);
pinMode(LED_GELB, OUTPUT);
pinMode(LED_GRUEN, OUTPUT);
}
void loop()
{
digitalWrite(LED_ROT, HIGH);
delay(2000);
digitalWrite(LED_GELB, HIGH);
delay(1000);
digitalWrite(LED_ROT, LOW);
digitalWrite(LED_GELB, LOW);
digitalWrite(LED_GRUEN, HIGH);
delay(3000);
digitalWrite(LED_GELB, HIGH);
digitalWrite(LED_GRUEN, LOW);
delay(1000);
}