Bonjour,
Avec ce code, je souhaite commander un moteur pas à pas LIEN via le port série. J'ai essayé avec une Uno et Mega et j'ai le même problème; La Uno ne dépasse pas positionMoteur 87 et la mega positionMoteur 391.
int positionMoteur = 0;
int consigneMoteur = 0;
#define motorPin1 8
#define motorPin2 9
#define motorPin3 10
#define motorPin4 11
#define pause_entre_pas 5 // ms
void setup()
{
Serial.begin(9600);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
if(Serial.available())
{
consigneMoteur = Serial.readString().toInt();
if(consigneMoteur > positionMoteur)
{
mvt_moteur("av");
}
if(consigneMoteur < positionMoteur)
{
mvt_moteur("ar");
}
}
delay(100);
}
void mvt_moteur(String sens)
{
if((positionMoteur % 4) == 0)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
if((positionMoteur % 4) == 1)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
if((positionMoteur % 4) == 2)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
if((positionMoteur % 4) == 3)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
if(sens == "av")
{
positionMoteur++;
}
if(sens == "ar")
{
positionMoteur--;
}
// Serial.print(consigneMoteur);
// Serial.print(" ");
Serial.println(positionMoteur);
delay(pause_entre_pas);
if(consigneMoteur > positionMoteur)
{
mvt_moteur("av");
}
if(consigneMoteur < positionMoteur)
{
mvt_moteur("ar");
}
}