the front right sensor are used for line tracking
i got no idea why does my count count up by itself automatically when the condition is not trigger
int count;
//----FRONT RIGHT SENSOR---- //
int FrontRight_Left = 40;
int FrontRight_Mid = 41;
int FrontRight_Right = 42;
int FrontRight_Left_sensorvalue;
int FrontRight_Mid_sensorvalue;
int FrontRight_Right_sensorvalue;
//----FRONT Left SENSOR---- //
int FrontLeft_Left = 44;
int FrontLeft_Mid = 45;
int FrontLeft_Right = 46;
int FrontLeft_Left_sensorvalue;
int FrontLeft_Mid_sensorvalue;
int FrontLeft_Right_sensorvalue;
//--BACK Right Sensor--//
int BackRight_Left = 48;
int BackRight_Right = 49;
int BackRight_Left_sensorvalue;
int BackRight_Right_sensorvalue;
//--BACK Left Sensor--//
int BackLeft_Left = 50;
int BackLeft_Right = 51;
int BackLeft_Left_sensorvalue;
int BackLeft_Right_sensorvalue;
///--------MOTOR--------///
//---Motor A //
int ENA = 2;
int IN1 = 22;
int IN2 = 23;
//--- MotorB //
int ENB = 3;
int IN3 = 24;
int IN4 = 25;
void setup() {
Serial.begin(9600);
pinMode(FrontRight_Left, INPUT);
pinMode(FrontRight_Mid, INPUT);
pinMode(FrontRight_Right, INPUT);
pinMode(FrontLeft_Left, INPUT);
pinMode(FrontLeft_Mid, INPUT);
pinMode(FrontLeft_Right, INPUT);
pinMode(BackRight_Left, INPUT);
pinMode(BackRight_Right, INPUT);
pinMode(BackLeft_Left, INPUT);
pinMode(BackLeft_Right, INPUT);
pinMode (ENA, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
analogWrite(ENA,0);
analogWrite(ENB,0);
count=0;
}
void loop() {
if(count==0)
{
LineSensorReading();
if(FrontRight_Mid_sensorvalue==0&&BackLeft_Left_sensorvalue==1)
{
Forward();
}
else if(FrontRight_Left_sensorvalue==0&&BackLeft_Left_sensorvalue==1)
{
TurnLeft();
}
else if(FrontRight_Right_sensorvalue==0&&BackLeft_Left_sensorvalue==1)
{
TurnRight();
}
else if(FrontRight_Mid_sensorvalue==0&&BackLeft_Left_sensorvalue==0)
{
count++;
Serial.print(count);
}
else if(FrontRight_Left_sensorvalue==0&&BackLeft_Left_sensorvalue==0)
{
count++;
Serial.print(count);
}
else if(FrontRight_Right_sensorvalue==0&&BackLeft_Left_sensorvalue==0)
{
count++;
Serial.print(count);
}
}
if(count==1)
{
MotorStop();
}
}
void LineSensorReading()
{
FrontRight_Left_sensorvalue=digitalRead(FrontRight_Left);
FrontRight_Mid_sensorvalue=digitalRead(FrontRight_Mid);
FrontRight_Right_sensorvalue=digitalRead(FrontRight_Right);
FrontLeft_Left_sensorvalue=digitalRead(FrontLeft_Left);
FrontLeft_Mid_sensorvalue=digitalRead(FrontLeft_Mid);
FrontLeft_Right_sensorvalue=digitalRead(FrontLeft_Right);
BackRight_Left_sensorvalue=digitalRead(BackRight_Left);
BackRight_Right_sensorvalue=digitalRead(BackRight_Right);
BackLeft_Left_sensorvalue=digitalRead(BackLeft_Left);
BackLeft_Right_sensorvalue=digitalRead(BackLeft_Right);
}
void DisplayReading()
{
Serial.print("FrontRight_Left_sensorvalue ");
Serial.print(FrontRight_Left_sensorvalue);
Serial.print(" ");
Serial.print("FrontRight_Mid_sensorvalue ");
Serial.print(FrontRight_Mid_sensorvalue);
Serial.print(" ");
Serial.print("FrontRight_Right_sensorvalue ");
Serial.print(FrontRight_Right_sensorvalue);
Serial.println("");
Serial.print("FrontLeft_Left_sensorvalue ");
Serial.print(FrontLeft_Left_sensorvalue);
Serial.print(" ");
Serial.print("FrontLeft_Mid_sensorvalue ");
Serial.print(FrontLeft_Mid_sensorvalue);
Serial.print(" ");
Serial.print("FrontLeft_Right_sensorvalue ");
Serial.print(FrontLeft_Right_sensorvalue);
Serial.println("");
Serial.print("BackRight_Left_sensorvalue ");
Serial.print(BackRight_Left_sensorvalue);
Serial.print(" ");
Serial.print("BackRight_Right_sensorvalue ");
Serial.print(BackRight_Right_sensorvalue);
Serial.println("");
Serial.print("BackLeft_Left_sensorvalue ");
Serial.print(BackLeft_Left_sensorvalue);
Serial.print(" ");
Serial.print("BackLeft_Right_sensorvalue ");
Serial.print(BackLeft_Right_sensorvalue);
Serial.println("");
Serial.print(count);
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
}
void Reverse()
{
analogWrite(ENA,150);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,150);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void Forward()
{
analogWrite(ENA,125);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,120);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void TurnLeftSlight()
{
analogWrite(ENA,100);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,100);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void TurnRightSlight()
{
analogWrite(ENA,100);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,100);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void TurnLeft()
{
analogWrite(ENA,110);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,130);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void TurnRight()
{
analogWrite(ENA,130);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,100);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void MotorStop()
{
analogWrite(ENA,0);
analogWrite(ENB,0);
}
void TurnLeft90deg()
{
analogWrite(ENA,0);
digitalWrite(IN1,HIGH);
[b][i][img]digitalWrite[/img][/i][/b](IN2,LOW);
analogWrite(ENB,150);
digitalWrite(IN3,LOW);
digitaquotete(IN4,HIGH);
}