Décrémentation
Résolu
max
-
max -
max -
Bonjour,
Je ne sais pas si c'est le bon endroit pour poster n'hésitez pas à le dire, ça concerne une programmation arduino
J'ai un projet en cours à savoir un intervalomètre programmable à partir d'un clavier 12 touches et un afficheur 16x2, mais devant l'ampleur de la tâche je vais remplacer le clavier par des touches incrémentation - décrémentation - validation et départ.
La partie incrémentation fonctionne et arrivé à la valeur max on ne peut plus incrémenter ce que je recherche. Je bloque sur la partie décrémentation, je m'explique: dès que j'incrémente jusqu'à une valeur supérieur à 10, la décrémentation passe de 10 à 90-80-70 etc..
si quelqu'un a une idée je suis preneur en vous remerciant par avance
Voici le code
Je ne sais pas si c'est le bon endroit pour poster n'hésitez pas à le dire, ça concerne une programmation arduino
J'ai un projet en cours à savoir un intervalomètre programmable à partir d'un clavier 12 touches et un afficheur 16x2, mais devant l'ampleur de la tâche je vais remplacer le clavier par des touches incrémentation - décrémentation - validation et départ.
La partie incrémentation fonctionne et arrivé à la valeur max on ne peut plus incrémenter ce que je recherche. Je bloque sur la partie décrémentation, je m'explique: dès que j'incrémente jusqu'à une valeur supérieur à 10, la décrémentation passe de 10 à 90-80-70 etc..
si quelqu'un a une idée je suis preneur en vous remerciant par avance
Voici le code
#include <Adafruit_LiquidCrystal.h> Adafruit_LiquidCrystal lcd(10, 11, 5 , 4, 3, 2); #define valeurMin 1 // pour ne pas descendre en dessous de 0 #define valeurMax 30 // valeur arbitraire const int Pin_p = 7; // bouton poussoir + const int Pin_m = 8; //bouton poussoir - int Pin_plus = 0; int Pin_moins = 0; int delai = 0; //délai entre 2 prises de vue void setup(){ lcd.begin(16, 2); pinMode(7, INPUT); //la résistance de pulldown est à l'exterieur pinMode(8, INPUT); lcd.clear(); lcd.setCursor(10, 0); lcd.print("delai"); } void loop(){ lcd.setCursor(10, 1); lcd.print(delai); if (digitalRead(7) == HIGH) { if (delai < valeurMax)delai++; delay(100); while ((digitalRead(7) == HIGH)); } if (digitalRead(8) == HIGH) { if (delai > valeurMin)delai--; lcd.setCursor(10, 1); delay(100); while ((digitalRead(8) == HIGH)); } }
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je me demande si ce n'est pas un problème d'affichage:
après avoir affiché 10, tu affiches 9, mais le zéro reste présent, donc tu vois 90.
je me demande si ce n'est pas un problème d'affichage:
après avoir affiché 10, tu affiches 9, mais le zéro reste présent, donc tu vois 90.
Je note que dans ton code, tu déclares :
Mais que tu utilises directement les valeurs numériques ailleurs dans le code :
digitalRead(7)
const int Pin_p = 7; // bouton poussoir + const int Pin_m = 8; //bouton poussoir - int Pin_plus = 0; int Pin_moins = 0;
Mais que tu utilises directement les valeurs numériques ailleurs dans le code :
digitalRead(7)
Dans le 2ème if j’ai intercalé ce bout de code, ça à l'air de fonctionner
if (digitalRead(8) == HIGH) {
if (delai > valeurMin)delai--;
lcd.clear();
lcd.setCursor(10, 0);
lcd.print("delai");
lcd.setCursor(10, 1);
delay(10);
while ((digitalRead( Pin_m) == HIGH));
Reste à gérer les petits problèmes de rebond et surtout activer le décompte une fois le délai choisi et arrivé à 0 décrémenter la variable "nombre de clichés"
La gestion du gestion du nombre de clichés se fera de la même manière, sauf que le minimum sera de 1000 jusqu'à au moins 3000
Bref encore du boulot, d'autant plus que je ne suis encore un virtuose de la programmation
if (digitalRead(8) == HIGH) {
if (delai > valeurMin)delai--;
lcd.clear();
lcd.setCursor(10, 0);
lcd.print("delai");
lcd.setCursor(10, 1);
delay(10);
while ((digitalRead( Pin_m) == HIGH));
Reste à gérer les petits problèmes de rebond et surtout activer le décompte une fois le délai choisi et arrivé à 0 décrémenter la variable "nombre de clichés"
La gestion du gestion du nombre de clichés se fera de la même manière, sauf que le minimum sera de 1000 jusqu'à au moins 3000
Bref encore du boulot, d'autant plus que je ne suis encore un virtuose de la programmation
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Effectivement c'est bien ça seul le 0 reste affiché . Peux-tu commenter le code?
as-tu une question?