Bonjour,
je débute en arduino et ceci est mon premier post lié à la programmation (aprés quelque déboire entre mon laptop et une simili leonardo olimex).
Je réalise actuellement une structure pour scanner 3D. Pour cela je dois équipé un plateau d'un moteur pas à pas qui tournera entre chaque prise d'image du scaner mais pour l'instant le programme ne marche pas.
J'essaie de réaliser bout par bout, donc pour l'instant je simule les changements de bobine avec des leds mais y a une couil.. dans le potage et je pense que c'est moi ![]()
Alors je sais qu'il y a super simple pour ça avec la librairie mais je ne doit pas l’utiliser.
Donc mon code pour l'instant sert juste à rentrer une valeur via le terminal serie et faire changer de bobine
const int A_1=2 ; //bobineA1
const int A_2=3 ; //bobineA2
const int B_1=4 ; //bobineB1
const int B_2=5 ; //bobineB2
int Deplacement = 0;
int Position = 0 ;// la constant position sert a garder en mémoire l’emplacement du moteur
// pour repartir au pas suivant
void setup()
{
pinMode (A_1,OUTPUT) ; // mise en sortie des pins pour le controle des bobines
pinMode (A_2,OUTPUT) ;
pinMode (B_1,OUTPUT) ;
pinMode (B_2,OUTPUT) ;
Serial.begin(9600);
}
void loop()
{
if (Serial.available() != 0)
{Deplacement = Serial.read();}
mouvement_pap(Deplacement,Position) ;
}
int mouvement_pap(int x, int Mouvement)
{
if (x>=0)
{
for (int i=1 ; i<= x ; i++)
{
Mouvement = Mouvement+i;
if( Mouvement>4)
{
Mouvement=Mouvement%4 ;
if (Mouvement==0) {Mouvement=4 } ;}
} //permet de rester dans l’intervalle 1 à 4
Changement_de_pas(Mouvement) ;
}
}
else
{
for (int i=-1 ; i>=x ; i--)
{
Mouvement =Mouvement+ i ;
if (Mouvement < -4)
{
Mouvement=Mouvement%4 ;
if (Mouvement==0) {Mouvement=1 ;}
}
Changement_de_pas(Mouvement) ;
}
}
return Mouvement ;
}
int Changement_de_pas(int p)
{
switch(p)
{
case 1 :
digitalWrite(A_2, LOW) ;
digitalWrite(B_1, LOW) ;
digitalWrite(B_2, LOW) ;
digitalWrite(A_1, HIGH) ;
break;
case 2 :
digitalWrite(A_2, LOW) ;
digitalWrite(A_1, LOW) ;
digitalWrite(B_2, LOW) ;
digitalWrite(B_1, HIGH) ;
break;
case 3 :
digitalWrite(A_1, LOW) ;
digitalWrite(B_1, LOW) ;
digitalWrite(B_2, LOW) ;
digitalWrite(A_2, HIGH) ;
break;
case 4 :
digitalWrite(A_1, LOW) ;
digitalWrite(B_1, LOW) ;
digitalWrite(B_2, LOW) ;
digitalWrite(A_2, HIGH) ;
break;
default :
break;
}
digitalWrite(A_1, LOW) ; //remise à 0 des bobines
digitalWrite(B_1, LOW) ;
digitalWrite(B_2, LOW) ;
digitalWrite(A_2, LOW) ;
}
j'ai beau retourner tous ça dans ma tête mais je ne vois pas mon erreur ( mais celle de mes parents si
)
tous petit coup de main est bon à prendre
merci d'avance et bon week-end de paques