Hej!
Ett liten "bra att ha" programsnutt till BS2an, skriven av Jakob Ojanen, student på en robotic workshop på Konstfack 2005.
De vanliga ir-detektorerna och ir dioderna används, ihop med Parallax (Futaba, omodifierad) standardservo.
Servon följer objektet som rör sig framför de fyra mottagarna.
Han vred på en lätt skulptur som tittade hela tiden i riktning mot besökaren.
Går att utöka till så många zoner som det finns ingångar lediga.
Lämpligt till kameraföljare, den där braiga spegeln tills svärmor, som alltid är rätt riktad, styrd gemskjutare osv...
' Robotics! v1.5, Program Listing 5.1: IR Pairs Display.
' {$Stamp bs2} ' Stamp Directive.
'----- Declarations --------------
ir_01 VAR Bit ' Two bit variables for saving IR
ir_02 VAR Bit
ir_03 VAR Bit
ir_04 VAR Bit ' detector output values.
counter VAR Word ' servostyrning
'all_ir VAR BYTE
'----- Initialization ------------
OUTPUT 1 ' Set all I/O lines sending freqout
OUTPUT 4
OUTPUT 7 ' signals to function as outputs
OUTPUT 9
'----- Main Routine --------------
main:
' upptäcker objekt på VÄNSTER sida.
FREQOUT 1, 1, 38500 ' Send freqout signal - left IRLED.
ir_01 = IN0 ' Store IR detector output in RAM.
' upptäcker objekt på VÄNSTER mitt.
FREQOUT 4, 1, 38500 ' Repeat for the right IR pair.
ir_02 = IN3
' upptäcker objekt på HÖGER mitt.
FREQOUT 7, 1, 38500 ' Send freqout signal - left IRLED.
ir_03 = IN6 ' Store IR detector output in RAM.
' upptäcker objekt på HÖGER sida.
FREQOUT 9, 1, 38500 ' Repeat for the right IR pair.
ir_04 = IN8
'all_ir.BIT0 = ir_01
'all_ir.BIT1 = ir_02
'all_ir.BIT2 = ir_03
'all_ir.BIT3 = ir04
'BRANCH all_ir,[mitten,h1,h3,
DEBUG HOME, "ir_01= ", BIN1 ir_01
PAUSE 5
DEBUG " ir_02= ", BIN1 ir_02
PAUSE 5
DEBUG " ir_03= ", BIN1 ir_03
PAUSE 5
DEBUG " ir_04= ", BIN1 ir_04
PAUSE 5
' högersvängar
IF ir_01 = 1 AND ir_02 = 0 AND ir_03 = 0 AND ir_04 = 0 THEN h1
IF ir_01 = 1 AND ir_02 = 1 AND ir_03 = 0 AND ir_04 = 0 THEN h2
IF ir_01 = 0 AND ir_02 = 1 AND ir_03 = 0 AND ir_04 = 0 THEN h3
' mittenläge
IF ir_01 = 0 AND ir_02 = 1 AND ir_03 = 1 AND ir_04 = 0 THEN mitten
IF ir_01 = 1 AND ir_02 = 1 AND ir_03 = 1 AND ir_04 = 1 THEN mitten
IF ir_01 = 0 AND ir_02 = 0 AND ir_03 = 0 AND ir_04 = 0 THEN mitten
IF ir_01 = 1 AND ir_02 = 0 AND ir_03 = 0 AND ir_04 = 1 THEN mitten
' vänstersvängar
IF ir_01 = 0 AND ir_02 = 0 AND ir_03 = 1 AND ir_04 = 0 THEN v3
IF ir_01 = 0 AND ir_02 = 0 AND ir_03 = 1 AND ir_04 = 1 THEN v2
IF ir_01 = 0 AND ir_02 = 0 AND ir_03 = 0 AND ir_04 = 1 THEN v1
GOTO main
h1:
FOR counter = 1 TO 150
PULSOUT 14, 1000
PAUSE 3
NEXT
GOTO main
h2:
FOR counter = 1 TO 150
PULSOUT 14, 925
PAUSE 3
NEXT
GOTO main
h3:
FOR counter = 1 TO 150
PULSOUT 14, 875
PAUSE 3
NEXT
GOTO main
v1:
FOR counter = 1 TO 150
PULSOUT 14, 500
PAUSE 3
NEXT
GOTO main
v2:
FOR counter = 1 TO 150
PULSOUT 14, 675
PAUSE 3
NEXT
GOTO main
v3:
FOR counter = 1 TO 150
PULSOUT 14, 725
PAUSE 3
NEXT
GOTO main
mitten:
FOR counter = 1 TO 150
PULSOUT 14, 800
PAUSE 3
NEXT
GOTO main
BS2 IR förföljare
- Smoothmachines
- Inlägg: 447
- Blev medlem: 5 april 2007, 16:03:57
- Ort: Stockholm
- Kontakt: