Étape 3: Code
Le code que j’ai fourni permet le changement de la distance du seuil. Donc en d’autres termes, dans quelle mesure les capteurs peuvent voir. Je sera un nouveau téléchargement instructable bientôt pour montrer comment vous pouvez faire des capteurs encore plus précise à l’aide d’une sonde de température. Enfin, mon ami m’a montré une façon cool de débogage très rapide. Tout vous faire est d’utiliser une valeur booléenne et certains si des déclarations. Si la valeur booléenne est true, puis communication série sera sur et communiquer. Si la valeur est fausse, le programme va alors courir beaucoup plus vite mais pas communiquer.
Je vais joindre le fichier .ino, sinon vous pouvez le copier d’ici :
/*************************************************************************************************
**************************************************************************************************
Suivi de mouvement créé par Calvin Kielas-Jensen
À l’aide d’un Arduino UNO, Rechercher Instructables.com le schéma de câblage.
Ce script permet de deux capteurs de la gamme ultrasonique de suivre le mouvement tout monté au sommet d’un servo. La distance seuil peut être modifié, mais ne devrait pas être réglé trop loin comme les capteurs débuteront à l’échec.
Tout le monde est bienvenu pour utiliser et modifier ce code aussi longtemps que je me donne le crédit. Merci de respecter le mouvement open source !
************************************************************************************************** *************************************************************************************************/
#include
Servo myservo ;
const int Lin = 10, Rin = 12, Lout = 11, déroute = 13, serv = 9 ; broches de réglage capteur et goupille de servo
créer des variables pour la durée / / et la distance entraîner de pouces de long, Rduration, Lduration, Rinches, part ;
seuil d’int = 10 ; Seuil du capteur en pouces
angle int = 80 ; Angle initial
booléenne debug = false ; Communication série pour le débogage. Valeur true pour communication série.
void setup() {/ / initialiser la communication série : si (débogage) {Serial.begin(9600);} myservo.attach(9) ; //attach servo jusqu'à la broche 9}
void loop() {//Most du code de la sonde a été prise à partir de code de capteur pour le PING de David Mellis //I modifié pour un capteur de 4 broches comme oppsed du capteur à 3 broches / / donner une brève impulsion faible au préalable pour assurer une impulsion propre élevée : pinMode (déroute, OUTPUT); digitalWrite (déroute, faible); delayMicroseconds(2) ; delayMicroseconds(5) ; digitalWrite (déroute, élevé), digitalWrite (déroute, faible) ;
Rduration = pulseIn (Rin, élevé) ; pinMode (Lout, sortie) ; digitalWrite (Lout, faible) ; delayMicroseconds(2) ; digitalWrite (Lout, élevé) ; delayMicroseconds(5) ; digitalWrite (Lout, faible) ;
Lduration = pulseIn (Lin, élevée) ;
convertir l’heure dans un lointain Rinches = microsecondsToInches(Rduration) ; Part = microsecondsToInches(Lduration) ; Si (déboguer) {Serial.print ("gauche:") ; Serial.Print(linches) ; Serial.println ("en") ; Serial.Print ("droit:") ; Serial.Print(Rinches) ; Serial.println ("en") ; } follow() ; }
{microsecondsToInches(long microseconds) long
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-PI...
retourner les microsecondes / 74 / 2 ; }
void follow() {si (part < = seuil || Rinches < = seuil) {si (part + 2 < Rinches) {angle = angle - 2;} si (Rinches + 2 < part) {angle = angle + 2;}} si (angle > 160) {angle = 160;} si (angle < 0) {angle = 0;} myservo.write(angle) ; }