Hey guys i have to add each event to the array at the moment that it changes and if typed in the 'c' the array must be cleared could anyone tell me how to add the events and how to clear the array?first part is before the setup and second is a function used in the loop. Thanks in advance
typedef enum {
stopX,
slowX,
goX,
stopY,
slowY,
goY,
pietonsX,
pietonsY
} EtatLight;
EtatLight light;
typedef struct {
int activeButton;
EtatLight presentState;
unsigned long timeEvent;
} evenement_t;
evenement_t evenement;
evenement_t event[Size];
void normal_lights() {
switch (light) {
case stopX:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeRED) {
previousmillis = millis();
light = goY;
}
break;
case slowX:
digitalWrite(redX, LOW);
digitalWrite(yellowX, HIGH);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeYELLOW) {
previousmillis = millis();
if (pietonWAIT == true) {
light = pietonsX;
}
else
light = stopX;
}
break;
case goX:
digitalWrite(redX, LOW);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, HIGH);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeGREEN) {
previousmillis = millis();
light = slowX;
}
break;
case stopY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeRED) {
previousmillis = millis();
light = goX;
}
break;
case slowY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, LOW);
digitalWrite(yellowY, HIGH);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeYELLOW) {
previousmillis = millis();
if (pietonWAIT == true) {
light = pietonsY;
}
else
light = stopY;
}
break;
case goY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, LOW);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, HIGH);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeGREEN) {
previousmillis = millis();
light = slowY;
}
break;
case pietonsX:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, HIGH);
if (millis() - previousmillis >= timePIETON) {
previousmillis = millis();
light = goY;
pietonWAIT = false;
}
break;
case pietonsY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, HIGH);
if (millis() - previousmillis >= timePIETON) {
previousmillis = millis();
light = goX;
pietonWAIT = false;
}
break;
}
}void normal_lights() {
switch (light) {
case stopX:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeRED) {
previousmillis = millis();
light = goY;
}
break;
case slowX:
digitalWrite(redX, LOW);
digitalWrite(yellowX, HIGH);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeYELLOW) {
previousmillis = millis();
if (pietonWAIT == true) {
light = pietonsX;
}
else
light = stopX;
}
break;
case goX:
digitalWrite(redX, LOW);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, HIGH);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeGREEN) {
previousmillis = millis();
light = slowX;
}
break;
case stopY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeRED) {
previousmillis = millis();
light = goX;
}
break;
case slowY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, LOW);
digitalWrite(yellowY, HIGH);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeYELLOW) {
previousmillis = millis();
if (pietonWAIT == true) {
light = pietonsY;
}
else
light = stopY;
}
break;
case goY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, LOW);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, HIGH);
digitalWrite(pietXY, LOW);
if (millis() - previousmillis >= timeGREEN) {
previousmillis = millis();
light = slowY;
}
break;
case pietonsX:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, HIGH);
if (millis() - previousmillis >= timePIETON) {
previousmillis = millis();
light = goY;
pietonWAIT = false;
}
break;
case pietonsY:
digitalWrite(redX, HIGH);
digitalWrite(yellowX, LOW);
digitalWrite(greenX, LOW);
digitalWrite(redY, HIGH);
digitalWrite(yellowY, LOW);
digitalWrite(greenY, LOW);
digitalWrite(pietXY, HIGH);
if (millis() - previousmillis >= timePIETON) {
previousmillis = millis();
light = goX;
pietonWAIT = false;
}
break;
}
}