Voici mon programme qui sert a faire avancer un robot et grâce a une ligne noir au sol et avance selon les 2 infra-rouge et je n'arrive pas a ajouter le programme pour faire fonctionné le capteur ultrason car de
-une je ne sais pas ou le placer sur la carte Arduino
-deux je ne sais pas comment ajouter le programme
-J'ai des matériaux limité pour faire ce projet
Merci a vous de m'aidez ( ça fais 6H que je fais ce programme et que j'essaye de installé sur l'Arduino)
int IN1 = 7;
int IN4 = 6;
int GA = 12, GB = 3, DA = 13, DB = 11;
void setup()
{
Serial.begin(9550);
pinMode(IN1, INPUT);
pinMode(IN4, INPUT);
pinMode(DA, OUTPUT);
pinMode(DB, OUTPUT);
pinMode(GA, OUTPUT);
pinMode(GB, OUTPUT);
}
void droite()
{
digitalWrite(DA, LOW);
analogWrite (DB, 1000);
analogWrite (GA, 1000);
digitalWrite(GB, LOW);
}
void gauche()
{
analogWrite(DA, 1000);
digitalWrite(DB, LOW);
digitalWrite(GA, LOW);
analogWrite(GB, 1000);
}
void avancer()
{
digitalWrite(DA, LOW);
analogWrite(DB, 1000);
digitalWrite(GA, LOW);
analogWrite(GB, 1000);
}
void loop()
{
int in1_val = digitalRead(IN1);
int in4_val = digitalRead(IN4);
if ((in1_val) && ( ! in4_val))
{
Serial.print("Tourner a gauche");
gauche();
}
else if (( ! in1_val) && (in4_val))
{
Serial.print("Tourner a droite");
droite();
}
else
{
Serial.print("tout droit");
avancer();
}
}
Bonjour,
Peux tu mettre les liens vers les documentations (data ou site du vendeur) des composants utilisés (capteur ultrason, capteur de ligne, carte driver moteurs...).
Dans le lien que tu donnes pour le HC-SR04 il y a un programme de démonstration assez simple.
Donc tu prends dans le setup() de ce programme les lignes qui concernent la configuration des I/Os nécessaires à la gestion du HC-SR04. Et tu les colles dans le setup() du programme de ton robot.
Dans loop tu repères les lignes qui permettent de faire une mesure:
génération du top de déclenchement de la mesure
mesure de l'impulsion renvoyée par le capteur
calcul de la distance
Tu les colles dans le loop() de ton programme ou mieux tu en fais une fonction que tu appelleras dans loop().
Ensuite tu utilises l'information de distance pour ce que tu as prévu d'en faire
Et bien tu fais un test sur la distance et si le résultat du test est vrai tu fais couper les moteurs.
Il serait préférable de faire la mesure et le test au début de loop() car le résultat va conditionner l'exécution du code à l'intérieur de loop().
Au passage, on ne sait pas trop ce que tu veux faire au final mais si tu arrêtes les moteurs, le robot ne fera plus rien puisque la distance sera toujours trop faible et il ne bougera plus. Il vaudrait peut-être mieux le faire reculer et tourner.
Pas surprenant puisque tu ne fais rien.
Si la distance est inférieure à 30cm aucune action si elle est supérieure à 30cm tu affiches un message "Obstacle"
Il faudrait faire
if (distance <= 30)
{
// Il y a un obstacle en vue
// mettre ici le code qui assure l'évitement
}
else
{
// on est à plus de 30cm d'un obstacle
// mettre ici le code qui gère le déplacement
}