Bonjour
J'ai récupéré un robot-bras motorisé par cinq moteurs classiques des années 80 piloté par un vieil ordinosaure .Chaque moteur est couplé à un potentiomètre de précision qui permettent de déterminer la position du bras. J'ai branché l'ensemble sur un mega et des l298n. J'arrive à contrôler grossièrement l'ensemble ce qui est positif. Je souhaite maintenant "apprendre" à ce bras à passer par certaines positions et les reproduire à la chaîne.
J'ai donc décomposé mon (futur) programme en deux étapes:
-je positionne le bras la ou je le souhaite
-j'appuie sur un bouton et lis les valeurs analogiques de chaque potentiomètre que j'enregistre dans la ligne 1 de mon tableau.
je reproduis 10 fois cette opération et j'obtiens un tableau de 10 lignes et 5 colonnes décrivant les 10 positions
-après le dernier enregistrement, le robot reproduit les 10 opérations successivement et recommence le cycle.
Voici une ébauche du programme avec la partie qui me pose problème : le tableau.
Sachant que mes valeurs vont de 0 à 1024, que dois je choisir comme type de variable ?
La partie void longPressStop() provoque une erreur à la compilation . Je pense me planter dans cette partie, qu'est ce qui ne va pas?
en pj le programme que je souhaite envoyer au robot
Olivier
int ordrebase = 0; // la valeur du potentiomètre ou doit aller le moteur
int ordrejamb = 200;
int ordrebras = 500;
int ordrepivo = 800;
int ordrepinc = 1023;
int i = 0;
int Tab2D[10][5] ;// = {{0, 200, 500, 800, 1023}};
// La librairie de gestion des boutons
#include <OneButton.h>
const byte buttonPin = 13; // notre bouton est sur la pin 3
OneButton button(buttonPin, true); // true pour le mettre en INPUT_PULLUP
void clickSimple() {
chargerNouvellePosition();
i++;
}
void longPressStop() {
Tab2D[i] = {1+i,2+i,3+i,4+i,5+i} //{analogRead(A0), analogRead(A1), analogRead(A2), analogRead(A3), analogRead(A4)};
i++;
}
void chargerNouvellePosition()
{
ordrebase = Tab2D [i - 10] [0] ;
ordrejamb = Tab2D [i - 10] [1] ;
ordrebras = Tab2D [i - 10] [2] ;
ordrepivo = Tab2D [i - 10] [3] ;
ordrepinc = Tab2D [i - 10] [4] ;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
button.attachLongPressStop(longPressStop);
button.attachClick(clickSimple);
}
void loop() {
// put your main code here, to run repeatedly:
button.tick();
if (i >= 10) {
Serial.print("un:");
Serial.print(ordrebase);
Serial.print(" deux:");
Serial.print(ordrejamb);
Serial.print(" trois:");
Serial.print(ordrebras);
Serial.print(" quatre:");
Serial.print(ordrepivo);
Serial.print(" cinq:");
Serial.println(ordrepinc);
}
if (i = 20) {
i = 10;
}
}
robot4.ino (4.8 KB)