Arduino IR Sensors Not Calling Functions -


with code written in arduino ide used able call functions based on infrared sensor detected object(right, left, or both). altered code little bit lately i've continued make sure wasn't missing key components made work in first place. i'm not sure if it's error in program or hardware now, no matter sensor detects object, robot turns left.

//include servo library #include <servo.h>  //define pins sensors , leds #define lsensorpin 8 #define rsensorpin 5 #define lefttranspin 7 #define righttranspin 6 

i'm using continuous rotation servos using 0's , 180's how control them @ full speed. checked numbers on , on don't seem problem.

//constants driving servo const int rforward = 0;  const int rbackward = 180;  const int lforward = rbackward;  const int lbackward = rforward;  const int rneutral = 90;  const int lneutral = 90; //0 speed  //name servos left , right motor servo lmotor; servo rmotor; 

the following 2 functions, when called, transmit infrared signal through transmitters. not think related problem because sensors still detect objects, robot doesn't respond way want to.

//take reading left ir sensor void leftirled(){   for(int i=0;i<=384;i++){    digitalwrite(lefttranspin, high);    delaymicroseconds(13);    digitalwrite(lefttranspin, low);    delaymicroseconds(13);  } }  //take reading right ir sensor void rightirled(){   for(int i=0;i<=384;i++){    digitalwrite(righttranspin, high);    delaymicroseconds(13);    digitalwrite(righttranspin, low);    delaymicroseconds(13);  }  } 

these functions control direction in robot moves. i've checked many times possibly 1 of problems. control spin of each individual servo declared variables.

//controlling servo directions functions void forward(){  rmotor.write(rforward);  lmotor.write(lforward); } void backup(){  rmotor.write(rbackward);  lmotor.write(lbackward); } void stop(){  rmotor.write(rneutral);  lmotor.write(lneutral); } void left(){  rmotor.write(rforward);  lmotor.write(lneutral); } void right(){  rmotor.write(rneutral);  lmotor.write(lforward); }  //declare input , output each pin connected //to arduino uno , set them low void setup(){  pinmode(lefttranspin, output);  digitalwrite(lefttranspin, low);  pinmode(righttranspin, output);  digitalwrite(righttranspin, low);  //drive forward  lmotor.attach(9);  rmotor.attach(10);  forward();  } 

although can't pinpoint problem believe has loop function. here transmit infrared signal, receive it, , call various functions control movement of robot.

void loop(){  /*drive forward until reach obstacle on either  right side, left side, or both together(something in front of you).  if left sensor goes low, turns right, if right sensor goes low, turns left.  if both turn on @ same time stops, backs up, , turns right till out of danger */ int lstate; int rstate;  leftirled();  lstate = digitalread(lsensorpin);  delay(50); rightirled();  rstate = digitalread(rsensorpin);  delay(50);  if (lstate == low && rstate == low) {  stop();  delay(100);  backup();  delay(1000);  stop();  delay(100);  right();  delay(500); } else if (lstate == low) {  stop();  delay(100);  backup();  delay(1000);  right();  delay(500); } else if (rstate == low) {    stop();  delay(100);  backup();  delay(1000);          left();  delay(500); } else {  forward();   } } 

any or advice appreciated!


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -