3.1.16

LINE FOLLOWER






int edge = 700;

int leftMotor[] = {2, 3};

int rightMotor[] = {4, 5};

int irPin[] = {6, 7, 8, 9};

bool irOutput[] = {0, 0, 0, 0};




void setMotors(int l, int r)

{

if (l >= 0 && r >= 0) {

analogWrite(leftMotor[0], l);

digitalWrite(leftMotor[1], LOW);

analogWrite(rightMotor[0], r);

digitalWrite(rightMotor[1], LOW);

}

else if (l < 0 && r < 0) {

l = -l;

r = -r;

analogWrite(leftMotor[1], l);

digitalWrite(leftMotor[0], LOW);

analogWrite(rightMotor[1], r);

digitalWrite(rightMotor[0], LOW);

}

else if (l < 0 && r > 0) {

l = -l;

analogWrite(leftMotor[1], l);

digitalWrite(leftMotor[0], LOW);

analogWrite(rightMotor[0], r);

digitalWrite(rightMotor[1], LOW);

}

else if (l > 0 && r < 0) {

r = -r;

analogWrite(leftMotor[0], l);

digitalWrite(leftMotor[1], LOW);

analogWrite(rightMotor[1], r);

digitalWrite(rightMotor[0], LOW);

}

else {

analogWrite(leftMotor[0], LOW);

digitalWrite(leftMotor[1], LOW);

analogWrite(rightMotor[0], LOW);

digitalWrite(rightMotor[1], LOW);

}

}




void stop(){

setMotors(0,0);

delay(5);

}

void forword(){

setMotors(255,255);

delay(5);

}

void left(){

setMotors(0,255);

delay(5);

}

void right(){

setMotors(255,0);

delay(5);

}




void setup() {

Serial.begin(9600);

for (int i = 0; i < 2; i++) {

pinMode(leftMotor[i], OUTPUT);

pinMode(rightMotor[i], OUTPUT);

}

for (int i = 0; i < 4; i++) {

pinMode(irPin[i], INPUT);

}

}




void loop() {

for(int i=0; i < 4; i++){

if(analogRead(irPin[i]) >= edge) irOutput[i] = 1;

else irOutput[i] = 0;

Serial.println("ir " + String(i+1) + " = " + String(analogRead(irPin[i])) + "\n");

//Serial.println("ir " + String(i+1) + " = " + String(irOutput[i]) + "\n");

}

delay(1000);




//conditional work

if(irOutput[0] == irOutput[3]){

if(irOutput[0] == irOutput[1]) stop();

else forword();

}

else{

if(irOutput[0] == 1) left();

else right();

}

}

No comments :

Post a Comment

Note: Only a member of this blog may post a comment.