Göra en Robot Ant (8 / 9 steg)
Steg 8: Programmering Robot myran
I autonoma pickup läge roterar roboten till höger letar efter ett objekt. Om den hittar något kommer det att sluta efter rotera 360 grader. När ett objekt har identifierats stannar och korrigerar för över styrning och med det uppmätta avståndet för identifierade objektet flyttas fram en specifik sträcka. Sedan stänger gripdon och hissar.
Fjärrkontroll
I fjärrkontrollen läge väntar roboten på en signal för en rörelse som framåt eller ett kommando till autonoma läge. En standard universal TV remote kan konfigureras för att mata Sony TV-kod som Picaxe kan avkoda. Infrarött från fjärrkontrollen tas emot av Panasonic mottagare modul.
Här är programmeringskod för robot myran:
"robot ant, Picaxe 20 x-2
Låt dirsc = % 00000000
setfreq m8
Pausa 2000
"loop22:" test av IR avstånd sensor
"readadc 7, b4
"debug b4
"gå till loop22
startreset: "återställa för start
serout c.0,t2400 ($80, $01, $01,2,30)'set4 för servo #, hastighet set5 från 0to127
serout c.0,t2400,($80,$01,$04,2,26,30) ' kroppen ner 26
Pausa 200
serout c.0,t2400,($80,$01,$01,1,30) ' hastighet sätta sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,1,26,127) ' Stäng gripare 26
Pausa 200
serout c.0,t2400,($80,$01,$01,0,20) ' hastighet sätta sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,0,26,127) ' huvud center
Pausa 1000
loopinfra: "fjärrstyrning av motioner eller aktivera autonom sekvenser
låg c.1 ' blue eye
hög c.2 ' blue eye
IRIN c.5, b6
om b6 = 0 då ÄRV1 "remote Knapp1 = 0
om b6 = 1 då meddelandeprofil "b2
om b6 = 2 sedan ÄRV2 "b3
om b6 = 3 sedan vänster "b4
om b6 = 4 då stop1 "b5
om b6 = 5 sedan höger "b6
om b6 = 6 sedan act3 ' b7
om b6 = 7 sedan rev1 "b8
om b6 = 8 då biteme "attack
"om b6 = 59 sedan biteme" attack
om b6 = 11 sedan putdwn "Ange sätta ner
om b6 = 21 sedan startreset "Återställ servon
"debug b6
gå till loopinfra
ÄRV1: "robot ant moons världen
GOSUB forw2
Pausa 2500
GOSUB bodyup2
GOSUB left2
GOSUB headleft2
Pausa 300
GOSUB forw2
Pausa 1200
GOSUB stop2
GOSUB forw2
Pausa 500
GOSUB stop2
GOSUB headright2
hög c.1 "röda ögon l
låg c.2 "röda ögon r
Pausa 1000
GOSUB right2
Pausa 2500
GOSUB headcenter2
GOSUB bodydwn2
GOSUB rev2
Pausa 2500
GOSUB stop2
GOSUB leftfast
Pausa 500
GOSUB stop2
GOSUB rightfast
Pausa 500
GOSUB leftfast
Pausa 500
GOSUB stop2
GOSUB rightfast
Pausa 500
GOSUB stop2
Pausa 2200
GOSUB forw2
GOSUB bodyup2
Pausa 3500
GOSUB opengrip2
Pausa 500
GOSUB stop2
gå till loopinfra
biteme:
GOSUB forw2
B8 = 1
för b8 = 1 till 175
"hitta hinder
hög c.2 "röda ögon l
låg c.1 "röda ögon r
readadc 7, b4
om b4 > 60 och b4 < 135 då next3
Pausa 30
Nästa b8
gå till loopinfra
next3:
GOSUB stop2
GOSUB bodydwn2
GOSUB opengrip2
"pausa 100
GOSUB bodyup2
GOSUB forw2
Pausa 300
GOSUB closegrip2
Pausa 900
GOSUB stop2
GOSUB rev2
GOSUB bodydwn2
Pausa 6000
GOSUB stop2
gå till loopinfra
ÄRV2: "Pickup, putdown
"framåt
serout c.0,t2400,(128,0,1,100) ' fram rätt 20min till 127
serout c.0,t2400,(128,0,2,100) ' framåt vänster 20min
Pausa 4500
GOSUB stop2
Pausa 100
"att hitta
B8 = 1
för b8 = 1 till 75
"hitta block och pickup
hög c.2
låga c.1
GOSUB right2
readadc 7, b4
om b4 > 61 och b4 < 164 då detect0 ' 34-75
Pausa 50
Nästa b8
GOSUB stop2
gå till loopinfra
detect0: "stoppa och korrigera
GOSUB stop2
"sväng vänster långsamt
serout c.0,t2400,(128,0,1,60) ' fram rätt 20min till 127
serout c.0,t2400,(128,0,3,60) ' rev kvar 20min
Pausa 240
GOSUB stop2
Pausa 100
låg c.2 "röda ögon
hög c.1 "röda ögon
"framåt, pickup
GOSUB opengrip2
Pausa 1000
GOSUB forw2
om b4 < 50 sedan pa1
om b4 < 60 då pa2
om b4 < 70 då pa3
om b4 < 80 då pa4
om b4 < 90 då pa5
om b4 < 104 då pa6
PA1:
Pausa 9000
gå till stopat
PA2:
Pausa 5920
gå till stopat
PA3:
Pausa 3800
gå till stopat
PA4:
Pausa 2800
gå till stopat
PA5:
Pausa 2100
gå till stopat
råtta:
Pausa 980
gå till stopat
stopat:
GOSUB stop2
Pausa 200
"closegrip
serout c.0,t2400,($80,$01,$01,1,30) ' speed-set sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,1,26,127) ' Stäng gripare 26
Pausa 2000
GOSUB bodyup2
"putdown
GOSUB leftfast
Pausa 1400
GOSUB stop2
GOSUB forw2
Pausa 1800
GOSUB stop2
GOSUB bodydwn2
GOSUB opengrip2
Pausa 500
"glo
GOSUB rev2
Pausa 2000
GOSUB stop2
GOSUB bodyup2
GOSUB headleft2
GOSUB headright2
GOSUB headcenter2
låg c.1 ' blue eye
hög c.2 ' blue eye
gå till loopinfra
act3: "öppna gripare och framåt
"framåt, pickup
GOSUB opengrip2
Pausa 400
GOSUB forw2
Pausa 280
GOSUB stop2
gå till loopinfra
act4: "Stäng gripare och lift
GOSUB closegrip2
Pausa 600
GOSUB bodyup2
gå till loopinfra
"" *** gosubs
leftslow:
"sväng vänster långsamt
serout c.0,t2400,(128,0,1,60) ' fram rätt 20min till 127
serout c.0,t2400,(128,0,3,60) ' rev kvar 20min
Pausa 220
GOSUB stop2
returnera
stop2:
serout c.0,t2400,(128,0,0,0) ' hård stop rätt
serout c.0,t2400,(128,0,6,0) ' hård stop vänster
returnera
forw2:
serout c.0,t2400,(128,0,1,100) ' fram rätt 20min till 127
serout c.0,t2400,(128,0,2,100) ' framåt vänster 20min
returnera
left2:
serout c.0,t2400,(128,0,1,100) ' fram rätt 20min
serout c.0,t2400,(128,0,3,100) ' rev kvar 20min
returnera
right2:
serout c.0,t2400,(128,0,2,100) ' framåt vänster 20min
serout c.0,t2400,(128,0,0,100) ' rev rätt 20min
returnera
REV2:
"stoppa
serout c.0,t2400,(128,0,0,0) ' hård stop rätt
serout c.0,t2400,(128,0,6,0) ' hård stop vänster
Pausa 50
"omvänd
serout c.0,t2400,(128,0,0,100) ' rev rätt 20min
serout c.0,t2400,(128,0,3,100) ' rev kvar 20min
returnera
opengrip2:
serout c.0,t2400 ($80, $01, $01,1,30)'set4 för servo #, hastighet set5 från 0to127
serout c.0,t2400,($80,$01,$04,1,13,127) ' öppna gripdon, 13
Pausa 1000
returnera
closegrip2:
serout c.0,t2400,($80,$01,$01,1,30) ' hastighet sätta sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,1,26,127) ' Stäng gripare 26
Pausa 2000
returnera
headleft2:
serout c.0,t2400 ($80, $01, $01,0,20)'set4 för servo #, hastighet set5 från 0to127
serout c.0,t2400,($80,$01,$04,0,15,127) ' huvudet kvar 15
Pausa 800
returnera
headright2:
' serout c.0,t2400,($80,$01,$01,0,20) ' hastighet sätta sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,0,32,127) ' huvud rätt 30
Pausa 1600
returnera
headcenter2:
serout c.0,t2400,($80,$01,$01,0,20) ' hastighet sätta sista # från 0 till 127
serout c.0,t2400,($80,$01,$04,0,26,127) ' huvud center
Pausa 500
returnera
bodyup2:
serout c.0,t2400 ($80, $01, $01,2,30)'set4 för servo #, hastighet set5 från 0to127
serout c.0,t2400,($80,$01,$04,2,13,30) ' kroppen upp, 13
Pausa 220
returnera
bodydwn2:
serout c.0,t2400 ($80, $01, $01,2,30)'set4 för servo #, hastighet set5 från 0to127
serout c.0,t2400,($80,$01,$04,2,26,30) ' kroppen ner 26
Pausa 200
returnera
leftfast:
serout c.0,t2400,(128,0,1,127) ' fram rätt 20min
serout c.0,t2400,(128,0,3,127) ' rev kvar 20min
returnera
rightfast:
serout c.0,t2400,(128,0,2,127) ' framåt vänster 20min
serout c.0,t2400,(128,0,0,127) ' rev rätt 20min
returnera