Po dlhšom čase som doprogramoval robota. Teraz sa už dokáže sám pohybovať pozdĺž nakreslenej čiary. Tu je výsledok a je zbytočné to dlho popisovať, pozrite si radšej video. Robot má na spodnej strane 3 infračervené senzory vedľa seba. Ak sa prostredný senzor nachádza nad bielou časťou plochy robot sa začne otáčať tak aby sa vrátil nad čiernu plochu. V prípade ak je prostredný senzor nad čiernou časťou robot postupuje smerom dopredu.
Program č.3
' {$STAMP BS2p}
' {$PBASIC 2.5}
' {$PORT COM3}
CH VAR Nib ' Select channel of analog to digital converter
ADC VAR Word ' save data from analog to digital converter
ADC0 VAR Word ' For save data left sensor
ADC1 VAR Word ' For save data middle sensor
ADC2 VAR Word ' For save data right sensor
left_right VAR Byte
Init: DIRD = %1111 ' P12 P13 P14 and P15 ==> output
Begin: GOSUB Wait_KEY ' Check key before start program
FREQOUT 11,500,1000 ' Sound For Program Begin
Main:
GOSUB RD_ALL ' Read data from sensor
DEBUG DEC ADC0, DEC ADC1, DEC ADC2 , CR
IF (ADC1 < 500) THEN
GOSUB Forward
' If Midle sensor found Black ==> forward
GOTO Main
ENDIF
IF ((ADC2 > 500) AND (left_right = 1)) THEN
GOTO Left ' If left sensor and mid sensor found BLACK
' goto Check Left Subroutine
ENDIF
IF ((ADC1 > 500) AND (left_right = 0)) THEN
GOSUB Right ' If mid sensor and right sensor found BLACK
' goto Check Right Subroutine
ENDIF
GOTO Main ' Check again
Left: GOSUB S_Left : PAUSE 60 ' Spin Left a little time
GOSUB Motor_Off : PAUSE 50 ' Stop motor before read data
GOSUB RD_ALL ' read data second time
GOTO Main
Right: GOSUB S_Right :PAUSE 60 ' Spin right a little time
GOSUB Motor_Off : PAUSE 50 ' Stop motor before read data
GOSUB RD_ALL ' Read data second time
GOTO Main
'+++++ Go forward over cross ++++++++++
Cross: GOSUB Forward
GOSUB Beep
PAUSE 200
RETURN
'+++++ Turn robot Right 90 Degree ++++++++++
Right90:GOSUB Forward
PAUSE 200
GOSUB S_Right : PAUSE 650
GOSUB Forward : PAUSE 200
RETURN
'+++++ Turn robot left 90 Degree ++++++++++
Left90: GOSUB Forward : PAUSE 200
GOSUB S_Left : PAUSE 650
GOSUB Forward : PAUSE 200
RETURN
'+++++ Save sensor 3 channel procedure ++++++++++
RD_ALL: CH = 1 : GOSUB RD_ADC : ADC0 = ADC
' Select ANALOG1 , Read and store to ADC0
CH = 3 : GOSUB RD_ADC : ADC1 = ADC
' Select ANALOG3 , Read and store to ADC1
CH = 5 : GOSUB RD_ADC : ADC2 = ADC
' Select ANALOG5 , Read and store to ADC2
IF (ADC0 < 500) THEN left_right = 1 : ENDIF
IF (ADC2 < 500) THEN left_right = 0 : ENDIF
RETURN
'+++++ Analog to Digital Converter Procedure ++++++++++
RD_ADC: LOW 10: PAUSE 2: HIGH 10 ' Send Acknowledge
SEROUT 10,240,[CH] ' Select channel
SERIN 10,240,[ADC.BYTE0,ADC.BYTE1] ' Read ADC
RETURN
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
Beep: FREQOUT 11,300,1000 ' Sound subroutine
RETURN
'+++++ Wait until keypress to start +++++++++++++++++++
Wait_KEY: DO : LOOP UNTIL (IN1 = 0) ' Check key from P1
RETURN
'+++++ Movement Procedure +++++++++++++++++++++++++++++
Forward: OUTD = %1010 : RETURN ' Motor A --> and Motor B --> Go Forward
Backward: OUTD = %0101 : RETURN ' Motor A <-- and Motor B <-- Go Backward
S_Left: OUTD = %0110 : RETURN ' Robot Spin Left
S_Right: OUTD = %1001 : RETURN ' Robot Spin Right
Motor_OFF: OUTD = %0000 : RETURN ' Stop All Motor
Záver:
V ďalších programoch vám ukážem ako sa dá robot pripojiť na ďalšie senzory a prístroje ako napríklad:
- senzor teploty
- senzor tlaku
- akcelerometer
- hodiny reálneho času
- GPS
- kompas
- fototranzistor
- ultrazvukový merač vzdialenosti
| Robotický tank + iZebot | ![]() |
109.00 € (vrátane DPH 20 %) | do košíka |







Roboty 3




