Mikey, roboten med Vision (8 / 9 steg)
Steg 8: Motor programvara
Denna skiss är laddad i Arduino som har en motor sköld på toppen.
Observera att den "hoppa = 1" flyttas till den andra delen av programmet, där roboten jagar grodan. Den första delen av programmet används för att aktivera roboten att flytta runt utan att fastna (en framtida förbättring--kommer snart).
int val = 0;
int värde1 = 0; int valm = 0; int valm1 = 0; int hoppa = 1;
CONST int pwmA = 3; CONST int pwmB = 11; CONST int brakeA = 9; CONST int brakeB = 8; CONST int dirA = 12. CONST int dirB = 13. CONST int höger = 5. CONST int vänster = 7.
void setup() {pinMode (dirA, produktionen), pinMode (brakeA, produktionen); pinMode (dirB, produktionen); pinMode (brakeB, produktionen); pinMode(right,INPUT); pinMode(left,INPUT); digitalWrite (dirA, hög), //forward A digitalWrite (brakeA, låg); //release brakeA analogWrite (pwmA, 100); //set hastighet A digitalWrite (dirB, hög); //forward B motor digitalWrite(brakeB,LOW); / / analogWrite (pwmB, 100); //set hastighet B delay(700);
}
Ogiltig loop () {om (hoppa == 0) {valm=analogRead(0); valm1=analogRead(1); om (valm > 500 eller valm1 > 500) {valm=analogRead(0); valm1=analogRead(1); om (valm > 450 eller valm1 > 450) {digitalWrite (brakeA, hög), digitalWrite (brakeB, hög), digitalWrite (dirA, låg), //reverse A digitalWrite (brakeA, låg); / / analogWrite (pwmA, 200); digitalWrite(dirB,LOW); digitalWrite(brakeB,LOW); analogWrite(pwmB,200); fördröjning (700); //backup digitalWrite (brakeA HÖG); //stop ett hjul analogWrite(pwmA,0); Delay(1000); digitalWrite (brakeB, hög), //stop andra hjul //start båda rullar framåt digitalWrite(dirA,HIGH); digitalWrite(brakeA,LOW); analogWrite(pwmA,140); digitalWrite(dirB,HIGH); digitalWrite(brakeB,LOW); analogWrite(pwmB,140); Delay(1000); {}}} //jump lika en analogWrite(pwmA,0); analogWrite(pwmB,0); Val=digitalRead(Right); val1=digitalRead(Left); om (val == hög & & värde1 == hög) {analogWrite(pwmA,140); analogWrite(pwmB,140); delay(1000);} om (val == hög & & värde1 == låg) {analogWrite (pwmA, 140); analogWrite(pwmB,50); delay(1000);} om (värde1 == hög & & val == låg) {analogWrite(pwmB,140); analogWrite(pwmA,50); delay(1000);}
}