Etape 8: Logiciel moteur
Cette esquisse est chargée dans l’Arduino qui dispose d’un moteur sur le dessus.
Notez que le "saut = 1" passe à la deuxième partie du programme, où le robot poursuit la grenouille. La première partie du programme est utilisée pour permettre au robot de se déplacer sans se coincer (une future amélioration--bientôt).
int val = 0 ;
int val1 = 0 ; valm int = 0 ; int valm1 = 0 ; int saut = 1 ;
const int Pw101 = 3 ; const int pwmB = 11 ; const int brakeA = 9 ; const int brakeB = 8 ; const int dirA = 12 ; const int dirB = 13 ; const int droite = 5 ; const int gauche = 7 ;
void setup() {pinMode (dirA, OUTPUT); pinMode (brakeA, sortie); pinMode (dirB, OUTPUT); pinMode (brakeB, sortie); pinMode(right,INPUT) ; pinMode(left,INPUT) ; digitalWrite (dirA, HIGH); //forward A digitalWrite (brakeA, basse); //release brakeA analogWrite (Pw101, 100); //set vitesse A digitalWrite (dirB, HIGH); //forward B moteur digitalWrite(brakeB,LOW); / / analogWrite (pwmB, 100); //set Vitesse B delay(700) ;
}
void loop () {si (sauter == 0) {valm=analogRead(0) ; valm1=analogRead(1) ; si (valm > 500 ou valm1 > 500) {valm=analogRead(0) ; valm1=analogRead(1) ; si (valm > 450 ou valm1 > 450) {digitalWrite (brakeA, HIGH); digitalWrite (brakeB, HIGH); digitalWrite (dirA, faible); //reverse A digitalWrite (brakeA, LOW); / / analogWrite (Pw101, 200); digitalWrite(dirB,LOW) ; digitalWrite(brakeB,LOW) ; analogWrite(pwmB,200) ; retard (700) //backup digitalWrite (brakeA HIGH); //stop une roue analogWrite(pwmA,0) ; Delay(1000) ; digitalWrite (brakeB, HIGH); //stop autre roue //start les deux roues avant digitalWrite(dirA,HIGH) ; digitalWrite(brakeA,LOW) ; analogWrite(pwmA,140) ; digitalWrite(dirB,HIGH) ; digitalWrite(brakeB,LOW) ; analogWrite(pwmB,140) ; Delay(1000) ; {}} //jump un analogWrite(pwmA,0) égal ; analogWrite(pwmB,0) ; Val=digitalRead(Right) ; val1=digitalRead(Left) ; Si (val == HIGH & & val1 == HIGH) {analogWrite(pwmA,140) ; analogWrite(pwmB,140) ; delay(1000);} si (val == HIGH & & val1 == faible) {analogWrite (Pw101, 140); analogWrite(pwmB,50) ; delay(1000);} si (val1 == HIGH & & val == faible) {analogWrite(pwmB,140) ; analogWrite(pwmA,50) ; delay(1000);}
}