Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chomeur
    Inscrit en
    août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : août 2019
    Messages : 3
    Points : 1
    Points
    1

    Par défaut Gestion de bouton pour un compteur

    Bonjour,
    Je débute et j'essaye de faire un programme qui compte a chaque appui sur un bouton et qui affiche la valeur sur un afficheur LED 7 segments.

    Le problème étant que je n'arrive pas à compter les impulsions du bouton pour afficher la valeur ensuite.

    Voici ce que j'ai fait pour le moment mais je pense que mon branchement de bouton n'est pas correct.

    https://www.tinkercad.com/things/iJ7wAFC2fQs-compteur

    Merci de votre aide

  2. #2
    Membre éclairé
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    février 2013
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2013
    Messages : 265
    Points : 679
    Points
    679

    Par défaut

    Bonjour Bouvmax

    Ton lien n'est pas accessible, mets ton code sur ce forum, entre balises.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chomeur
    Inscrit en
    août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : août 2019
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    J'ai réussi a faire mon compteur avec mon bouton mais maintenant je voudrais qu'il garde en mémoire la derniere valeur de mon compteur quand je le met hors tension et qu'il y recommence quand je le rallume.
    J'ai pu voir qu'il fallait utiliser EEPROM mais je comprends pas son fonctionnement.
    Merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <SevSeg.h> 
    #include <EEPROM.h>
     
    //Afficheur 7 segments
    const byte numDigits = 4; // Nombre de digits de l'afficheur 7 segments, ici il y en a 4 ( on utilise un afficheur référencé SH5461AS )
    const byte digitPins[] = {13, 10, 9, A5};  
    const byte segmentPins[] = {12, 8, A3, A1, A0, 11, A4, A2}; // Branchements des broches controlant les segments
    SevSeg sevseg;                                 // On declare sevseg comme l'afficheur
    int bouton = 2;
    int compteur;
    static int etatprec = HIGH;
     
     
    void setup() 
     {                                
      sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); //On initialise l'afficheur 7 Segments
      sevseg.setBrightness(-10);      //On regle l'intensite
      pinMode(bouton, INPUT_PULLUP); 
     }
     
    void loop()
    {     
     
     
      int etat= digitalRead(2); //Lecture de l'etat du pin 2
      if (etat == HIGH && etatprec==LOW) //detection d'appui haut/bas
      {
        compteur++; // Incrementation d'une valeur au compteur
      }
      etatprec=etat;
     
      sevseg.setNumber(compteur,4); //Aficher le compteur
      sevseg.refreshDisplay();
     
      if(compteur>9999)
      {
      compteur=0;
      compteur = compteur;
      }

  4. #4
    Membre éclairé
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    février 2013
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2013
    Messages : 265
    Points : 679
    Points
    679

    Par défaut

    Bonjour Bouvmax

    Une excellente adresse pour étudier l'EEPROM.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chomeur
    Inscrit en
    août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : août 2019
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Super merci, je pilote ça avec un Arduino nano est ce que je risque pas de tuer ma mémoire trop rapidement?

  6. #6
    Membre éclairé
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    février 2013
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2013
    Messages : 265
    Points : 679
    Points
    679

    Par défaut

    Bonsoir Bouvmax

    Citation Envoyé par Bouvmax Voir le message
    Super merci, je pilote ça avec un Arduino nano est ce que je risque pas de tuer ma mémoire trop rapidement?
    On peut économiser les écritures en employant la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EEPROM.update qui écrit seulement quand la valeur à écrire change par rapport à la valeur actuelle dans le cellule mémoire
    à la place de
    EEPROM.write qui écrit systématiquement.
    On peut écrire ou effacer environ 100'000 fois avant que l'EEPROM devient instable, il y a quand même de quoi voire venir

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  7. #7
    Membre du Club
    Homme Profil pro
    savant fou
    Inscrit en
    septembre 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : savant fou

    Informations forums :
    Inscription : septembre 2019
    Messages : 31
    Points : 50
    Points
    50

    Par défaut

    Si vraiment vous avez peur d’user votre eeprom vous pouvez toujours rajouter un condensateur et petit circuit de détection de perte d’alimentation et sauver en eeprom en profitant de l’alim par le Condo. Comme cela vous n'écrivez En EEPROM que quand c’est nécessaire

    Voici un bon article sur le sujet

    Mais bon comme le dit JPBricole, 100.000 sauvegardes, même à chaque appui du bouton ça laisse le temps...

  8. #8
    Membre actif

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2013
    Messages : 21
    Points : 257
    Points
    257

    Par défaut

    Bonjour,

    Il y a un peu de nettoyage de code à faire (par exemple : compteur = compteur) et d'optimisations (c'est maladif).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void loop()
    {     
       int etat= digitalRead(2); //Lecture de l'etat du pin 2
       if (etat > etatprec)  // Détection d'appui haut/bas - HIGH > LOW car HIGH == 1 et LOW == 0
       {
          if(compteur < 9999) ++compteur; else compteur = 0;   // Incrémentation du compteur - retour à 0000 avant affichage
          sevseg.setNumber(compteur,4);    // Afficher le compteur - déclarer static int etatprec = -1; et compteur = -1; pour forcer l'affichage du 0000 au début
          sevseg.refreshDisplay();
       }
      etatprec=etat;
    }
    Le travail d'optimisation, même si le fonctionnement ne le nécessite pas ici, est toujours intéressant car il oblige à une compréhension fine de ce que l'on veut exactement et du comportement du micro-contrôleur.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. [XL-2016] Gestion des boutons pour la creation d'un devis et d'une facture
    Par jbdu59139 dans le forum Excel
    Réponses: 5
    Dernier message: 02/02/2019, 06h14
  2. [AC-2007] Création bouton pour activer gestion des tables liées
    Par ouahab dans le forum Access
    Réponses: 1
    Dernier message: 12/10/2012, 09h59
  3. Gestion des modifications pour un enregistrement
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 14h09
  4. [JSP][Barre de navigation] Gestion du bouton precedent
    Par lando dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 09/09/2003, 16h18
  5. Réponses: 5
    Dernier message: 04/04/2003, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo