Dear all,
More then a week ago I posted a similar thread Although, I received some responses (Thank you very much to the contributors) I still couldn't work it out. Since then I have spent hours and hours to translate code from C to Basic, have read all possible information about the GP2D02 on the net but can not have it to work. As explained in my previous thread I realize there are easier sensors to interface, however I am situated on a very remote tiny island and we have no access to shops and can't receive any mail for the next six months. The only I have plenty off is time!
Could somebody please take a look at my code? The code is an extraction of what I found on the LetsMakeRobots.com website (But they are using a GP2D12 sensor which is much easier to interface).
The pulseside to Vin seems to work but on the Vout pin I constantly have an output value of 255.
A useful website explaning the GP2D02 can be found here.
Here is the code:
I want to apologize beforehand for kind of repeating this question but I'm desperate to have it working. Once finished I will write an article about this project and will post it online with many pictures. I am sure I am not the only one struggling with this.
To the one that can help me I will mail out a bottle of wine!
Many thanks in advance!
Kind regards,
Luc
More then a week ago I posted a similar thread Although, I received some responses (Thank you very much to the contributors) I still couldn't work it out. Since then I have spent hours and hours to translate code from C to Basic, have read all possible information about the GP2D02 on the net but can not have it to work. As explained in my previous thread I realize there are easier sensors to interface, however I am situated on a very remote tiny island and we have no access to shops and can't receive any mail for the next six months. The only I have plenty off is time!
Could somebody please take a look at my code? The code is an extraction of what I found on the LetsMakeRobots.com website (But they are using a GP2D12 sensor which is much easier to interface).
The pulseside to Vin seems to work but on the Vout pin I constantly have an output value of 255.
A useful website explaning the GP2D02 can be found here.
Here is the code:
Code:
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
gosub sensorcontrol
readadc 0, b1 ' read how much distance ahead
debug
if b1 < dangerlevel then
gosub nodanger ' if nothing ahead, drive forward
else
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
sensorcontrol:
low 3
pauseus 7000 'Pause for 70 ms (7000 us)
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
high 3
pauseus 20 'Pause for 0.2 ms (20 us)
low 3
pauseus 20
return
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
high 5 : high 6 : low 4 : low 7
return
whichway:
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
else
gosub body_rturn
end if
return
body_lturn:
high 6 : low 5 : low 7 : high 4 ' this should be your combination that turns the robot one way
pause turn : gosub totalhalt
return
body_rturn:
high 5 : low 6 : low 4 : high 7 ' this should be your combination that turns the robot the other way
pause turn : gosub totalhalt
return
rturn:
servo 0, 100 ' look to one side
return
lturn:
servo 0, 200 ' look to the other side
return
totalhalt:
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
return
To the one that can help me I will mail out a bottle of wine!
Many thanks in advance!
Kind regards,
Luc