Le moteur pas à pas est un des actionneurs les plus utilisés. Il permet un positionnement assez précis pour être utilisés dans les machines-outils de moyenne gamme.

La bibliothèque AccelStepper utilisée ici peut être téléchargée et décompressée dans le répertoire « librairies ».
/***
* Auteur: Jean Demartini
* date: 13/07/2015
*
* Moteur pas à pas 5V : 28BYJ-48
*
* Ce moteur a 4 phases à activer successivement :
*
* Les sorties digitales d'un Arduino peuvent les piloter
* dans la mesure ou elles sont utilisées pour piloter
* un transistor MosFET suffisamment puissant.
*
* Moteur
* P1 P2 P3 P4 Com
* +-|--|--|--|--|-+
* | +--(-)-- GND
* | +--(+)-- Vcc(5V)
* +-|-|-|-|-------+
* 1 2 3 4
*
* 1: cP1
* 2: cP2
* 3: cP3
* 4: cP4
*
* Nota: l'alimentation fournie par le port USB n'est pas suffisante,
* il faut utiliser une alimentation annexe (5V-1A par exemple).
***/
#include "AccelStepper.h"
#define HALFSTEP 8 // Motor pin definitions
#define phi_1 3 // IN1 sur ULN2003 driver 1
#define phi_2 4 // IN2 sur ULN2003 driver 1
#define phi_3 5 // IN3 sur ULN2003 driver 1
#define phi_4 6 // IN4 sur ULN2003 driver 1
// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
AccelStepper stepper1(HALFSTEP, phi_1, phi_3, phi_2, phi_4);
void setup() {
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(100.0);
stepper1.setSpeed(300);
stepper1.moveTo(1000);
}
void loop() {
//Change direction when the stepper reaches the target position
if (stepper1.distanceToGo() == 0) {
stepper1.moveTo(-stepper1.currentPosition());
}
stepper1.run();
}