Contrôle de moteur pas-à-pas par commande permettant de développer le couple maximal

Le programme ci-dessous permet de contrôler un moteur pas-à-pas 28BYJ-48 avec un contrôleur ULN2003 de la manière à ce qu'il développe tout son couple :

1
int IN1 = 8;      // pin digital 8 relié à IN1
2
int IN2 = 9;      // pin digital 9 à IN2
3
int IN3 = 10;     // pin digital 10 à IN3
4
int IN4 = 11;     // pin digital 11 à IN4
5
int temps = 20;  // temps entre les pas, minimum 10 ms.
6
// Array bidimensionnel indiquant la séquence des pas
7
int pas [4][4] ={
8
  {1, 1, 0, 0},
9
  {0, 1, 1, 0},
10
  {0, 0, 1, 1},
11
  {1, 0, 0, 1}
12
};
13
14
void setup(){
15
  // tous les pins se configurent comme sorties
16
  pinMode(IN1, OUTPUT);
17
  pinMode(IN2, OUTPUT);
18
  pinMode(IN3, OUTPUT);
19
  pinMode(IN4, OUTPUT);
20
}
21
22
void loop(){
23
  // 512*4 = 2048 pas
24
  for (int i = 0; i < 512; i++){
25
    // boucle repasse le array ligne à ligne
26
    for (int i = 0; i < 4; i++){
27
      // valeurs qu'on va appliquer
28
      digitalWrite(IN1, pas[i][0]);
29
      digitalWrite(IN2, pas[i][1]);
30
      digitalWrite(IN3, pas[i][2]);
31
      digitalWrite(IN4, pas[i][3]);
32
      delay(temps);
33
    }
34
  }
35
  // pause de 5 secondes
36
  digitalWrite(IN1, LOW);
37
  digitalWrite(IN2, LOW);
38
  digitalWrite(IN3, LOW);
39
  digitalWrite(IN4, LOW);
40
  delay(temps);
41
}

Dans ce cas, les bobines sont pilotées ainsi :

Question : Téléversez le code, et constatez le fonctionnement