Bonjour je suis actuellement entrain de connecter un compteur saxo mais vue que la carte du compteur est morte j'ai directement mis les moteurs 4 fils branché sur mon Arduino Uno j'ai le premier moteur sur la pin 2.3.4.5 et le deuxième moteur sur 8.9.10.11 ce qui fonctionne bien quand je teste avec un programme pour faire bouger les aiguille voici le code /
// Moteur 1
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
// Moteur 2
int IN5 = 2;
int IN6 = 3;
int IN7 = 4;
int IN8 = 5;
int delayTime = 5; // vitesse (plus petit = plus vite)
// Séquence pas à pas (bipolaire)
int stepSequence[4][4] = {
{1, 0, 1, 0},
{0, 1, 1, 0},
{0, 1, 0, 1},
{1, 0, 0, 1}
};
void setup() {
// Broches moteur 1
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Broches moteur 2
pinMode(IN5, OUTPUT);
pinMode(IN6, OUTPUT);
pinMode(IN7, OUTPUT);
pinMode(IN8, OUTPUT);
}
void loop() {
// Avance moteur 1 et moteur 2 ensemble sur 150 pas
for (int i = 0; i < 150; i++) {
setStepMotor1(i % 4);
setStepMotor2(i % 4);
delay(delayTime);
}
delay(1000);
// Retour moteur 1 et moteur 2 sur 150 pas
for (int i = 150; i > 0; i--) {
setStepMotor1(i % 4);
setStepMotor2(i % 4);
delay(delayTime);
}
delay(1000);
}
// Fonction moteur 1
void setStepMotor1(int step) {
digitalWrite(IN1, stepSequence[step][0]);
digitalWrite(IN2, stepSequence[step][1]);
digitalWrite(IN3, stepSequence[step][2]);
digitalWrite(IN4, stepSequence[step][3]);
}
// Fonction moteur 2
void setStepMotor2(int step) {
digitalWrite(IN5, stepSequence[step][0]);
digitalWrite(IN6, stepSequence[step][1]);
digitalWrite(IN7, stepSequence[step][2]);
digitalWrite(IN8, stepSequence[step][3]);
}
Ducoup avec sa j'arrive a faire bouger les aiguille compteur elles sont bien réglées mais une fois que j'arrive avec le code pour aller à SIM hub générée par Charles GPT ça fonctionne pas les aiguilles bougent vraiment un tout petit peu
// Moteur vitesse
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
// Moteur RPM
int IN5 = 2;Texte préformaté
int IN6 = 3;
Citation
int IN7 = 4;
int IN8 = 5;
int delayTime = 5; // vitesse du pas (ajustable pour fluidité)
// Séquence pas à pas (bipolaire)
int stepSequence[4][4] = {
{1, 0, 1, 0},
{0, 1, 1, 0},
{0, 1, 0, 1},
{1, 0, 0, 1}
};
// Nombre de pas max pour chaque moteur
const int maxSpeedSteps = 150; // vitesse
const int maxRpmSteps = 300; // RPM
// Position actuelle des moteurs
int speedCurrent = 0;
int rpmCurrent = 0;
void setup() {
Serial.begin(115200); // communication SimHub
// Broches moteur vitesse
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Broches moteur RPM
pinMode(IN5, OUTPUT);
pinMode(IN6, OUTPUT);
pinMode(IN7, OUTPUT);
pinMode(IN8, OUTPUT);
}
void loop() {
static bool expectingSpeed = true;
// Lire Serial si disponible
if (Serial.available() > 0) {
int value = Serial.parseInt(); // valeur envoyée par SimHub
if (expectingSpeed) {
// Conversion km/h -> pas moteur
speedCurrent = map(value, 10, 210, 0, maxSpeedSteps);
} else {
// Conversion RPM -> pas moteur
rpmCurrent = map(value, 0, 8000, 0, maxRpmSteps);
}
expectingSpeed = !expectingSpeed;
}
// Déplacer les moteurs selon les positions actuelles
setStepMotor(speedCurrent, IN1, IN2, IN3, IN4);
setStepMotor(rpmCurrent, IN5, IN6, IN7, IN8);
delay(delayTime);
}
// Fonction pas à pas
void setStepMotor(int step, int pin1, int pin2, int pin3, int pin4) {
step = step % 4;
digitalWrite(pin1, stepSequence[step][0]);
digitalWrite(pin2, stepSequence[step][1]);
digitalWrite(pin3, stepSequence[step][2]);
digitalWrite(pin4, stepSequence[step][3]);
}
En dessous je vais vous mettre la photo comment j'ai configuré sur simhub
Texte préformaté
