Controling a servo with IR
I hope someone can help with this?
·
I have a board of education board with one (the right side) IR detector attached and one servo connected to socket twelve.
·
What I need to have happen is when the IR detector senses an object within 2 feet I need the servo to turn right about ten degrees from center and then pause for 10 seconds the rotate left 10 degrees from center again. Then after two seconds I need to have the servo go back to center and stay there until the IR detector senses an object again and then it repeats the above.
·
I am completely new at trying to write programs for the board so I would deeply appreciate any help.
·
Sincerely,
·
Steven Bradford
·
I have a board of education board with one (the right side) IR detector attached and one servo connected to socket twelve.
·
What I need to have happen is when the IR detector senses an object within 2 feet I need the servo to turn right about ten degrees from center and then pause for 10 seconds the rotate left 10 degrees from center again. Then after two seconds I need to have the servo go back to center and stay there until the IR detector senses an object again and then it repeats the above.
·
I am completely new at trying to write programs for the board so I would deeply appreciate any help.
·
Sincerely,
·
Steven Bradford
Comments
·
I'm not sure what kind of IR detector you are using.· In the meantime, I would also recommend experimenting with the pushbutton examples in Chapter 3.· The pushbuttons can be used to iron out the servo behavior.· The IR object detection code can be ironed out separately.· Then, you can replace the pushbutton circuit and code with the IR circuit and code.·
·
Also, take a quick look at Chapter 2 while you're in the book; it'll help complete the picture.·
·
The Robotics with the Boe-Bot text is on the same downloads page as What's a Microcontroller.· There is an infrared object detection program in Chapter 7 that also exhibits behaviors similar to your project.· The Boe-Bot detects an object with infrared, then turns a few degrees, and keeps on moving forward, until it detects the object again.· The Boe-Bot does its navigation with a pair of continuous rotation servos, which are very similar to the standard servo you are using.· It would be possible to remove the code from the program so that it only works with a single servo and IR detector.·
·
Still, I would doing the What's a Microcontroller chapters first.··Aside from the fact that it'll have most of the information you need, diving straight into Robotics with the Boe-Bot, chapter 7, will involve more backtracking to figure out what's going on.
Thanks, I have both the boe-bot and micro kit from an educators class. I am using the IR detectors that came with the kits. I can get the servos to move they way I want I can not figure out how to write in the program how to get the sensor to triger the sequence. In the books it is not clear what is doing what to cut and paste in the programs. If I wanted ServoTest.bs2 triggered by the infared sensor how would I do it.
Post Edited (Andy Lindsay) : 11/28/2004 10:29:30 PM GMT
Thanks again I am getting close now Here is what I came up with. But whenever I enter avalue above 250 in the pulseCount the servo freezes at that position. Is there a way to get it to hold a position for more than 250?
Thanks,
Steven Bradford
' {$STAMP BS2}······························ ' Stamp directive.
' {$PBASIC 2.5}····························· ' PBASIC directive.
DEBUG "Program Running!"
'
[noparse][[/noparse] Variables ]
irDetectLeft VAR Bit
pulseCount VAR Byte
'
[noparse][[/noparse] Initialization ]
FREQOUT 4, 2000, 3000······················· ' Signal program start/reset.
'
[noparse][[/noparse] Main Routine ]
DO
· FREQOUT 2, 1, 38500······················ ' Store IR detection values in
· irDetectLeft = IN0······················· ' bit variables.
· IF (irDetectLeft = 0) THEN··············· ' Left IR pair detects
··· FOR pulseCount = 1 TO 20··············· ' Differnt position for about 2s.
····· PULSOUT 13, 686
····· PAUSE 20
··· NEXT
··· FOR pulseCount = 1 TO 259
·· PULSOUT 13,600
·· PAUSE 20
··· NEXT
··· FOR pulseCount = 1 TO 10
·· PULSOUT 13,530
·· PAUSE 20
· NEXT
· ELSE
··· PULSOUT 13, 600························ ' Apply a center pulse
··· PAUSE 18
· ENDIF···································· ' and check again
LOOP
If you change the variable declaration in the program to make pulseCount a Word instead of a Byte, then you can deliver up to 65534 pulses.
Thanks so much I never expected such quick answers either. You have been a great help. Maybe Kris there mentioned our group from the sculpture program in New Paltz NY? Anyway this is one of the first uses of the stamps in peoples work. Pretty simple probably in your terms but we have been looking for ways to make work more interactive. In this case just to turn a cd player on when someone gets on a platform and then it had to play a track once reset and the go back to replay the same track from the begining when it was triggerd again.
Thanks again!
Steven Bradford