Stap 28: Bewegen van de ogen met een Basic Stamp
Nu laten we eens kijken naar een video van maken de ogen met een Basic Stamp 2 bewegen
Hier is de code dor de routine.
' {$STAMP BS2}
' {$PBASIC 2.5}
' test motor verkeer en selectievakje vr van voor de juiste onbevestigd en verplaats ogen rt en lt
Leiden tot VAR Word ' Word variabele voor resultaat.
LAGE 10' set pin 10 lage oog rechts
HOGE 8' set pin 8 hoge ogen links ga motor oog links
LAGE 8' ser pin 8 lage oog links om te stoppen met motor oog links
pwmduty VAR Byte
pwmout PIN 6 ' LED verbonden naar P6
pwmduty = 0 ' taakcyclus ingesteld op 0
Hoofdpodium:
GOSUB checkeyes
ALS resultaat = 1 OR resultaat = 0 THEN GOTO BUG ' als vr geen enkel signaal einde programma heeft
ALS resultaat < = 1100 vervolgens GOTO EYELEFT
ALS resultaat > = 2300 vervolgens GOTO eyeright
GOTO eyeright
GOTO MAIN
BUG:
DEBUG "bug gevonden in VR lezingen =", DEC resultaat, CR ' als signaal verlies stop routine
STOP
checkeyes: "controle van de VR-locatie
HOGE 7 ' pin 7 gebruiken om zich te kwijten van het GLB-circuit
PAUSE 1 ' voor 1 ms.
RCTIME 7, 1, resultaat ' maatregel RC oplaadtijd. converteren van analoge naar digitale
TERUGKEER
eyeright: ' rechter oog naar rechts verplaatsen
HOGE 10' zet de motor op
CHECKRT:
DEBUG "oog juiste modus", DEC resultaat, CR
GOSUB checkeyes
ALS resultaat < 1100 dan GOTO LINESLOW ' Controleer of het op de lagere limieten
GOTO CHECKRT
eyeleft: ' oog naar links verplaatsen
HOGE 8 ' motor inschakelen
CHECKLT:
"Eyeleft mode", DEC resultaat DEBUG
GOSUB checkeyes
ALS resultaat > 2300 dan GOTO LinesLow ' als overschreden motor uitschakelen
GOTO CHECKLT
LinesLow: ' motor uitschakelen
LAGE 8
LAGE 10
DEBUG "wegviel lijnen laag", CR
GOSUB runhigh
GOTO belangrijkste
runhigh:
DO WHILE pwmduty < 255 ' dutycycle blijven toenemen tot 255 is bereikt
PWM PWMout, pwmduty, 15' uitvoeren om spanning op LED verlagen laatste # voor sneller
pwmduty = pwmduty + 1 ' Verhoog taakcyclus door 1
LOOP
runlow:
IF pwmduty > = 255 dan pwmduty = 254 ' taakcyclus ingesteld op 254
DO WHILE pwmduty > = 1 ' blijven dalen spanning op LED
PWM pwmout, pwmduty, 25' lopen naar het verminderen van de spanning op LED laatste # voor sneller stijgen
pwmduty = pwmduty-1 ' cyclus door 1 verlagen
LOOP
PAUZE 2000
TERUGKEER