Décrémentation

Résolu/Fermé
max - Modifié le 26 déc. 2020 à 16:12
 max - 26 déc. 2020 à 21:57
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
#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 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
26 déc. 2020 à 16:30
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.
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
26 déc. 2020 à 16:40
peut-être ainsi:
char affichage[80];
sprintf(char , "%3d" , delai);
lcd.print(affichage);
0
max > yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024
26 déc. 2020 à 16:52
Merci sympa d'avoir répondu rapidement

Effectivement c'est bien ça seul le 0 reste affiché . Peux-tu commenter le code?
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554 > max
26 déc. 2020 à 17:04
as-tu lu la documentation de la fonction sprintf?
as-tu une question?
0
max > yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024
26 déc. 2020 à 17:06
Je vais regarder la fonction sprintf?
0
NHenry Messages postés 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 345
26 déc. 2020 à 17:15
Je note que dans ton code, tu déclares :
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)
0
Effectivement, je corrige pour voir
0
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
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
26 déc. 2020 à 19:51
peux-tu alors marquer la discussion comme résolue?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je voudrais bien mais je ne vois pas où il faut cliquer

Encore merci
0