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);
}
/////////////////////////////////////////////////////////////////