Bonjour,
Je réalise notre projet de terminal s si sur le chariot de golf, j'ai pour but que le chariot suive le joueur de golf. Pour cela j'ai réalisé une maquette où il me faut un programme arduino où je veux utiliser 3 capteurs à ultrason, mais je ne m'y connais pas en arduino donc j'aurais besoin de votre aide pour le commencer.
Pour le moment, nous avons fait un programme avec un potentiomètre et un moteur, on arrive à gérer la puissance du moteur avec le potentiomètre à l'aide d'une plaque Arduino Uno et d'un shield motor, on a utilisé le principe PWM au quel on a joint un potentiomètre.
Maintenant on souhaiterais que le robot avance tout seul, et lorsque qu'il se trouve à moins de 20cm d'un obstacle détecté par le capteur ultrason Hc sr04 il s'arrete on a crée un programme qui semble correcte mais qui ne fonction pas.
On aimerait donc de l'aide pour corriger la ou les erreurs que l'on ne trouve pas.
/* Constantes pour les broches */
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3; // Broche ECHO
int F = 0;
long distance_cm = 0;
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s
/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;
/** Fonction setup() */
void setup() {
/* Initialise le port série */
Serial.begin(115200);
/* Initialise les broches */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 0); //Spins the motor on Channel A at full speed
}
/** Fonction loop() */
void loop() {
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
/* 3. Calcul la distance à partir du temps mesuré */
float distance_mm = measure / 2.0 * SOUND_SPEED;
/* Affiche les résultats en mm, cm et m */
Serial.print(F("Distance: "));
Serial.print(distance_mm);
Serial.print(F("mm ("));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F("cm, "));
if (40 > F > 20){
analogWrite(3, 255);
digitalWrite (13,1);
}
else
{
analogWrite(3,0);
digitalWrite (13,0);
}
/* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
delay(500);
}
De plus on aimerait donc faire une maquette avec 3 capteurs ultrason pour que le robot puisse tourner au cas ou le golfeur tournerait.