Bonjour je viens vers vous pour un problème que je rencontre dans la programmation de mon projet de bac (oral lundi), il s'agit d'un caddie suiveur pour les supermarché je m'occupe de toutes la partie programmation, pour cela j'utilise une carte arduino uno et un Dual H bridge pour les moteurs. Le but est de faire tourner le moteur en fonction du signal recu sur des photodiodes, au nombre de 6, selon qu'elle photodiode reçois le signal IR il faut que le moteur fasse tourner la roue dans le même sens.
je place donc mon emetteur IR devant les photodiode mais rien a faire cela ne veux pas allumer le moteur, pourtant dans la fenetre d'affichage d'arduino quand il y a le signal IR la valeur est à plus de 900.. je ne comprends pas et la je stress car j'ai mon oral lundi coef12...
merci d'avance pour vos réponses
cordialement
bonjour,
code entre balise code </> et non en image
je ne comprends pas et la je stress car j'ai mon oral lundi coef12...
il serait peut être temps de s'affoler
Bonjour merci de votre réponse
//recepteur ir
const int recepteur1 = A0;//gris
const int recepteur2 = A1;//jaune
const int recepteur3 = A2;//vert
const int recepteur4 = A3;//marron
const int recepteur5 = A4;//orange
const int recepteur6 = A5;//bleu
int valeur;
int valeur1;
int valeur2;
int valeur3;
int valeur4;
int valeur5;
//moteur 1
int enA = 5;
int in1 = 3;
int in2 = 4;
// moteur 2
int enB = 2;
int in3 = 0;
int in4 = 1;
void setup ()
{
//recepteur ir
pinMode(recepteur1, INPUT);
pinMode(recepteur2, INPUT);
pinMode(recepteur3, INPUT);
pinMode(recepteur4, INPUT);
pinMode(recepteur5, INPUT);
pinMode(recepteur6, INPUT);
//moteur 1
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
//moteur 2
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
}
void loop ()
{
Serial.println(analogRead(A0)); //lecture du CAN A0 connecté à la patte - de la photodiode
valeur = analogRead(A0);
valeur1 = analogRead(A1);
valeur2 = analogRead(A2);
valeur3 = analogRead(A3);
valeur4 = analogRead(A4);
valeur5 = analogRead(A5);
if (valeur > 900 || valeur1 > 900)
{digitalWrite(in4, HIGH);}
else
{digitalWrite(in3,LOW);}
if (valeur2 > 900 || valeur3 > 900)
{digitalWrite(in3,LOW);}
else
{digitalWrite(in4,LOW);}
if (valeur4 > 900 || valeur5 > 900)
{digitalWrite(in3, HIGH);}
else
{digitalWrite(in4, LOW);}
}
si tu mettais des serial print dans chaque if pour voir si les conditions sont remplies
de plus enA et enB ne sont jamais activés
J'ai les ai testé une a une elles fonctionnent parfaitement
enA et enB gere la vitesse de rotation et après plusieurs essais ne change rien au non fonctionnement de mon système
nopear:
J'ai les ai testé une a une elles fonctionnent parfaitement
enA et enB gere la vitesse de rotation et après plusieurs essais ne change rien au non fonctionnement de mon système
les pin enable ne gèrent pas la vitesse en principe mais activent ou non les moteurs.
as tu testé au moins un code simple avec ton pont en h?
modifie les pins pour coller à ton code et tester les moteurs.
après tu alimente comment les moteurs?
j'utilise un dual H bridge est avec celui le enA et enB sert pour la vitesse
les moteurs sont alimentés en 12v via le dual Hbridge
oui j'ai testé un petit programme est cela marche mais combiné au programme des photodiode ça ne veux pas
lien de ton module dual H
et le code qui fonctionne avec
Il serait effectivement temps de vous y mettre...
N'utilisez pas les pins 0 et 1 pour in3 et in4 ce sont les pins réservées au port Serial - quand vous imprimez vous fichez le bazar sur vos moteurs
Quand on fait des analogRead les uns à la suite des autres sur des pins différentes il vaut mieux doubler la commande (lire deux fois de suite la Pin) pour lire une valeur correcte surtout s'il y a des grandes différences de tension possibles entre les pins
Et tant que vous y êtes, On déclare des pins en const byte
, pas sous forme de int