Goedenavond iedereen,
Ik heb een vraag. Ik ben aan het leren om met arduino te werken. Nu heb ik een programma gemaakt die twee verkeerslichten voor het autoverkeer regelt. Dit werkt goed.
Ook heb ik er een voetgangerslichtje bij geplaatst. Alleen zit hier een probleem. Het voetgangerslicht wordt alleen maar in werking gesteld als ik de drukknop induw, precies als de eerste oranje led (YELLOW) brandt.
Ik zou graag willen dat ik de drukknop 1x indruk, de arduino het programma afmaakt, de verkeerslichten voor het verkeer naar rood gooit om dan alsnog het programma voor het voetgangerslicht af te spelen. Ik krijg dit alleen niet voor elkaar.
Mijn programma:
//Voorbeeld van een verkeerslicht met drukknop voor voetgangers
const int RED = 12; //Eerste linkse rode led
const int YELLOW = 11; //Eerste linkse gele led
const int GREEN = 10; //Eerste linkse groene led
const int RED2 = 9; //Tweede rechtse rode led
const int YELLOW2 = 8; //Tweede rechtse gele led
const int GREEN2 = 7; //Tweede rechtse groene led
const int REDBOY = 6; //Voetgangerslicht rood
const int GREENBOY = 4; //Voetgangerslicht groen
const int BUZZER = 3; //Voetgangers groen licht verklikker
const int BUTTON = 2; //Drukknop voor voetgangers
int val = 0;void setup(){
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(RED2, OUTPUT);
pinMode(YELLOW2, OUTPUT);
pinMode(GREEN2, OUTPUT);
pinMode(REDBOY, OUTPUT);
pinMode(GREENBOY, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(BUTTON, INPUT);
}void loop(){
val = digitalRead(BUTTON);
if (val == HIGH) {
delay(300);
digitalWrite(REDBOY, LOW);
digitalWrite(GREENBOY, HIGH);
analogWrite(BUZZER, 150);
delay(5000);
for(int x=0; x<7; x++){
digitalWrite(GREENBOY, HIGH);
analogWrite(BUZZER, 150);
delay(200);
digitalWrite(GREENBOY, LOW);
analogWrite(BUZZER, 0);
delay(200);
}}else {
digitalWrite(RED2, HIGH);
digitalWrite(REDBOY, HIGH);
digitalWrite(RED, HIGH);
delay(500);
digitalWrite(RED2, LOW);
digitalWrite(GREEN2, HIGH);
delay(6000);
digitalWrite(GREEN2, LOW);
digitalWrite(YELLOW2, HIGH);
delay(1000);
digitalWrite(YELLOW2, LOW);
digitalWrite(RED2, HIGH);
delay(500);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
delay(6000);
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, HIGH);
}
}
Weten jullie de oplossing voor dit probleem?
Met vriendelijke groet,
Thomas