Commande d'un moteur pas à pas

1. Description

Dans ce tuto, nous allons montrer comment actionner un moteur pas à pas à l'aide d'une carte Arduino et d'un driver ULN2003.
La rotation du moteur s'effectue en suivant le tableau suivant :

Couleur des fils Rotation
1 2 3 4 5 6 7 8
orange actif actif actif
jaune actif actif actif
rose actif actif actif
bleu actif actif actif

2. Câblage de la carte Arduino

3. Programme de base pour la compréhension

// Définition des numéros de broches que nous utilisons.
int Pin0 = 10;
int Pin1 = 11;
int Pin2 = 12;
int Pin3 = 13;
int pasMoteur = 0;

void setup()
{
    // Configurer l'ensemble des broches utilisées en sortie.
    pinMode(Pin0, OUTPUT);
    pinMode(Pin1, OUTPUT);
    pinMode(Pin2, OUTPUT);
    pinMode(Pin3, OUTPUT);
}

void loop()
{
// Mise en rotation du moteur.
    switch(pasMoteur)
    {
        case 0:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, HIGH);
        break;
        case 1:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, HIGH);
            digitalWrite(Pin3, HIGH);
        break;
        case 2:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, HIGH);
            digitalWrite(Pin3, LOW);
        break;
        case 3:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, HIGH);
            digitalWrite(Pin2, HIGH);
            digitalWrite(Pin3, LOW);
        break;
        case 4:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, HIGH);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, LOW);
        break;
        case 5:
            digitalWrite(Pin0, HIGH);
            digitalWrite(Pin1, HIGH);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, LOW);
        break;
        case 6:
            digitalWrite(Pin0, HIGH);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, LOW);
        break;
        case 7:
            digitalWrite(Pin0, HIGH);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, HIGH);
        break;
        default:
            digitalWrite(Pin0, LOW);
            digitalWrite(Pin1, LOW);
            digitalWrite(Pin2, LOW);
            digitalWrite(Pin3, LOW);
        break;
    }
    pasMoteur++;
    if(pasMoteur > 7)
    {
        pasMoteur = 0;
    }
    delay(1)
}