Comment bloqué une valeur qui tourne en boucle

Résolu/Fermé
cybermania Messages postés 519 Date d'inscription lundi 10 août 2009 Statut Membre Dernière intervention 25 mars 2017 - 16 mars 2017 à 17:16
cybermania Messages postés 519 Date d'inscription lundi 10 août 2009 Statut Membre Dernière intervention 25 mars 2017 - 25 mars 2017 à 16:48
Bonjour,

Je commence dans la programmation,
Je souhaite commander une led RGB via une télécommande. (on/off, intensité, différente couleurs). Pour le On/Off c'est ok pour les couleurs on vera aprés.

Mon But:
quand je fait v+ l'intensité augmente
quand je fait v- l'intensité diminue

j'ai réussi à programmer les touches, ainsi que l’intensité en pas de 51.
J'ai donc 5 intensité différentes.
Mais temps que j’appuie sur v+ ma valeur augmente.
(exemple: 0,51,102,153,204,255,50,101,152,203,254)
J'ai donc un décalage. Je souhaiterais que quand je fait v+ la valeur bloque à 255 et ne recommence pas une boucle et de même quand je fait v- la valeur bloque à 0.

Merci de votre aide.

code:
void loop() {
Serial.println (intensiteRouge);
ledRVBpwm (1,0,0);

if (irrecv.decode(&results)) {
if (results.value==0x86603777||results.value==0xAF548B7){
intensiteRouge=intensiteRouge+51;
}
}
if (irrecv.decode(&results)) {
if (results.value==0xAF5A857||results.value==0x36B15F9B){
intensiteRouge=intensiteRouge-51;
}
irrecv.resume();
}
}
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
16 mars 2017 à 21:44
Bonjour,

On peut utiliser la particularité que quand un non signé dépasse, le résultat est inférieur à la source si addition (et supérieur si soustraction).
d'où
unsigned char x = intensiteRouge + 51;
intensiteRouge = ( x < intensiteRouge ) ? 255 : x; // plafonner si overflow
// et
unsigned char x = intensiteRouge - 51;
intensiteRouge = (x > intensiteRouge ) ? 0 : x; // limiter si underflow
0
cybermania Messages postés 519 Date d'inscription lundi 10 août 2009 Statut Membre Dernière intervention 25 mars 2017 32
25 mars 2017 à 16:48
Merci pour ta réponse ! Le problème est résolu !
désole je n'est pas vue le poste avant je m’était penché sur un autre programme...
0