Building robots and automation with embedded tools and projects.
Pod Casts
News
Reviews
How To
Projects
Resources
Contact

Home / Projects / Land
SIPOC
Jeff Clayton        24 Oct 2000

Contact: robotics80@hotmail.comURL: http://www.webspawner.com/users/robotics80
Skill Level: beginers

Project Outline
sipoc is my first "working" robot. It is made from spare parts I had. the robot is built on a zip disk jewel case. the microcontroller is the OOPIC. i used a simple IR proximity detector circuit that gives the OOPIC a right and left controlled modulated IR sensor. Photoresistors give the robot its phototropic behaviors for finding the brightest spot in a room. the bumpers are made from legos and pivots at the center of the assembly. this bumper set up works great until the robot hits a chair leg dead on center, then its up to the IR to see it and react. the drive motors are modified servos that rotate continuously. this is an extremely simple robot that was my platform for code trials that eventualy led to the creation of my second robot scorch.


Latest Journal Entry
C++ code for SIPOC    15 Dec 2000
since i have seen no C++ code for the oopic, i thought i would write one and post it.
// C++ code for SIPOC    
// BUMPER, IR object avoidance, and PHOTOTROPIC ability
// 2 SERVOS for drive
oServo Right = new oServo;
oServo Left = new oServo;
odio1 eyeRight = new odio1;
odio1 eyeLeft = new odio1;
Odio1 IRDetect = new odio1;
Odio1 bumperright = new odio1;
Odio1 bumperleft = new odio1;
oA2D looklightright = new oA2D;
oA2D looklightleft = new oA2D;
obyte n = new obyte;
sub void Main(void)
{
setup;
n = 1;
do    \{
forward;
checkbumperleft;
checkbumperright;
lookright;
lookleft;
lightright;
lightleft;
} while (n != 0); 
}
sub void stop(void)
{
right = 21;
left = 21;
}
sub void forward(void)
{ 
right = 0;
left = 0;
}
sub void backward(void)
{
right = 64;
left = 64;
}
void softRight(void)
{
right = 28;
left = 0;
}
sub void softLeft(void)
{
right = 0;
left = 28;
}
sub void hardright(void)
{
right = 64;
left = 0;
}
sub void hardLeft(void)
{
right = 0;
left = 64;
}
void checkbumperleft(void)
{
if (bumperleft == cvunpressed)
{
backward;
oopic.delay = 50;
hardright;
oopic.delay = 75;
}
}
sub void checkbumperright(void)
{
if (bumperright == cvunpressed)
{
backward;
oopic.delay = 50;
hardleft;
oopic.delay = 75;
}
}
sub void lookright(void)
{
eyeRight = 1;\tab 
if (IRDetect == 0)
{
hardLeft;
oopic.delay = 50;
}
else
{
forward; 
}
eyeRight = 0;\tab 
}
 sub void lookleft(void)
{
eyeleft = 1;\tab 
if (IRDetect == 0)
{
hardright;
oopic.delay = 50;
}
else
{
forward; 

}
eyeleft = 0;\tab 
}
sub void lightright(void)
{
while (looklightright.value + 50 < looklightleft.value)
softleft;
oopic.delay = 15;
}
}
void lightleft(void)
{
while (looklightleft + 50 < looklightright)
softright;
oopic.delay = 15;
}
}
sub void setup(void)
{
Right.IOLine = 24;
Left.IOLine = 31;
left.invertOut = cvtrue;
Right.center = 28;
Left.center = 28;
Right.operate = cvTrue;
Left.operate = cvTrue;
eyeRight.IOLine = 13;
eyeRight.Direction = cvOutput;
eyeLeft.IOLine = 12;
eyeLeft.Direction = cvOutput;
IRDetect.IOLine = 11;
IRDetect.Direction = cvInput;
Bumperright.IOLine = 14;
Bumperleft.IOLine = 15;
bumperright.direction = cvInput;
bumperleft.direction = cvInput;
looklightright.IOLine = 1;
looklightleft.IOLine = 2;
looklightright.operate = cvTrue;
looklightleft.Operate = cvTrue;
oopic.ExtVRef = 0;
}}


Other Journal Entries
side view
24 Oct 2000

RELATED
Carpet Moth
Jim Garvin
PC Rover
Jim Garvin
PanoBot
Philippe Hurbain
Snuf
Jaap Havinga
Bi-Ped Project
Jaap Havinga.
Bug Bot
Dennis Clark
My Robot
Matt Minnis
Hide and Seek Lego
Jim Garvin
SIPOC
Jeff Clayton
Scorch
Jeff Clayton
Body Logger
Chris Box
R.U.B.E.N.
Rob Roy