Advertisement
DuboisP

Untitled

Dec 8th, 2024
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | Source Code | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <AccelStepper.h>
  4.  
  5. #define ENA_PIN Q0_2
  6. #define DIR_PIN Q0_1
  7. #define PUL_PIN Q0_0
  8.  
  9. #define ArretRotation I0_6   //Sortie sécurité en cas d'arrêt de rotation arbre
  10. #define Signal I0_5          //Entrée signal depart
  11. #define CtrlRotation I0_4    //Entrée contrôle de rotation d'arbre
  12. #define VitMoins I0_3        //Entrée diminution de la vitesse de rotation
  13. #define VitPlus I0_2         //Entrée augmentation de la vitesse de rotation
  14.  
  15. bool bButtonPressed = false;
  16.  
  17. AccelStepper stepper(AccelStepper::DRIVER, PUL_PIN, DIR_PIN);
  18. LiquidCrystal_I2C lcd(0x27, 20, 4);   //Set the LCD Adress to 0x27 for a 16 chars and 2 line display
  19.  
  20. int Vitesse = 0;
  21.  
  22.  
  23. void IRAM_ATTR onButton0Event() {
  24.    Vitesse = Vitesse + 5;        // quelle est la vitesse max ?
  25.    bButtonPressed = true;
  26. }
  27.  
  28. void IRAM_ATTR onButton1Event() {
  29.    Vitesse = Vitesse - 5;        // quelle est le minimum ?
  30.    bButtonPressed = true;
  31. }
  32.  
  33.  
  34. void setup() {
  35.   Wire.begin();
  36.   Serial.begin(9600);
  37.  
  38.   lcd.begin(20, 4);
  39.   lcd.backlight();
  40.  
  41.   pinMode(ENA_PIN, OUTPUT);
  42.   pinMode(Signal, INPUT);
  43.   pinMode(VitPlus, INPUT);
  44.   pinMode(VitMoins, INPUT);
  45.   pinMode(CtrlRotation, INPUT);
  46.   pinMode(ArretRotation, OUTPUT);
  47.  
  48.   attachInterrupt(digitalPinToInterrupt(VitPlus), onButton0Event, RISING);    // sur Arduino, interruptions seulement sur 2 et 3
  49.   attachInterrupt(digitalPinToInterrupt(VitMoins), onButton1Event, RISING);   // sur ESP32, beaucoup plus de possibilités
  50.  
  51.   digitalWrite(ENA_PIN, LOW);  //Active le driver
  52.  
  53.   stepper.setAcceleration(500);
  54. }
  55.  
  56. void loop() {
  57.  
  58.    if (bButtonPressed) {
  59.       bButtonPressed = false;
  60.       stepper.setMaxSpeed(Vitesse);
  61.       Serial.println(Vitesse);
  62.       displayValues(Vitesse);
  63.   }
  64.  
  65.   if(digitalRead(Signal) == HIGH){
  66.     Moteur();
  67.   }
  68. }
  69.  
  70. void Moteur(){
  71.  
  72.   stepper.move(5000);
  73.   stepper.run();
  74.  
  75.   if(stepper.distanceToGo() == 0){
  76.     digitalWrite(ENA_PIN, HIGH);
  77.   }
  78.   else {
  79.     digitalWrite(ENA_PIN, LOW);
  80.   }
  81. }
  82.  
  83. void displayValues(int Vitesse) {
  84.   lcd.clear();
  85.  
  86.   lcd.setCursor(7, 0);
  87.   lcd.print("TEST");
  88.  
  89.   lcd.setCursor(1, 1);
  90.   lcd.print("Reglage vitesse");
  91.  
  92.   lcd.setCursor(3, 3);
  93.   lcd.print("Vitesse : ");
  94.   lcd.print(Vitesse);
  95.  
  96.   // delay(50);         // devenu inutile, n'est appelé que si changement
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement