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ème 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 for 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();
}
}