#include <Stepper.h> // Inclure la bibliothèque pour le contrôle des moteurs pas à pas
#include <Toggle.h> // Inclure la bibliothèque pour gérer les boutons à bascule
#include <Wire.h> // Inclure la bibliothèque pour la communication I2C
#include <LiquidCrystal_I2C.h> // Inclure la bibliothèque pour contrôler les écrans LCD via I2C
#define PasMax 3000 // Definir Pas à faire pour finir la rail
int position = 0; // Définir la position à 0
Stepper moteur(PasMax, 8, 9, 10, 11); // Créer un objet Stepper avec les broches 8, 9, 10, 11
const byte pinFdcDroite = 3; // Définir la broche du fin de course droite
const byte pinFdcGauche = 2; // Définir la broche du fin de course gauche
const byte arret = 4;
bool moteurPas = true; // Variable pour gérer le sens de rotation du moteur
const byte potPin = A0; // Définir la broche du potentiomètre
unsigned long Pas, dernierPas; // Variables pour enregistrer la vitesse et le dernier pas effectué
unsigned long MinV = 3000; // Définir la valeur minimale de vitesse
unsigned long MaxV = 0; // Définir la valeur maximale de vitesse
int motor_speed = 0; // Variable pour stocker la vitesse du moteur
int nbPas = 20; // Nombre de pas par action
int temps = 100; // temps entre nbPas
Toggle fdcDroite, fdcGauche; // Créer des objets Toggle pour les fins de course
LiquidCrystal_I2C lcd(0x27, 16, 2); // Créer un objet LiquidCrystal_I2C pour l'écran LCD
void setup() {
Serial.begin(115200); // Initialiser la communication série à 11520
fdcDroite.begin(pinFdcDroite); // Initialiser le fin de course droite
fdcGauche.begin(pinFdcGauche); // Initialiser le fin de course gauche
lcd.init(); // Initialiser l'écran LCD
lcd.backlight(); // Activer le rétroéclairage de l'écran LCD
lcd.clear(); // Effacer l'écran LCD
}
void actualiserVitesse () {
temps = map(potPin, 0, 1023, 250, 10);
motor_speed = map(nbPas, MinV, MaxV, 0, 100);
lcd.setCursor(1, 0); // Placer le curseur sur l'écran LCD
lcd.print("Slider pour camera"); // Afficher le texte sur l'écran LCD
lcd.setCursor(4, 2); // Placer le curseur sur la deuxième ligne
lcd.print("Vitesse: "); // Afficher le texte "Vitesse:"
lcd.print(motor_speed); // Afficher la vitesse du moteur
lcd.print("% ");
}
void loop() {
while(position < PasMax && arret) {
actualiserVitesse();
moteur.step(nbPas);
position = position + nbPas;
delay(temps);
}
}