Étape 6: Code d’Arduino
Code de l’Arduino et étalonnage. Télécharger le code donné ci-dessous à l’Arduino et suivez les instructions ci-dessous le code d’étalonnage.
/ * Lampe de poche après le Robot Code 25/03/2014 Copiez le code suivant utilise trois résistances de charge légères positionnés Broches de la commande du moteur Des vitesses de moteurs suivantes sont déterminées par l’expérience int sensorPinRight = 0 ; Broche droite capteur int lightReadingRight ; int lightReadingCenter ; int lightReadingLeft ; int readingDelay = 100 ; Délai entre les lectures void setup() Décommentez la série flux à des fins d’étalonnage void loop() Prendre la lecture du capteur droit Prendre la lecture du capteur Centre Prendre la lecture du capteur gauche Aller de l’avant si assez de lumière est détecté du capteur Centre Tourner à droite si assez de lumière est détecté du capteur droit
à droite, avant et côtés gauches d’un robot de contrôle
Motion. Quand la lumière d’une résistance suffisante tombe sur l’un des
les capteurs, le robot tourne à droit, s’avance ou se transforme
gauche.
*/
int E1 = 5 ; Activez le code pin pour moteur droite
int M1 = 4 ; Broche de commande de vitesse pour moteur gauche
int E2 = 6 ; Activer le code pin pour le moteur gauche
int M2 = 7 ; Broche de commande de vitesse pour moteur droite
pour que le robot se déplace vers l’avant en ligne droite.
int leftMotorSpeed = 215 ;
int rightMotorSpeed = 185 ;
int sensorPinCenter = 1 ; Goupille de centrage capteur
int sensorPinLeft = 2 ; Broche du capteur gauche
int lightToleranceRight = 1000 ; Capteur de lecture nécessaire pour déclencher le virage à droite
int lightToleranceCenter = 1000 ; Capteur de lecture nécessaire pour déclencher le mouvement vers l’avant
int lightToleranceLeft = 1000 ; Capteur de lecture nécessaire pour déclencher le virage à gauche
{
pinMode(M1,OUTPUT) ;
pinMode(M2,OUTPUT) ;
Serial.Begin(9600) ;
}
{
Décommentez les lignes séries impression à des fins d’étalonnage
lightReadingRight = analogRead(sensorPinRight) ;
Serial.Print ("droit de lecture du capteur:") ;
Serial.println(lightReadingRight) ;
lightReadingCenter = analogRead(sensorPinCenter) ;
Serial.Print ("Centre de lecture du capteur:") ;
Serial.println(lightReadingCenter) ;
lightReadingLeft = analogRead(sensorPinLeft) ;
Serial.Print ("lecture de capteur à gauche:") ;
Serial.println(lightReadingLeft) ;
Si (lightReadingCenter > lightToleranceCenter)
{
digitalWrite (M1, élevé) ;
digitalWrite (M2, élevée) ;
analogWrite (E1, leftMotorSpeed) ;
analogWrite (E2, rightMotorSpeed) ;
Delay(readingDelay) ;
Arrêter
digitalWrite (M1, faible) ;
digitalWrite (M2, faible) ;
analogWrite (E1, 0) ;
analogWrite (E2, 0) ;
}
Si (lightReadingRight > lightToleranceRight)
{
digitalWrite (M1, faible) ;
digitalWrite (M2, élevée) ;
analogWrite (E1, leftMotorSpeed) ;
analogWrite (E2, rightMotorSpeed) ;
Delay(readingDelay) ;
Arrêter
digitalWrite (M1, faible) ;
digitalWrite (M2, faible) ;
analogWrite (E1, 0) ;
analogWrite (E2, 0) ;
}
Tourner à gauche, si assez de lumière est détecté du capteur gauche
Si (lightReadingLeft > lightToleranceLeft)
{
digitalWrite (M1, élevé) ;
digitalWrite (M2, faible) ;
analogWrite (E1, leftMotorSpeed) ;
analogWrite (E2, rightMotorSpeed) ;
Delay(readingDelay) ;
Arrêter
digitalWrite (M1, faible) ;
digitalWrite (M2, faible) ;
analogWrite (E1, 0) ;
analogWrite (E2, 0) ;
}
Delay(5000) ; Décommentez ce retard important à des fins de calibration moteur
}
Avec ce code téléchargé au robot, retirer les moteurs et ouvrir la série monitor pour jeter un oeil à la lecture des capteurs de lumière. J’ai fait mon étalonnage en lumière normale. Chacun des capteurs non couverts a donné des lectures de l’ordre de 1000 à 1100. Lentement, j’ai ajusté les trimmers jusqu'à ce que chaque capteur lire environ 1000. Un peu plus ou un peu moins ' s alright. Lorsque j’ai couvert un capteur de lumière, la lecture est tombé au haut 800 à 900 s à faible. Dans le code de l’Arduino, j’ai ensuite définir les variables de trois tolérance ; lightToleranceLeft, lightToleranceRight et lightToleranceCenter à 1000. Ainsi, lorsque le robot est dans l’obscurité, toutes les lectures seront au-dessous du seuil de déclenchement de 1000. Quand une lampe de poche est montré sur un capteur, la lecture de la sonde ira au-dessus du seuil de déclenchement et activer le mouvement approprié du robot.
Les numéros spécifiques, que j’ai utilisé pour mes capteurs particuliers ne sont pas importants. Ce qui est important, c’est que vous envoyez les lectures du capteur à la série monitor pour obtenir leurs lectures de lumière ambiantes. Puis, lentement ajuster les trims sur les capteurs jusqu'à ce que les lectures de toutes les trois capteurs sont sensiblement les mêmes. Puis couvrir chaque capteur et vous devriez obtenir une lecture plus bas. Définir vos variables de tolérance pour certaines lectures près de la lecture de lumière ambiante. Une lampe de poche qui brille sur le capteur doit ensuite appeler une lecture plus élevée que la tolérance, activant ainsi le robot.
Une dernière chose au sujet de l’étalonnage. Tout en bas du code de l’Arduino est une ligne commentée avec un délai de cinq secondes. J’ai décommenté cette ligne pour s’assurer que les moteurs étaient attachés correctement. Avec le robot suspendu au-dessus du sol, exécutez le code avec le robot dans l’obscurité. Faire la lumière sur le capteur avant et avec la sensation de vos mains qui voie les roues tournent. Si l’un d’eux se déplace vers l’arrière plutôt que vers l’avant, changer la position des fils de ce moteur sur le flasque arrière du moteur. Ensuite, faire la lumière sur le capteur de droit et sentir les roues. La roue droite devrait revenir en arrière et la roue gauche devrait aller de l’avant. Si l’inverse se produit, échanger les positions moteurs. M1 + devient M2 + et M1 - M2 - et vice versa. Enfin, mettez en commentaire le délai de cinq secondes et le télécharger à nouveau le code. Le robot devrait être prêt à aller.