Étape 7: Mettre tous ensemble
Télécharger le schéma suivant :
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Arduino alimenté ELMod par : Stanley Deakins
//
Il s’agit d’un croquis de base utilisé pour alimenter un réservoir de RC en utilisant un Arduino et un capteur de ping de seeedstudio. Il utilise un
Capteur de ping de parallaxe pour naviguer. S’il vous plaît n’hésitez pas à modifier cette esquisse de toute façon vous avez envie. C’est tout simplement
juste assez pour vous obtenir a commencé sur le projet. Merci et profitez.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Construit au sommet de l’exemple de code Ping par Tom Igoe
Cette constante ne changera pas. C’est le nombre de broches
de la sortie de la sonde :
const int pingPin = 7 ;
int pinI1 = 8; //define I1 interface
int pinI2 = 11 ; //define I2 interface
int speedpinA = 9; //enable moteur A
int pinI3 = 12 ; //define I3 interface
int pinI4 = 13 ; //define I4 interface
int speedpinB = 10 ; //enable, moteur B
spead int = 127 ; //define le spead de moteur
void setup()
{
pinMode(pinI1,OUTPUT) ;
pinMode(pinI2,OUTPUT) ;
pinMode(speedpinA,OUTPUT) ;
pinMode(pinI3,OUTPUT) ;
pinMode(pinI4,OUTPUT) ;
pinMode(speedpinB,OUTPUT) ;
}
mémoire vide
{
analogWrite (speedpinA, spead); //input une valeur de simulation pour régler la vitesse
analogWrite(speedpinB,spead) ;
digitalWrite (pinI4, HIGH); //turn DC moteur B déplacer vers la droite
digitalWrite(pinI3,LOW) ;
digitalWrite (pinI2, LOW); //turn DC Motor A déplacer dans le sens anti-horaire
digitalWrite(pinI1,HIGH) ;
}
void backward() / /
{
analogWrite (speedpinA, spead); //input une valeur de simulation pour régler la vitesse
analogWrite(speedpinB,spead) ;
digitalWrite (pinI4, LOW); //turn DC moteur B déplacer dans le sens anti-horaire
digitalWrite(pinI3,HIGH) ;
digitalWrite (pinI2, HIGH); //turn DC Motor A déplacer vers la droite
digitalWrite(pinI1,LOW) ;
}
void left() / /
{
analogWrite (speedpinA, spead); //input une valeur de simulation pour régler la vitesse
analogWrite(speedpinB,spead) ;
digitalWrite (pinI4, HIGH); //turn DC moteur B déplacer vers la droite
digitalWrite(pinI3,LOW) ;
digitalWrite (pinI2, HIGH); //turn DC Motor A déplacer vers la droite
digitalWrite(pinI1,LOW) ;
}
void right() / /
{
analogWrite (speedpinA, spead); //input une valeur de simulation pour régler la vitesse
analogWrite(speedpinB,spead) ;
digitalWrite (pinI4, LOW); //turn DC moteur B déplacer dans le sens anti-horaire
digitalWrite(pinI3,HIGH) ;
digitalWrite (pinI2, LOW); //turn DC Motor A déplacer vers la droite
digitalWrite(pinI1,HIGH) ;
}
void stop() / /
{
digitalWrite(speedpinA,LOW); / / Unenble la broche, pour arrêter le moteur. Cela devrait être fait pour avid endommager le moteur.
digitalWrite(speedpinB,LOW) ;
Delay(1000) ;
}
void loop()
{
créer des variables pour la durée du ping,
et le résultat de la distance en pouces et en centimètres :
longue durée, pouces, cm ;
Le PING))) est déclenché par une impulsion forte de 2 ou plusieurs microsecondes.
Donner une brève impulsion faible au préalable pour s’assurer une impulsion propre élevée :
pinMode (pingPin, sortie) ;
digitalWrite (pingPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (pingPin, HIGH) ;
delayMicroseconds(5) ;
digitalWrite (pingPin, basse) ;
Le même NIP est utilisé pour lire le signal de la commande PING))): un sommet
impulsion dont la durée est la durée (en microsecondes) de l’envoi
du ping à la réception de son écho hors d’un objet.
pinMode (pingPin, entrée) ;
durée = pulseIn (pingPin, HIGH) ;
convertir l’heure dans un lointain
po = microsecondsToInches(duration) ;
//
Si les objets sont de moins de 12 pouces de distance
le robot s’inverse et tourne vers la droite
pendant 2 secondes
//
Si (pouces < 8) {}
frein moteur d’entraînement et la pause de 1/10 seconde
Stop() ;
//
réglage des moteurs en arrière
//
Backward() ;
Delay(700) ;
Stop() ;
//
moteurs de réglage pour activer
//
Left() ;
Delay(1100) ;
Stop() ;
}
//
Lorsque rien n’est au sein de 8"
le robot simplement pousse vers l’avant
//
else {}
//
Définition de moteur d’entraînement
//
mémoire ;
}
Delay(100) ;
}
long microsecondsToInches(long microseconds)
{
Selon fiche technique de parallaxe pour le PING))), il y a
73,746 microsecondes par pouce (c'est-à-dire son voyage à 1130 pieds /
en second lieu). Cela donne la distance parcourue par le ping, sortant
et revenez, pour nous diviser par 2 pour obtenir la distance de l’obstacle.
Voir : http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
retourner les microsecondes / 74 / 2 ;
}