Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <AccelStepper.h>
- #define ENA_PIN Q0_2
- #define DIR_PIN Q0_1
- #define PUL_PIN Q0_0
- #define ArretRotation I0_6 //Sortie sécurité en cas d'arrêt de rotation arbre
- #define Signal I0_5 //Entrée signal depart
- #define CtrlRotation I0_4 //Entrée contrôle de rotation d'arbre
- #define VitMoins I0_3 //Entrée diminution de la vitesse de rotation
- #define VitPlus I0_2 //Entrée augmentation de la vitesse de rotation
- bool bButtonPressed = false;
- AccelStepper stepper(AccelStepper::DRIVER, PUL_PIN, DIR_PIN);
- LiquidCrystal_I2C lcd(0x27, 20, 4); //Set the LCD Adress to 0x27 for a 16 chars and 2 line display
- int Vitesse = 0;
- void IRAM_ATTR onButton0Event() {
- Vitesse = Vitesse + 5; // quelle est la vitesse max ?
- bButtonPressed = true;
- }
- void IRAM_ATTR onButton1Event() {
- Vitesse = Vitesse - 5; // quelle est le minimum ?
- bButtonPressed = true;
- }
- void setup() {
- Wire.begin();
- Serial.begin(9600);
- lcd.begin(20, 4);
- lcd.backlight();
- pinMode(ENA_PIN, OUTPUT);
- pinMode(Signal, INPUT);
- pinMode(VitPlus, INPUT);
- pinMode(VitMoins, INPUT);
- pinMode(CtrlRotation, INPUT);
- pinMode(ArretRotation, OUTPUT);
- attachInterrupt(digitalPinToInterrupt(VitPlus), onButton0Event, RISING); // sur Arduino, interruptions seulement sur 2 et 3
- attachInterrupt(digitalPinToInterrupt(VitMoins), onButton1Event, RISING); // sur ESP32, beaucoup plus de possibilités
- digitalWrite(ENA_PIN, LOW); //Active le driver
- stepper.setAcceleration(500);
- }
- void loop() {
- if (bButtonPressed) {
- bButtonPressed = false;
- stepper.setMaxSpeed(Vitesse);
- Serial.println(Vitesse);
- displayValues(Vitesse);
- }
- if(digitalRead(Signal) == HIGH){
- Moteur();
- }
- }
- void Moteur(){
- stepper.move(5000);
- stepper.run();
- if(stepper.distanceToGo() == 0){
- digitalWrite(ENA_PIN, HIGH);
- }
- else {
- digitalWrite(ENA_PIN, LOW);
- }
- }
- void displayValues(int Vitesse) {
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("TEST");
- lcd.setCursor(1, 1);
- lcd.print("Reglage vitesse");
- lcd.setCursor(3, 3);
- lcd.print("Vitesse : ");
- lcd.print(Vitesse);
- // delay(50); // devenu inutile, n'est appelé que si changement
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement