www.tranzistor.sk www.tranzistor.cz

Hľadať

Počítače Roboty 3
Sobota, 15 Október 2011 21:35

Roboty 3

Napísal  Peter Kočalka
Ohodnoť tento článok
(3 hodnotení)

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 Robotický tank + iZebot 109.00 € (vrátane DPH 20 %) do košíka

Posledná zmena Sobota, 15 Október 2011 21:56

Related items (by tag)

Reklamný panel

Akcia

sale closed

Telefonické objednávky

PO - NE 8:00 - 18:00

0903 404425

skype: kocalka


Ak je hodnota objednávky

nižšia ako 150EUR, cena

poštovného a balného je

3.60EUR

Nad 150EUR je poštovné a

balné zdarma