Ich probiere gerade eine simple Ampelsteuerung zu realisieren.
Nachdem der Taster "switchState" gedrückt wurde, soll für 10 Sekunden
greenLED HIGH sein, dann soll greenLED auf LOW gehen und yellowLED für 3
Sekunden auf HIGH, danach soll yellowLED auf LOW und redLED für 10
Sekunden auf HIGH.
Wenn der Taster losgelassen wird, sollen alle LEDs auf LOW.
const int greenTime = 10000;
const int yellowTime = 3000;
const int redTime = 10000;
int greenLED = 3;
int yellowLED = 4;
int redLED = 5;
int temp, i, j, k = 0;
int switchState = 0;
void setup()
{
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(1, INPUT);
}
void loop()
{
switchState = digitalRead(1);
if(switchState == HIGH)
{
do
{
digitalWrite(greenLED, HIGH);
i++;
}
while(i <= greenTime);
delay(1000);
do
{
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, HIGH);
j++;
}
while(j <= yellowTime);
delay(1000);
do
{
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, HIGH);
k++;
}
while(k <= redTime);
delay(1000);
}
else
{
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
}
}
Mein Problem ist, dass bei kurzem Tasterdrücken alle 3 LEDs sofort angehen und bei längerem Drücken rot durchgehend an ist und die anderen beiden im 1-2 Sekundentakt von HIGH auf LOW wechseln.