int SENSOR1=A0;
int SENSOR2=A1;
int SENSOR3=A2;
int YELLOW1=2;
int RED=3;
int YELLOW2=4;
int clearcount;
void trkclr(int valA0, int valA2);
void trkoccright(int valA0, int valA2);
void trkoccleft(int valA0, int valA2);
void trkocc(int valA0, int valA2);
void setup() {
Serial.begin(9600);
pinMode(YELLOW1, OUTPUT);
pinMode(RED, OUTPUT);
pinMode(YELLOW2, OUTPUT);
pinMode(SENSOR1, INPUT);
pinMode(SENSOR2, INPUT);
pinMode(SENSOR3, INPUT);
}
enum TRACKSTATES
{
TRKCLR,
TRKOCC,
TRKOCCRIGHT,
TRKOCCLEFT,
};
TRACKSTATES trackState=TRKCLR;
void loop() {
int valA0=analogRead(SENSOR1);
int valA1=analogRead(SENSOR2);
int valA2=analogRead(SENSOR3);
Serial.println(valA0);
Serial.println(valA1);
Serial.println(valA2);
delay(200);
switch(trackState)
{
case TRKCLR:
trkclr(valA0, valA1, valA2);
break;
case TRKOCC:
trkocc(valA0, valA1, valA2);
break;
case TRKOCCRIGHT:
trkoccright(valA0, valA2);
break;
case TRKOCCLEFT:
trkoccleft(valA0, valA2);
break;
}
}
void trkclr(int valA0, int valA1, int valA2){
digitalWrite(YELLOW1, LOW);
digitalWrite(RED, LOW);
digitalWrite(YELLOW2, LOW);
delay(500);
clearcount=0;
if (valA0>500 && valA2<500){
trackState=TRKOCCRIGHT;
}
if (valA0<500 && valA2>500){
trackState=TRKOCCLEFT;
}
if (valA0<500 && valA1<500 && valA2<500){
trackState=TRKOCC;
}
if (valA0>500 && valA1>500 && valA2>500){
trackState=TRKCLR;
}
}
void trkoccright(int valA0, int valA2){
digitalWrite(YELLOW1, HIGH);
digitalWrite(RED, HIGH);
digitalWrite(YELLOW2, LOW);
delay(500);
}
void trkoccleft(int valA0, int valA2){
digitalWrite(YELLOW1, LOW);
digitalWrite(RED, HIGH);
digitalWrite(YELLOW2, HIGH);
delay(500);
}
void trkocc(int valA0, int valA1, int valA2){
digitalWrite(YELLOW1, LOW);
digitalWrite(RED, HIGH);
digitalWrite(YELLOW2, LOW);
delay(500);
}