Arrêté l’incrémentation/décrémentation d’un bouton sur écran tft

Bonjour a Tous
A ceux qui me répondront sachez que je débute, et qu’avant de vous poser mon problème j’ai parcouru divers blogs et tutos, sans trouver réponse a mes questions, soyer donc indulgent, merci.

Je viens de réalisé un montage avec une Arduino méga, un écran tft Nextion , une barrette de huit néopixels et un potentiomètre.
Le but du montage est que quand on tourne le potentiomètre les néopixels s’allume les une dernier les autres et arrivé a une certaine valeur change de couleur et s’allume toutes en même temps, un peu comme un shift light moto.
Jusque la pas de problème, le montage et le code qui va avec fonctionne.
Je veux y ajouter une option, deux boutons un + et un - a l’aide de l’écran Nextion, incrémenter et décrémenter l’intensité lumineuse des néopixels,
la aussi pas de problème j’arrive a incrémenter et décrémenter l’intensité lumineuse, mais… je n’arrive pas a arrêter l’incrémentation quand elle a atteint ses extèmes qui est comprise entre 0 et 255, je que cherche est que quant l’incrémentation a atteint ses extrêmes et que même si on continu d’appuyer sur le bouton + de l’écran, la variable arrête de s’incrémenter et inversement pour la décrémentation.

J’ai essayé plusieurs méthodes avec des tests conditionnels mais sans résultat, je dois passer à coté de quelque chose, si une bonne âme pourrait me mettre sur une piste, ça me ferais avancé, merci.

#include <Adafruit_NeoPixel.h>
#include <Nextion.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, 6, NEO_GRB + NEO_KHZ800);
//----------------------------------------------------------------------
#define nextion Serial
//----------------------------------------------------------------------
Nextion myNextion(nextion, 9600);
//----------------------------------------------------------------------
unsigned char valLum = 0;
int rpm = 0;
int g = 0;
int r = 0;
int b = 0;
//----------------------------------------------------------------------
void setup()
{
  Serial.begin(9600);
  myNextion.init();
  strip.begin();
  strip.show();
  pinMode(A2, INPUT);
  valLum =120 ; //initialisazation a 120 
}
//----------------------------------------------------------------------
void loop()
{
  String message = myNextion.listen(); //check du message
  Serial.println(message);  

  {
  if (message == "65 2 1 1 ffff ffff ffff") // appuis sur bouton + tft
  {
    valLum=valLum+9;  
    Serial.print("valLum vaut");
    Serial.println(valLum);    
  }
     
  if (message == "65 2 2 0 ffff ffff ffff") // appuis sur bouton - tft
  {
    valLum=valLum-9;
    Serial.print("valLum vaut");
    Serial.println(valLum);
  }
  delay(200);// pour test




  rpm = (analogRead(A2));
  strip.setBrightness(valLum);

  r = 0;
  for (r; r < 0;)
  {
    (r = 0);
  }
  for (r; r > 255;)
  {
    (r = 255);
  }

  g = (0.35 * rpm) - 30;
  for (g; g < 0;)
  {
    (g = 0);
  }
  for (g; g > 170;)
  {
    (g = 170);
  }


  if (rpm > 120) 
  {strip.setPixelColor(0, r, g, 0);}
  else 
  {strip.setPixelColor(0, 0, 0, 0);}
  
  if (rpm > 240) 
  {strip.setPixelColor(1, r, g, 0);}
  else 
  {strip.setPixelColor(1, 0, 0, 0);}
  
  if (rpm > 360) 
  {strip.setPixelColor(2, r, g, 0);}
  else 
  {strip.setPixelColor(2, 0, 0, 0);}
  
  if (rpm > 480) 
  {strip.setPixelColor(3, r, g, 0);}
  else 
  {strip.setPixelColor(3, 0, 0, 0);}
  
  if (rpm > 600) 
  {strip.setPixelColor(4, 0, 255, 0);}
  else 
  {strip.setPixelColor(4, 0, 0, 0);}
  
  if (rpm > 720) 
  {strip.setPixelColor(5, 255, 255, 0);}
  else 
  {strip.setPixelColor(5, 0, 0, 0);}
  
  if (rpm > 840) 
  {strip.setPixelColor(6, 255, 255, 0);}
  else 
  {strip.setPixelColor(6, 0, 0, 0);}
  
  if (rpm > 970) 
  {strip.setPixelColor(7, 255, 0, 0);}
  else 
  {strip.setPixelColor(7, 0, 0, 0);}

  if (rpm > 1000) 
  {
    for (int i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, 255, 0, 0);
    }
    strip.show();
    delay(50);
    
    for (int i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, 0, 0, 0);
    }
    strip.show();
    delay(50);
  }
  strip.show();
 }
}
1 Like

POURQUOI VOUS POSTEZ DEUX FOIS???

demandez au modérateur de fusionner vos post SVP. ça duplique (et démotive) les bénévoles qui voudraient bien vous aider et montre peu de respect pour la communauté…

Bonjour

c'est une erreur de manipulation suite a une interruption de connexion de ma box, et non par manque de respect, désoler.
Donc si le modérateur veut bien fusionner les messages, merci par avance.

Cordialement