Bonjour, je travail actuellement sur un projet de robot de salage automatisé, ma partie consiste en la programmation du déplacement du robot à l'aide de capteurs analogiques délivrant une tension continue variant de 0 à 5V qui permettrons après traitement par le programme de modifier le rapport cyclique de deux moteurs pour faire tourner le robot. Pour m'aider à visualiser l'effet du programme j'utilise deux générateurs de tension continue sur les entrées et les deux sorties sont reliées à un oscilloscope. Le problème est que, malgré une différence de tension entre les deux entrées le rapport cyclique ne se modifie pas.
//------------Programme Déplacement Camper Trolley---------------------------------------------------------------
//------------Définition des constantes et variables--------------------------------------------------------
int CaptHallD = 2; // Le capteur Hall droit est affecté à la broche analogique 0
int CaptHallG = 3; // Le capteur Hall gauche est affecté à la broche analogique 1
int MotChenG = 10; // L'actionneur moteur chenille gauche est affecté à la broche numérique 12
int MotChenD = 9; // L'actionneur moteur chenille droit est affecté à la broche numérique 13//------------Variables---------------------------------------------------------------------------------------
int HallD; // Valeur Lue par le capteur Droit
int HallG; // Valeur Lue par le capteru Gauche
int HallDC; // Valeur du capteur droit convertie
int HallGC; // Valeur du capteur gauche convertie
int Difference; // Rapport des deux tensions//------------Définition des entrées et sorties------------------------------------------------------------------------------------
void setup()
{
pinMode ( 2, INPUT ); // La broche 0 est une entrée
pinMode ( 3, INPUT ); // La broche 1 est une sortie
pinMode ( 10, OUTPUT ); // La broche 10 est une sortie
pinMode ( 9, OUTPUT ); // La broche 11 est une sortie
}//------------Programme----------------------------------------------------------------------------------------------------------
void loop()
{
analogWrite(MotChenD, 128);
analogWrite(MotChenG, 128);
HallD = analogRead(CaptHallD); // On mesure la tension délivrée par le capteur droit
HallG = analogRead(CaptHallG); // On mesure la tension délivrée par le capteur gauchedebut:
Difference = (HallD - HallG); // Calcul de la différence des deux tensions converties
if(-50 < Difference < 50)
{
goto debut;
}else if(50 <= Difference <= 512) // Cas où capteur Gauche relève la plus grande valeur
{
analogWrite(MotChenD, 191);
goto debut;
}else if(512 < Difference) // Cas où la valeur du capteur gauche >> que valeur capteur droit
{
analogWrite(MotChenD, 230);
goto debut;
}else if(-512 <= Difference <= -50)
{
analogWrite(MotChenG, 191);
goto debut;
}else
{
analogWrite(MotChenG, 230);
goto debut;
}
}
Je ne vois vraiment pas d'où pourrais venir le problème ( qui était présent avant l'ajout des "goto" )