Sketch arduino pour la commande d’un moteur pas à pas

Montage

Code à téléverser

/** * moteur_pas_a_pas.ino * Ce sketch commande un moteur pas à pas 28BYJ-48-08 * Le module de commande ULN2003A est branché sur les pins 8, 9, 10 et 11 * Le module est alimenté comme suit : VCC <-> 5V et GND <-> GND. * L'interrupteur (ou le cavalier) est positionné sur VCC */ // 1. Déclarations des constantes et variables globales // Module de contrôle const byte IN1 = 8; // Broche IN1 du module de commande sur pin 8 const byte IN2 = 9; // Broche IN2 du module de commande sur pin 9 const byte IN3 = 10; // Broche IN3 du module de commande sur pin 10 const byte IN4 = 11; // Broche IN4 du module de commande sur pin 11 // Durée de pause entre pas. En ms et pause ⩾ 5 ms. const int PAUSE = 10; // La rotation n'est pas codée dans loop() Pour plusieurs tours une boucle est nécessaire // Nombre de tours const int NOMBRE_DE_TOURS = 10; // 2. Setup − Exécuté une seule fois void setup() { // Les pins 8, 9, 10 et 11 doivent être configurées en sorties (En entrée par défaut) pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); // Rotation for (int i = 0; i < 8 * NOMBRE_DE_TOURS; i++) { alimenterBobines(HIGH, LOW, LOW, LOW); // Pas A delay(PAUSE); alimenterBobines(LOW, HIGH, LOW, LOW); // Pas B delay(PAUSE); alimenterBobines(LOW, LOW, HIGH, LOW); // Pas C delay(PAUSE); alimenterBobines(LOW, LOW, LOW, HIGH); // Pas D delay(PAUSE); } // Extinction alimenterBobines(LOW, LOW, LOW, LOW); } // 3. Loop − Boucle infinie void loop() { // Nécessaire, même vide } // 4. Fonctions /** * fonction alimenterBobines * Cette fonction permet d'alimenter (HIGH) ou non (LOW) * les bobines de type A, B, C et D (dans cet ordre) * Exemple : Pour alimenter la Bobine C : alimenterBobines(LOW, LOW, HIGH, LOW); * * On peut éventuellement alimenter deux bobines simultanément * Exemple : Pour alimenter les bobines B et C : alimenterBobines(LOW, HIGH, HIGH, LOW); */ void alimenterBobines(bool a, bool b, bool c, bool d) { digitalWrite(IN1, a); digitalWrite(IN2, b); digitalWrite(IN3, c); digitalWrite(IN4, d); }