Well I’m sorry Paul. I guess I haven’t got the answer for you then. As all you give me is it doesn’t turn I haven’t got much to go on. Could be maybe an inadequate power supply, incorrect circuit then. I’d take Chris’s advice and break it down into smaller parts. Get your servo to turn first, get your motors to run one way then another, make the IR trigger an led, and then put the code blocks and circuits together. I would suggest you read this article first and then give it another go.
my bot worked it will sence whats in front but it will only turn right nd if nothings ther then it will go forward. i thing my sharp is not returning a second value in whichway. how shoul i correct it.
It sounds like you have a working system. At this point, I would set it aside and try the next simple code.
For this next program, I would skip the motors and move on to the servo. Leave the chassis motionless and write a program that does only this:
Swing servo to left side, take reading
Put this reading in a variable called "left-something"
Swing servo to the right side, take reading
Put this reading in a variable called "right-something"
Send these readings to your terminal or debug window
Confirm that these numbers are what you are expecting
When you get these numbers coming thorough ok, I would add some code to simply determine with direction is the better way to go (which direction you would want the robot to go) and have that data sent to the terminal or debug window as well.
With this “isolated” test, you can confirm your numbers are what they should be, and you can check this one off the list.
i tested as chris have told. my servo is moving too fast to each side and am not getting a return value from sharp always. some times it return a value. how can i make the srevo move slowly??
There are two issues here. First, it is not how fast the servo is going to its position, its that it is not staying there long enough. Servos are physical things that take time to get to where they are going, after you tell a servo to go to a given position, you need to add a pause to allow it to do so. If you do not use a pause, or the pause is not long enough, the sharp sensor will try to take a reading while the servo is still moving (not good for solid readings). Your code should be this:
Move servo
pause 1000 or so
read sensor / variable one
move servo to other side
pause 1000 or so
read sensor / variable two
A one-second pause should be more than enough for your servo to get to where its going. If you use the code above, you should be getting two good readings from your sharp in your two variables. If you are not getting both readings, something else is wrong.
Apart from the above, if you want to slow down the actual “sweep” of the servo, this can be done. It should be mentioned that the speed at which your servo moves IS NOT the cause of your sensor problems. --This “slowing down the sweep” issue is UNRELATED to your issue as described above.
–To slow down a servo, you simply need to move it a little bit at a time with a small pause in-between. You are going to use a “for loop” to do this. As a matter of fact, a for-loop is incredibly important and you will use it all the time, it is very important to learn.