Problème avec code lampe stroboscopique

Bonjour le forum !!
Je débute sur arduino et j'essai au si bien que mal de réalisé mon premier petit projet : une mini lampe stroboscopique ou le délai d'oscillation des 2 leds serai modifier par un encoder rotatif mais j'ai l'impression que mes custom voids ne sont pas appeler ou quelque chose comme ça.. Pourriez-vous juste prendre un moment de votre temps pour analyse à la vite fait mon code et me dire ce qui est améliorable et surtout purquoi cela ne fonctionne pas..???? Merci beaucoup d'avance !!!

/////////////////////////////////////////////////////////////////

#include "ESPRotary.h";

/////////////////////////////////////////////////////////////////

#define ROTARY_PIN1	14
#define ROTARY_PIN2	12
int LEDS_LEFT = 5;
int LEDS_RIGHT = 4;
int CONSIGNE_MS = 25;
int CONSIGNE_MAX_STROB = 600;
int CONSIGNE_MIN_STROB = 3;
int CONSIGNE_ARRET = 0;
int CONSIGNE_MARCHE = 999;
int ARRET = 1;
int MARCHE_NORMAL = 0;
int MARCHE_STROBO = 0;


/////////////////////////////////////////////////////////////////

ESPRotary r = ESPRotary(ROTARY_PIN1, ROTARY_PIN2);

/////////////////////////////////////////////////////////////////



void setup() {
  Serial.begin(115200);
  delay(50);

//   Partie Led
  pinMode(LEDS_LEFT, OUTPUT);
   pinMode(LEDS_RIGHT, OUTPUT);

  Serial.println("\n\nTest stroboscope");
  
//   Partie Rotary encoder
  r.setChangedHandler(rotate);
  r.setLeftRotationHandler(showDirection);
  r.setRightRotationHandler(showDirection);


}

void loop() {

  r.loop();
  if (ARRET = 1){
    V_ARRET();
  } else if (MARCHE_STROBO = 1){
    V_MARCHE_STROBO();
  } else if (MARCHE_NORMAL = 1){
    V_MARCHE_NORMAL();
  }
}

/////////////////////////////////////////////////////////////////

// on change
void rotate(ESPRotary& r) {  
if (r.getPosition()<=CONSIGNE_MIN_STROB){
CONSIGNE_MS = CONSIGNE_ARRET;
MARCHE_NORMAL = 0;
MARCHE_STROBO = 0;
ARRET = 1;
} else if ((r.getPosition()>=CONSIGNE_MIN_STROB)&&(r.getPosition()<=CONSIGNE_MAX_STROB-1)){
CONSIGNE_MS = r.getPosition();
ARRET = 0;
MARCHE_NORMAL = 0;
MARCHE_STROBO = 1;
} else if (r.getPosition()>=CONSIGNE_MAX_STROB){
CONSIGNE_MS = CONSIGNE_MARCHE;
ARRET = 0;
MARCHE_STROBO = 0;
MARCHE_NORMAL = 1;
}

// Serial.println(r.getPosition());

Serial.print("Consigne : ");
Serial.print(CONSIGNE_MS);
Serial.print(", Mode arret = ");
Serial.print(ARRET);
Serial.print(", Mode marche normal = ");
Serial.print(MARCHE_NORMAL);
Serial.print(", Mode stroboscopque = ");
Serial.println(MARCHE_STROBO);
}

// on left or right rotattion
void showDirection(ESPRotary& r) {
 // Serial.println(r.directionToString(r.getDirection()));
}

void V_ARRET(){
//Serial.println("Mise en arrêt de la lampe");
  digitalWrite(LEDS_LEFT, LOW);    // Met les leds coté gauche à LOW
  digitalWrite(LEDS_RIGHT, LOW);    // Met les leds coté droite à LOW
}

void V_MARCHE_NORMAL(){
//Serial.println("Mise en marche de la lampe en mode stroboscopique");
  digitalWrite(LEDS_LEFT, HIGH);    // Met les leds coté gauche à HIGH
  digitalWrite(LEDS_RIGHT, HIGH);    // Met les leds coté gauche à HIGH
}

void V_MARCHE_STROBO(){
//Serial.println("Mise en marche de la lampe en mode normal"); 
 digitalWrite(LEDS_LEFT, HIGH);   // Met les leds coté gauche à HIGH
 delay(CONSIGNE_MS);                       // wait for a second
 digitalWrite(LEDS_LEFT, LOW);    // Met les leds coté gauche à LOW
 delay(CONSIGNE_MS); 
}

/////////////////////////////////////////////////////////////////

= c'est une affectation
== c'est un test d'égalité

Il est d'usage de réserver les majuscules pour les macro. Les variables s'écrivent généralement en minuscule. Ce n'est pas une obligation c'est plutôt une bonne pratique.

Je me sens mauvais... :flushed: Merci beaucoup !!!

un moment de honte est vite passé :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.