// Code used for the obstacle avoiding, line following robot.
int MotorControl[] = {4,5,6,7}; // Define the motor driver input controls
int LineSens [] = {8,9,10 }; // Define Line sensor's L,C,R inputs
int LineVal [] = {0,0,0 };
char Direction;
void setup() {
// put your setup code here, to run once:
pinMode(MotorControl, OUTPUT);
pinMode(LineSens , INPUT );
Serial.begin(9600);
}
void Control(char x) {
// Switch between the possible directions
switch(x){
case 'F':
//set motor1 forward
digitalWrite(MotorControl[0], 0 );
digitalWrite(MotorControl[1], 1 );
//set motor2 forward
digitalWrite(MotorControl[2], 0 );
digitalWrite(MotorControl[3], 1 );
break;
case 'B':
//set motor1 backward
digitalWrite(MotorControl[0], 1 );
digitalWrite(MotorControl[1], 0 );
//set motor2 backward
digitalWrite(MotorControl[2], 1 );
digitalWrite(MotorControl[3], 0 );
break;
case 'R':
//set motor1 backward
digitalWrite(MotorControl[0], 1 );
digitalWrite(MotorControl[1], 0 );
//set motor2 forward
digitalWrite(MotorControl[2], 0 );
digitalWrite(MotorControl[3], 1 );
break;
case 'L':
//set motor1 forward
digitalWrite(MotorControl[0], 0 );
digitalWrite(MotorControl[1], 1 );
//set motor2 backward
digitalWrite(MotorControl[2], 1 );
digitalWrite(MotorControl[3], 0 );
}
}
void loop() {
LineVal[0] = digitalRead(LineSens[0]);
LineVal[1] = digitalRead(LineSens[1]);
LineVal[2] = digitalRead(LineSens[2]);
// put your main code here, to run repeatedly:
if (LineVal[0] == 1){
Serial.println("LEFT");
Direction = 'L';
}else if (LineVal[1] == 1){
Serial.println("CENTER");
Direction = 'F';
}else if (LineVal[2] == 1){
Serial.println("RIGHT");
Direction = 'R';
};
Control(Direction);
delay(50);
}