Étape 5: Robot d’évitement GOduino III objet
Je suis un grand fan de l’utilisation de cas DVD comme plates-formes de robot. Ce robot est a également été assemblés en moins d’une heure. J’ai déjà eu la plate-forme prête d’un robot précédent donc tout ce que j’ai dû faire est d’insérer le GOduino III et le capteur dans un court montage d’essai.
J’ai utilisé le moteur à engrenages métalliques micro de Pololu et le capteur de distance ultrason HC-SR04. Il existe de nombreux exemples de code pour le capteur de HC-SR04 et une bibliothèque d’Arduino qui fonctionne bien.
C’est le code utilisé dans la vidéo de démonstration :
Évitement d’objet GOduino III en utilisant le capteur de distance HC-SR04
Ce code se trouve dans le domaine public
#include < Goduino.h >
#include < Ultrasonic.h >
Sélectionnez les broches pour le capteur de distance HC-SR04
#define TRIGGER_PIN 12
#define ECHO_PIN 13
#define DISRANCE_TO_OBJECT 1300 / / ce fut la meilleure valeur possible pour la détection d’objet à l’aide d’essai & erreur
Ultrason ultrasonique (TRIGGER_PIN, ECHO_PIN) ; Objet de HC-SR04 distance capteur
Goduino myrobot ; Objet de moteur GUduino III
int mspeed = 50 ; Définissez la valeur de la vitesse initiale des deux moteurs
void setup()
{
Serial.Begin(9600) ;
myrobot.motorSpeed (50, 50) ; Vitesse initiale établie pour les deux moteurs
}
void loop()
{
Serial.println("---") ;
float cmMsec = 0, inMsec = 0 ;
microsec long = 0, avgDis = 0 ;
pour (int i = 0 ; J’ai < 10 ; i ++) {/ / moyenne des 10 lectures du capteur de distance
MICROSEC = ultrasonic.timing() ;
Serial.Print ("microsec:") ;
Serial.println(MICROSEC) ;
avgDis += microsec ;
}
avgDis = avgDis / 10 ;
Serial.Print ("avgDis:") ;
Serial.println(avgDis) ;
Si (avgDis > DISRANCE_TO_OBJECT) {/ / si aucune plage de quelques objet
myrobot.motorForward(1) ; aller de l’avant
myrobot.motorForward(2) ;
}
else / / mais si objet détecté au sein de la gamme
{
myrobot.motorStop(1) ; arrêter
myrobot.motorStop(2) ; arrêter
Delay(500) ; attendre
myrobot.motorBack(1) ; Précédent
myrobot.motorBack(2) ; Précédent
Delay(1000) ; attendre
myrobot.motorBack(1) ; tour
myrobot.motorForward(2) ;
Delay(500) ; attendre
myrobot.motorForward(1) ; Puis aller de l’avant
myrobot.motorForward(2) ;
}
}