IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Arduino Discussion :

Afficheur 7 segments et télécommande infrarouge


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2023
    Messages : 1
    Par défaut Afficheur 7 segments et télécommande infrarouge
    Bonjour,
    J'ai un projet à rendre et le code ne fonctionne pas. L'afficheur décompte dans l'ordre croissant les chiffres lorsque j'appuie sur un bouton de la télécommande alors que je veux que le chiffre correspondant au bouton s'affiche.

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #include "Adafruit_NECremote.h"
     
    #define brocheIR 4
     
    Adafruit_NECremote remote(brocheIR); 
     
    int donnee = 2 ;
    int latch = 3 ;
    int clock = 5 ;
    int chiffre ; 
    byte dec_digits[]={0b00000011,0b10011111,0b00100101,0b00001101,0B10011001,0b01001001,0b01000001,0b00011111,0b00000000,0b00001001};
     
    void setup(void) {
    pinMode(latch,OUTPUT);
    pinMode(clock,OUTPUT);
    pinMode(donnee,OUTPUT);
     
    }
     
    void loop(void) {
    int c = remote.listen(5); 
     
      if (c = 12) { // Si on utilise la bouton 1 sur la télécommande affichage du chiffre 1
      chiffre = 1;
        digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      } 
      if (c = 24) { // Si on utilise la bouton 2 sur la télécommande affichage du chiffre 2
      chiffre = 2;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      } 
      if (c = 94) { // Si on utilise la bouton 3 sur la télécommande affichage du chiffre 3
      chiffre = 3;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      }
      if (c = 8) { // Si on utilise la bouton 4 sur la télécommande affichage du chiffre 4
      chiffre = 4;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      }
      if (c = 28) { // Si on utilise la bouton 5 sur la télécommande affichage du chiffre 5
      chiffre = 5 ;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      }
      if (c = 90) { // Si on utilise la bouton 6 sur la télécommande affichage du chiffre 6
    chiffre = 6 ;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      } 
      if (c = 66) { // Si on utilise la bouton 7 sur la télécommande affichage du chiffre 7
    chiffre = 7;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      }
      if (c =82) { // Si on utilise la bouton 8 sur la télécommande affichage du chiffre 8
      chiffre = 8 ;
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      }
       if (c =74) { // Si on utilise la bouton 9 sur la télécommande affichage du chiffre 9
      chiffre = 9 ; 
       digitalWrite(latch,LOW);
      shiftOut(donnee,clock,MSBFIRST,dec_digits[chiffre]);
      digitalWrite(latch,HIGH);
      delay(300);
      } 
    }
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 906
    Par défaut
    Je n’ai pas lu plus loin mais Un test d’égalité c’est avec == pas juste = qui fait une affectation donc on n’écrit pas
    Mais
    Comme une affectation est évaluée à la valeur affectée, toutes les conditions dans vos if sont vraies et donc vous rentrez dans chaque branche (d’ailleurs des else seraient utiles)

  3. #3
    Membre Expert

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

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 631
    Par défaut
    Bonjour,

    En outre, c'est un problème type pour utiliser l'instruction switch et non pas des tests qui ne sont même pas exclusifs les uns des autres alors que les cas le sont.

    Ensuite quand on voit un code se répéter n fois, soit cela incite à créer une fonction pour ce code, soit, comme c'est possible ici, le mettre en partie commune.

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void loop(void) {
       int chiffre ; 
       switch(remote.listen(5)) {
          case 12 : chiffre = 1; break;
          case 24 : chiffre = 2; break;
          ....
          default : return;
       }
       digitalWrite(latch,LOW);
       shiftOut(donnee, clock,MSBFIRST, dec_digits[chiffre]);
       digitalWrite(latch,HIGH);
       delay(300);
    }

    Il n'y a pas de 0 ?

    Salutations

Discussions similaires

  1. envoi de données vers un afficheur 7 segments
    Par Inaha dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/06/2013, 09h02
  2. [68HC11] Horloge numérique avec afficheur 7 segments
    Par Need you dans le forum Autres architectures
    Réponses: 2
    Dernier message: 08/04/2012, 09h31
  3. afficheur 7 segments
    Par Orguevirtuel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/04/2011, 21h17
  4. [PIC 16F84] Afficheur 7 segments
    Par Vipear dans le forum Autres architectures
    Réponses: 5
    Dernier message: 29/05/2009, 09h01
  5. télécommande infrarouge
    Par KHEOPS1982 dans le forum Java ME
    Réponses: 6
    Dernier message: 03/01/2006, 16h48

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