Alors on « code »…eh oui, même si le microcontroleur n’est pas encore disponible, nous allons commencer à assembler les « bouts de code » qui vont être utilisés dans l’objet final.

Nous allons utiliser le logiciel arduino pour écrire notre code, puis le compiler et le transférer dans la mémoire du microcontrôleur. Cet « IDE » peut être téléchargé gratuitement sur le site arduino. Notre version est déja un peu ancienne, mais sauf si vous avez la toute dernière (v2), ça ne devrait pas poser de problème.

Notre prototype utilise un moteur pas à pas, et probablement un module « RTC » et un détecteur « PIR ». Chacun de ces modules, pour être utilisé par l’arduino, nécessite une « bibliothèque », un morceau de code qui « explique » au microcontrôleur comment l’utiliser.

Je suppose que vous avez téléchargé puis installé l’IDE, ainsi que les pilotes.

Vous voyez que j’utilise la version 1.8.1, que j’écris cet article le 13 mars, que je me prépare à compiler le code pour une carte arduino nano (et bien qu’elle ne soit pas branchée, l’IDE la « voit » sur le port com27).






Il faut que je vous avoue que je n’ai jamais programmé un moteur pas à pas. Je les vois en action sur la fraiseuse ou l’imprimante 3d, mais je n’ai pas regardé le code. Alors…recherche ! Il y a des tonnes de tutos arduino, à commencer par le site arduino.cc bien sûr. Mot clé et 28BYJ-48 et ULN2003, soit la référence du moteur pas à pas et de son pilote.

Pour le cablage c’est simple puisqu’il y a un « détrompeur » (encoches qui empêchent de brancher à l’envers). Code pour faire tourner le moteur d’un tour dans un sens, puis un tour dans l’autre sens:

Remarque: il faut une alimentation externe pour le driver et le moteur. Les brancher directement sur le 5V de l’arduino risque d’endommager ce dernier.

#include <Stepper.h>
// Definit le nombre de "pas" par rotation:
const int stepsPerRevolution = 2048;
// Cablage:
// Pin 8 -->IN1 du driver ULN2003 
// Pin 9 -->IN2 du driver ULN2003 
// Pin 10 -->IN3 du driver ULN2003 
// Pin 11 -->IN4 du driver ULN2003 
// Cree un objet stepper nommé 'myStepper', noter l'ordre des pins:
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
  // Fixe la vitesse à 100 rpm:
  myStepper.setSpeed(100);
  
  // Démarre la communication serie à 9600 baud:
  Serial.begin(9600);
}
void loop() {
  // Une révolution dans le sens des aiguilles d'une montre
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
  
  // Une révolution dans l'autre sens
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *