Bonjour bonjour!
J'ai pour projet un robot à câble ![]()
Il s'agit de 3 moteurs pas à pas qui enroulent et déroulent des câbles qui sont liés en un point
Les dispositifs fonctionnent avec un moteur pas à pas et une fourche optique pour contrôler le déroulement et l'enroulement des câbles. Ce qui permet de rectifier les erreurs de sur-épaisseur et de décalage des câbles.
J'envoie ensuite des suites de vitesses et de nombres de tours effectués sous la forme d'arrays.
Le problème et que je bute sur le code ![]()
#include <AccelStepper.h>
#define STEPPER1_DIR_PIN 6
#define STEPPER1_STEP_PIN 7
AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);
int MOTOR_0_SPEED_FLOOR_[][4] = {
{ -1089, -655, -1536, -289},
{ -984, -1415, -580, -1688},
{ -1128, -719, -1503, -375},
{ -987, -1350, -629, -1545},
{ -991, -1352, -619, -1485},
{ -1090, -737, -1363, -458},
{ -1086, -740, -1326, -476},
};
int MOTOR_0_NUMBER_TOOTH_FLOOR_[][4] = {
{130, 86, 172, 42},
{126, 171, 82, 209},
{149, 103, 193, 60},
{140, 183, 98, 219},
{147, 194, 102, 229},
{166, 122, 209, 85},
{173, 128, 216, 93},
};
const int fourchePin1 = 11; //Sortie de la fourche pin11
int a = 1; //Numéro de la ligne
int b = 1; //Numéro de la colonne
int State1 = 0 ; //Etat Fourche1
int Old_State1 = 0; //Ancien Etat Fourche1
int i; //Valeur nombre de pas stepper1
// Initialisation
void setup() {
stepper1.moveTo(1600 * 20); //Distance infinie stepper1
}
void loop()
{
for (a = 0; a < 7; a++)
{
for (b = 0; b < 4; b++)
{
stepper1.setMaxSpeed(MOTOR_0_SPEED_FLOOR_[a][b]); //Vitesse stepper1
stepper1.setAcceleration(MOTOR_0_SPEED_FLOOR_[a][b]); //Acceleration stepper1
State1 = digitalRead(fourchePin1); //Etat de la Fourche
if (State1 != Old_State1) //Mesure entre l'état de la fourche et la valeur suivante
{
i = i + 1; //Incrémentation
Old_State1 = State1;
}
if (i > MOTOR_0_NUMBER_TOOTH_FLOOR_[a][b]) //Arret stepper1
{
stepper1.run();
}
}
}
}
Les variables a et b correspondent aux lignes et colonnes des vitesses et du nombre de tours à effectuer mais rien n'y fait....
Merci d'avance de vos réponses ![]()