Let's Make Robots!

Finally finishing the "start here" bot.

I just got the part I need for the "start here" bot, which is the new GP2Y0A02YK0F. My first problem is, I can't remove the old GP2D12 from the cable that connects it to the PICAXE board. If I am also correct, The setup should be the same as the old GP2D12 right? Like where the wires are supposed to go?


EDIT: Okay, I got it working kind of. I see one infrared light on in the sensor, but the other doesnt show anything. Is it supposed to light up? Secondly, When i use the program on the "start here" page, My robot just looks left and right, turns, and repeats. Never drives forward. Any suggestions?

EDIT2: Well, after much struggle, I am at a loss. I have nothing else to do. The Sharp IR lights up, no smoke or smells, but whatever I try I just cannot get it to recognize my hand at all. Its hooked up correctly, I am sure of it. I measured 20cm back from the sensor, no response still. I am afraid that I must give up on this if I can't figure out a solution.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

You didn't say what you changed when the robot went from only-turning to only-going-straight, so I am only-guessing, <grins> but it sort of sounded like a loose wire.    --Before, I was thinking that if it only turned one direction, that one motor was not coming on, but now that you have a different result, what exactly did you do to change it?

The problem I have now is that the Sharp IR sensor does not recognize any movement or object in front of it. The motors are all sorted out.

You simply need to do some checking of your senor and the good news is that there are only a few things that can be wrong.

First off, triple check your pins. I am figuring you have a pigtail that came with or matches your sensor. The first thing to do is goto any webshop that sells that sensor and find the PDF data sheet that comes with it. Find the pinout diagram and confirm that the colors of the pigtail are indeed what you think they are. Next, consult /node/75 and triple check those wires are going to the correct pins on the picaxe board. Also note what ADC input you are using. I think we have decided you are using adc 0 (closest to the headphone jack) but again, double check with /node/75.

You may also want to pull the other adc pins down to ground using a little jumper block over the pins. This may or may not be an issue. You can skip this for now --if everything else does not work, you can come back to this.

Plug everything in and check with a digital camera. To the naked eye you should/may see a dim red light in one of the "lenses" on the sensor. Using a camera, you should see a bright purple light. Confirm this.

Run this:


readadc 0,b1


goto main

You should now be able to wave your hand in front of the sensor and see the value of b1 change as your hand moves closer to the sensor and further away. If not, we have one more check...

Grab your multimeter and set it for DC and whatever is closest to 5v. The black lead goes to any ground you can find on the board or battery, the red lead goes to the signal pin on your sensor. You should see the voltage change when you do the hand test. --The multi-tester test must be done when the sensor is powered with 5v (like it would be during normal use).

If we fail the debug test and/or we fail the multimeter test, your sensor is fried or you need to do another round of checking wires and pinouts. If it works, we can move on to why your code is not dealing with it.

--Just a thought, when was the last time you changed your batteries?

Alright, I bought the sensor from here: http://www.pololu.com/catalog/product/1137

I dont see a PDF file other than a data sheet, is that what I want? Second, I used this picture to help me know where to plug things in. http://img854.imageshack.us/i/headpins.jpg/

 Next, I checked the node/75 and all of my wires are connected right. (I assume from my mediocre knowledge) I already have a jumper block over the other pins, so that isnt a problem. When I look at it plugged in, the light does show, so I know it cant be fried. Still doing the readadc debug I do not get any results moving my hand in front of the sensor. I will do the multimeter test in just a bit, I just have to find it. I am using 3 AA batteries in a 3 battery clip, all 1.5v. The batteries are brand new and from the package.

Hope this is enough to find any other problems.

Do this:


readadc whatever_pin_you_are_using,b1


goto main


Run that and see if you are getting numbers from your sharp. --I assume you have gotten all the highs and lows worked out so your motors go the way you want them?

I am not getting any change when I use all of the pin numbers I can tell. It worked when I first bought it. Also, the IR light is on when I look into it, but only one of them? It was like this as soon as I turned it on.

One is an IR led, the other is the sensor.

Oh! Thank you I was worried.

This should work


Symbol dangerlevel = 70 ' how far away should thing be, before we react?
symbol turn = 300 ' this sets how much should be turned
symbol servo_turn = 700 ' This sets for how long time we should wait for the servo to turn (depending on it´s speed) before we measure distance

main: ' the main loop
readadc 0, b1 ' read how much distance ahead
if b1 < dangerlevel then
gosub nodanger ' if nothing ahead, drive forward
gosub whichway ' if obstacle ahead then decide which way is better
end if
goto main ' this ends the loop, the rest are only sub-routines

nodanger:' this should be your combination to make the robot drive forward, these you most likely need to adjust to fit the way you have wired your robots motors
low 4 : high 5 : high 6: low 7

gosub totalhalt ' first stop!

'Look one way:
gosub lturn ' look to one side
pause servo_turn ' wait for the servo to be finished turning
readadc 0, b1
gosub totalhalt

'Look the other way:
gosub rturn ' look to another side
pause servo_turn ' wait for the servo to be finished turning
readadc 0, b2
gosub totalhalt

' Decide which is the better way:
if b1<b2 then
gosub body_lturn
gosub body_rturn
end if

low 5 : high 4 : high 6 : low 7 ' this should be your combination that turns the robot one way
pause turn : gosub totalhalt

low 4 : high 5 : high 7 : low  6 ' this should be your combination that turns the robot the other way
pause turn : gosub totalhalt

servo 0, 100 ' look to one side

servo 0, 200 ' look to the other side

low 4 : low 5 : low 6 : low 7 ' low on all 4 halts the robot!
Servo 0,150 ' face forward
wait 1 ' freeze all for one second

Well now it goes straight all the time, but it never turns , doesnt seem to notice any obstacles either.