const int lichtGroen2 = 13;
const int lichtOranje2 = 12;
const int lichtRood2 = 14;
const int lichtGroen1 = 25;
const int lichtOranje1 = 33;
const int lichtRood1 = 32;
const int knopSnelheid = 18;
const int knopKnipperen = 19;
const int lichtSnelheidWeergeven = 21;
void setup() {
Serial.begin(115200);
Serial.setTimeout(999999);
pinMode(knopSnelheid, INPUT_PULLDOWN); pinMode(knopKnipperen, INPUT_PULLDOWN);
pinMode(lichtGroen1, OUTPUT); pinMode(lichtOranje1, OUTPUT); pinMode(lichtRood1, OUTPUT);
pinMode(lichtGroen2, OUTPUT); pinMode(lichtOranje2, OUTPUT); pinMode(lichtRood2, OUTPUT);
pinMode(lichtSnelheidWeergeven, OUTPUT);
}
void loop() {
static bool knipperenEerder = false;
static bool knipperenHoogLaag = 0;
static bool knipperen = false;
static bool statusKnopKnipperenEerder = 0;
static bool spitsUurEerder = false;
static bool spitsUur = false;
static bool statusKnopSpitsuurEerder = 0;
static int groen = 5000;
static int oranje = 1000;
static int rood = 6000;
///////////////////////////////////////////////////////////////
delay(10);
bool statusKnopKnipperen = digitalRead(knopKnipperen);
if(statusKnopKnipperen != statusKnopKnipperenEerder ){
statusKnopKnipperenEerder = statusKnopKnipperen ;
if(statusKnopKnipperen == 1){
Serial.println("knop knipperen gedrukt!");
knipperen = !knipperenEerder;
knipperenEerder = !knipperenEerder;
Serial.println(knipperen);
}
delay(5);
}
static bool knipperStand = 1;
static unsigned int timestampKnipperen = 0;
static unsigned int timestampVerkeerslicht = 0;
static bool groenStand = 1;
Serial.println(groenStand);
static bool oranjeStand= 0;
static bool roodStand= 0;
if(knipperen == 1){
digitalWrite(lichtGroen1, LOW); digitalWrite(lichtOranje1, LOW); digitalWrite(lichtRood1, LOW);
digitalWrite(lichtGroen2, LOW); digitalWrite(lichtOranje2, LOW); digitalWrite(lichtRood2, LOW);
roodStand = 1;
if(millis() - timestampKnipperen > 1000){
timestampKnipperen = millis();
digitalWrite(lichtOranje2, knipperStand);
digitalWrite(lichtOranje1, knipperStand);
knipperStand = !knipperStand;
}
}
else if(knipperen == 0){
knipperStand = 0;
digitalWrite(lichtOranje2, LOW);
digitalWrite(lichtOranje1, LOW);
//////////////////////////////////
if(groenStand == 1 ){
digitalWrite(lichtOranje2, LOW);
digitalWrite(lichtGroen1, HIGH);
digitalWrite(lichtRood2, HIGH);
if(millis() - timestampVerkeerslicht > groen){
timestampVerkeerslicht = millis();
groenStand = 0;
digitalWrite(lichtGroen1, LOW);
oranjeStand = 1;
}
}
else if(oranjeStand == 1){
digitalWrite(lichtOranje1, HIGH);
if(millis() - timestampVerkeerslicht > oranje){
timestampVerkeerslicht = millis();
oranjeStand = 0;
digitalWrite(lichtOranje1, LOW);
roodStand = 1;
}
}
else if(roodStand == 1){
digitalWrite(lichtRood1, HIGH);
digitalWrite(lichtRood2, LOW);
digitalWrite(lichtGroen2, HIGH);
if(millis() - timestampVerkeerslicht > groen){
digitalWrite(lichtGroen2, LOW);
digitalWrite(lichtOranje2, HIGH);
}
if(millis() - timestampVerkeerslicht > rood){
timestampVerkeerslicht = millis();
roodStand = 0;
digitalWrite(lichtRood1, LOW);
groenStand = 1;
}
}
}
bool statusKnopSpitsuur = digitalRead(knopSnelheid);
if(statusKnopSpitsuur != statusKnopSpitsuurEerder){
statusKnopSpitsuurEerder = statusKnopSpitsuur;
if(statusKnopSpitsuur == 1){
Serial.println("knop spitsuur gedrukt!");
spitsUur = !spitsUurEerder;
spitsUurEerder = !spitsUurEerder;
Serial.println(spitsUur);
}
delay(5);
}
if(spitsUur == 1){
digitalWrite(lichtSnelheidWeergeven, HIGH);
groen = 2500;
oranje = 500;
rood = 3000;
}
else if(spitsUur == 0){
digitalWrite(lichtSnelheidWeergeven, LOW);
groen = 5000;
oranje = 1000;
rood = 6000;
}
} ///