Comment bloqué une valeur qui tourne en boucle
Résolu
cybermania
Messages postés
519
Date d'inscription
Statut
Membre
Dernière intervention
-
cybermania Messages postés 519 Date d'inscription Statut Membre Dernière intervention -
cybermania Messages postés 519 Date d'inscription Statut Membre Dernière intervention -
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();
}
}
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:
- Comment bloqué une valeur qui tourne en boucle
- Code puk bloqué - Guide
- Téléphone bloqué code verrouillage - Guide
- Pavé tactile bloqué - Guide
- Compte gmail bloqué - Guide
- Comment savoir si on est bloqué sur messenger - Guide
1 réponse
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ù
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
désole je n'est pas vue le poste avant je m’était penché sur un autre programme...