Etape 11 : Programmer l’Arduino
Maintenant que vous comprenez comment je suis opérant les servos, nous allons écrire un code plus utile pour elle.Nous allons commencer par définir un tas de fonctions en utilisant les valeurs que nous avons enregistré dans la dernière étape qui vont animer l’arbre et aussi ajouter la capacité de communication série et programmer certaines actions pour aller avec les données reçues du port série.
Ouvrir une nouvelle esquisse dans l’environnement Arduino et entrez la commande suivante. (n’oubliez pas que vous aurez besoin d’utiliser vos propres valeurs pour les postes de servo)
int ledPin = 13 ; assigner la broche 13 comme la broche si les voyants sont allumésint mouthPin = 8 ; Il s’agit de l’axe où la bouche est connectée
int eyesPin = 9 ; les yeux sont sur broche 9
pour la communication série
message d’int = 0 ;
void setup() {}
Serial.Begin(9600) ; démarrer le port série avec une vitesse de transmission 9600
définir les sorties
pinMode(ledPin,OUTPUT) ;
pinMode(mouthPin,OUTPUT) ;
pinMode(eyesPin,OUTPUT) ;
fermer les yeux
closeEyes() ;
fermer la bouche
closeMouth() ;
attendre quelques secondes, alors nous pouvons assister à l’ouverture après avoir heurté la réinitialisation
Delay(3000) ;
}
void loop() {}
digitalWrite(ledPin,HIGH) ;
openEyes() ;
Talk(3) ;
if(Serial.available() > 0) {//if le port série envoie des données
lire les octets entrants
message = Serial.read() ;
animer notre robot selon les données que nous recevons en série
Si (message == « 1 ») {}
Talk(1) ;
}
Si (message == « 2 ») {}
Talk(2) ;
}
Si (message == « 3 ») {}
openEyes() ;
}
Si (message == « 4 ») {}
closeEyes() ;
}
Si (message == « 5 ») {}
blinkEyes() ;
}
Si (message == « 6 ») {}
digitalWrite(ledPin,LOW) ;
}
Si (message == « 7 ») {}
digitalWrite(ledPin,HIGH) ;
}
}
}
{} void talk (int fois)
pour (int j = 0; j < fois; j ++) {}
tout d’abord, nous allons ouvrir la bouche
pour (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(1100) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(mouthPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
puis le fermer
pour (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(500) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(mouthPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
}
}
void closeMouth() {}
pour (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(500) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(mouthPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
}
void openEyes() {}
pour (int i = 0; i < 30; i ++) {}
digitalWrite(eyesPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(800) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(eyesPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
}
void closeEyes() {}
pour (int i = 0; i < 30; i ++) {}
digitalWrite(eyesPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(2500) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(eyesPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
}
void blinkEyes() {}
pour (int i = 0; i < 10; i ++) {}
digitalWrite(eyesPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(2500) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(eyesPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
pour (int i = 0; i < 10; i ++) {}
digitalWrite(eyesPin,HIGH) ; tourner sur l’axe du servo, c’est à dire envoyer 5V
delayMicroseconds(800) ; délai pour la longueur de l’impulsion définie dans les déclarations
digitalWrite(eyesPin,LOW) ; tourne broche servo faire marche arrière à la fin de l’impulsion
Delay(20) ;
}
}
Voici une vidéo de ce qu’il faut faire à ce stade.