voilà bien des mois que je n'ai pas donné de nouvelles de mon projet. Aujourd'hui, alors que la rentrée a eu lieu il y a trois semaines et que les dates butoirs de reddition du travail de maturité approche, je voulais actualiser l'avancée de mon hexapod.
Pour résumer, disons que le petit avance bien. J'ai consacré mes vacances à m'occuper de calibrer et de synchroniser ces servomoteurs afin d'avoir un déplacement homogène où les pattes n'entrent pas en conflit les unes avec les autres. Actuellement, outre deux petits servos qui, pour une raison qui m'est inconnue, ne semble pas prêts à faire ce que je leur demande, le tout est assez joli à voir

L'étape qui me tient à cœur d'accomplir maintenant est de le libérer des câbles qui le contraignent et de modifier le code arduino, afin de pouvoir contrôler à ma guise son déplacement.
1) Pour le premier point, pas de souci particulier, il me suffit d'acheter le matériel nécessaire, c'est-à-dire une batterie pour remplacer l'alimentation secteur que j'ai actuellement et remplacer la connexion câblée qui relie l'arduino à mon PC. Pour ce dernier point, je pense partir sur du bluetooth, avec une clef bluetooth à mettre à l'un des ports bluetooth de mon PC et un adapteur bluetooth pour l'arduino (pour ce dernier, si quelqu'un a des produits avec un bon rapport qualité/prix à me conseiller, je suis preneur).
2) Quant au deuxième point, c'est pour lui que je viens quémander votre aide

Afin que vous puissiez jeter un coup d'oeil au code, le voici (j'ai simplement omis la déclaration des variables et les importations, afin de donner la partie où l'anomalie se cache):
ServoConsole console; void setup(){ Serial.begin(115200); //For printing out data, or debugging. Serial2.begin(115200); // Used for control servos on left side. Serial1.begin(115200);// Used for control servos on right side. Serial.println("Entrez 5 pour passer en position de mouvement ou 8 pour avancer"); } void loop(){ if (Serial.available() > 0) { code = Serial.read(); Serial.print(code); if (code == '5') { console.Move(legs, 3, 170, 311); //Legs move to 170 for standing up console.Move(legsbas, 3, 50, 311); console.Move(hips, 6, 480, 311); // hips move to 480 for standing up console.Move(hipsbas, 1, 280, 311); console.Move(hipshaut, 1, 580, 311); console.Move(axisA, 2, 0, 1); // axis group A move to 130. Prepare for walking console.Move(axisC, 1, 0, 1); console.Move(axisB, 3, 0, 1); // axis group B move 70. Prepare for walking Serial.print("Le robot s'est leve"); } if (code == '8') { Serial.print("Le robot marche"); while(1){ walk(); }}}} void walk(){ console.MoveUp(hipB, 3, 100, 300); //hips group B move up 100 console.MoveUp(axisB, 3, 60, 100);// axis group B move forward 60 console.MoveDown(axisA, 2, 60, 100);// axis group A move backward 60 delay(500);// waits for movement console.MoveDown(hipB, 3, 100, 300);//hips group B move down 100 delay(500);// waits for movement console.MoveUp(hipA, 3, 100, 300);//hips group A move up 100 console.MoveDown(axisB, 3, 60, 100);// axis group B move backward 60 console.MoveUp(axisA, 2, 60, 100);// axis group A move forward 60 delay(500);// waits for movement console.MoveDown(hipA,3, 100, 300);//hips group A move down 100 }
Pour donner un exemple du résultat obtenu, lorsque j'envoie un '5' à travers le moniteur série, celui-ci affiche "Le robot s'est levé", même si le gredin est resté inerte.
______
Voilà, c'est tout pour l'instant. Je vous remercie d'avance pour vos réponses
