Bonjour, j'aurais besoin d'aide pour un programme assez simple voici sa fonction :
Le programme utilise le robot Zumo, une caméra pixy2 ainsi que une carte Arduino.
Le but du programme est de dans une boucle détecter une certaine signature 1 ou 2 défine par la caméra pixy1.
Si la signature 2 est détectée, tant que elle l'est mettre en route le programme soit le programme A, sinon si la 1 est détecter mettre en route le programme A sinon éteindre les moteurs.
Voici le programme pour l'instant : (J'ai essayer de nombreuses choses comme la fonction do while, mais j'ai l'impression que c'est la compréhension du logiciel qui me limite donc si vous pouvez au moin m'aiguiller ça m'aiderait !)
void loop(){
pixy.ccc.getBlocks(); // Lire les données de la caméra
if (pixy.ccc.blocks[0].m_signature == signature2){ // Si la signature 2 a été détéctée
while (pixy.ccc.blocks[0].m_signature == signature2){ //Tant que la signature 2 est active exécuter le programme
LargeurMesure = pixy.ccc.blocks[0].m_width;
erreur_Largeur=round(LargeurRef - LargeurMesure);
// Détection de la position de la mire
PositionMesure = pixy.ccc.blocks[0].m_x;
erreur_Position = round(PositionRef - PositionMesure);
// Chargement de la vitesse des roues
vitesse=int(15 * erreur_Largeur); // Dimensionnement de la vitesse
motors.setLeftSpeed(vitesse-erreur_Position);
motors.setRightSpeed(vitesse+erreur_Position);
Serial.println("Mire détectée"); // Ecrire sur le moniteur "Mire 2 détectée"
} }else if (pixy.ccc.blocks[0].m_signature == signature1){ // Sinon si la signature 1 est active exécuter le programme
LargeurMesure = pixy.ccc.blocks[0].m_width;
erreur_Largeur=round(LargeurRef - LargeurMesure);
// Détection de la position de la mire
PositionMesure = pixy.ccc.blocks[0].m_x;
erreur_Position = round(PositionRef - PositionMesure);
// Chargement de la vitesse des roues
vitesse=int(15 * erreur_Largeur); // Dimensionnement de la vitesse
motors.setLeftSpeed(vitesse-erreur_Position);
motors.setRightSpeed(vitesse+erreur_Position);
}
else{ //Sinon arrêter le robot
motors.setLeftSpeed(0);
motors.setRightSpeed(0);
Serial.println("Mire perdue"); // Ecrire sur le moniteur "Mire perdue"
}
}
Il n'y a biensûr pas le début du programme qui est l'initialisation et qui marche