programmation moteur pas à pas+interruption


:)
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: rien ne va plus.....
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



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  ;)


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > programmation moteur pas à pas+interruption


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62