Les entrées IN1, IN2, IN3 et IN4 du module de contrôle sont reliées respectivement aux pins 8, 9, 10 et 11 de l’arduino.
Le module est alimenté en 5 V entre VCC et GND.
L’interrupteur (ou le cavalier) est en position VCC.
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);
}