programmation moteur pas à pas+interruption
![smiley :)](https://forum.arduino.cc/smileys/arduino/smiley.gif)
bonjour , nouveau sur le site car je débute sur arduino et je tente de programmer la marche d'un moteur pas à pas.
j'utilise un easydriver et n'ai besoin que de 2 port de sortie.
les programmes style stepper avec un tour en avant , un tour en arrière fonctionne parfaitement.
j'ai donc voulu faire mon propre programme avec un potentiomètre pour la vitesse, un bouton reset, un capteur de point zero, le tout gérant un disque rotatif.
le est simple: si j'appuie sur reset , le moteur fait tourner le disque jusqu'à détecter le point zéro (avec variation de la vitesse par potentiomètre)
voici mon programme:
int reset=0; // bouton reset
void setup() {
pinmode(3, output); //step
pinmode(2, output); //dir
pinmode(5, input); //zero
pinmode(6, input); //reset
digitalwrite(3, low);
digitalwrite(2, low);
serial.begin(9600);
}
void loop() {
int vitesse = analogread(a0); // lecture du potentiometre
if (digitalread(6)== 1) { reset = 1; } // active le mode reset
if (reset=1) {
digitalwrite(3, high);
delaymicroseconds(100+vitesse);
digitalwrite(3, low);
delaymicroseconds(100+vitesse);
delay(5);
if (digitalread(5)== 1) { reset = 0; }// desactivation du rest si position zéro
}
}
![smiley-sad-blue :smiley-sad-blue:](https://forum.arduino.cc/smileys/arduino/smiley-sad-blue.png)
la lecture du potentiomètre ne fonctionne pas, le reset et le point zéro n'ont pas d'influence, et le moteur tourne tout seul.
si je comprend pourquoi, grace à vous, je peut continuer mon programme et m'en sortir tout seul....le étant de faire un plateau tournant au 1/10eme de degré, ordre donné par un pc, dans un sens comme dans l'autre.
merci d'avance pour vos réponses xd
salut, pleins de choses à dire !
premièrement, le code on le met etre des balises code (le bouton #)
ensuite :
on ne met pas le numéro de pin en plein milieu du code, on met soit des préprocesseur soit des variables sinon c'est illisible
il manque un =, là tu donne à reset la valeur 1
en général, on met == high et non 1
dans ton code, reset prend toujours la valeur 0 ou 1, pourquoi utiliser un int (2 octets) alors qu'un boolean (1 octet) suffirait ?
après, je ne connais pas le fonctionnement d'un moteur pas à pas et tu n'as pas fourni de schéma donc je ne peux pas plus t'aider![wink ;)](https://forum.arduino.cc/smileys/arduino/wink.gif)
premièrement, le code on le met etre des balises code (le bouton #)
ensuite :
on ne met pas le numéro de pin en plein milieu du code, on met soit des préprocesseur soit des variables sinon c'est illisible
if (reset=1) {
il manque un =, là tu donne à reset la valeur 1
if (digitalread(6)== 1) { reset = 1; } // active le mode reset
en général, on met == high et non 1
int reset=0; // bouton reset
dans ton code, reset prend toujours la valeur 0 ou 1, pourquoi utiliser un int (2 octets) alors qu'un boolean (1 octet) suffirait ?
après, je ne connais pas le fonctionnement d'un moteur pas à pas et tu n'as pas fourni de schéma donc je ne peux pas plus t'aider
![wink ;)](https://forum.arduino.cc/smileys/arduino/wink.gif)
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > programmation moteur pas à pas+interruption
arduino
Comments
Post a Comment