PROGRAMMING

   Eventually, this will probably be the biggest part of the Ebot project.  Right now, it just has  sample code which will allow a Basic Stamp 2 to drive Ebot.  It has provisions for two bumper inputs.   You can get a schematic to wire up your ebot to be compatible with this code here.

' -----[ Title ]-----------------------------------------------------------
'
' File...... EB.BS2 (for the Basic Stamp 2 model BS2-IC)
' Purpose... Bump and Go software for the Ebot
' Author.... Jim Ubersetzig
' Date...... 9 Apr 01

' -----[ Revision History ]------------------------------------------------
'
' 9 Apr 01 original software



' -----[ General Description ]---------------------------------------------
'
' The Ebot rolls forward until it hits something, 
' then it backs up turning to avoid the obstacle. 
' After a while it resumes rolling forward again.


' -----[ Electrical Pin Connections ]--------------------------------------
'
Right_Wheel CON 5 ' Pin marked IO5 on the Basic Stamp 2.
Left_Wheel CON 7 ' Wire to white wire of modified servos.

Right_Feeler VAR IN9 ' Pin marked IO9
Left_Feeler VAR IN11 ' The feelers test for obstacles ahead.


' -----[ Variables and Constants ]-----------------------------------------
'
Timer VAR word ' Keeps track of time.
Right_Speed VAR word ' Speed of the right wheel.
Left_Speed VAR word ' Speed of the left wheel.

OK CON 1 ' Feeler has not bumped anything.
SHORT_TIME CON 100 ' About 2 seconds of backing up.


' -----[ Main Code ]-------------------------------------------------------
'

Reset: Timer = 65535 ' Maximum = 21 minutes.
Right_Speed = 750 + 50 ' 750 stops a modified servo.
Left_Speed = 750 - 50 ' Values make robot roll forward.

Continue:
if Right_Feeler = OK then No_Right_Hit

Timer = SHORT_TIME
Right_Speed = 750 - 50 ' Right backs up fast.
Left_Speed = 750 + 30 ' Left backs up slowly.

No_Right_Hit:

if Left_Feeler = OK then No_Left_Hit
Timer = SHORT_TIME
Right_Speed = 750 - 30 ' Right backs up slowly.
Left_Speed = 750 + 50 ' Left backs up fast.

No_Left_Hit:

pulsout Right_Wheel, Right_Speed ' Keep the wheels turning.
pulsout Left_Wheel, Left_Speed
pause 20 ' Repeat every 0.02 second.

Timer = Timer - 1 ' Keep track of the time.
if Timer <> 0 then Continue
goto Reset ' Change to forward motion.


' -----[ The End ]-------------------------------------------------------