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 :

Point décimal sur 1637


Sujet :

Arduino

  1. #1
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut Point décimal sur 1637
    Bonjour à tous,
    Je suis newbee sur Arduino, j'essaie depuis des heures à afficher le point des décimales de ma température relevée sur un afficheur 7 segments 1637 sans succès.
    Une bonne âme pourrait-il m'aider?
    Mon code:
    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
     
    #include <TM1637Display.h>
    #include <DHT.h>
    #include <Wire.h>
    #define DHTPIN 7
     
    #define CLK 2
    #define DIO 3
    #define DHTTYPE DHT22   // DHT 22 
                                                                  // PIN connectée au D7 de l'Arduino
     
    TM1637Display display(CLK, DIO);
    DHT dht(DHTPIN, DHTTYPE);                                                     // Initialisation Sensor DHT pour un Arduino 16mhz 
    // Create degree Celsius symbol:
    const uint8_t degre[] = {
      SEG_A | SEG_B | SEG_F | SEG_G  // Circle
      };
    const uint8_t point[] = {
      SEG_DP   // Point
      };
     
    void setup() {
      display.setBrightness(7); 
      Wire.begin();
      dht.begin();
      Serial.begin(9600);
     
      delay(1500); // Delay to let the system boot
    }
     
    void displayTemp()
        {                                                                                // La lecture de la température ou de l'humidité prend  entre
                                                                                    // +/- 250 millisecondes et 2 secondes. 
                                                                                    // Ce sensor est très lent
          float h = dht.readHumidity();                                             // Lecture du taux d'humidité sur le sensor
          float t = dht.readTemperature();                                          // Lecture de la température en Celsius
          float f = dht.readTemperature(true);                                      // Lecture de la température en Fahrenheit
          if (isnan(h) || isnan(t) || isnan(f)) 
            {                                                                       // Vérification que toutes les données ont bien été lue
              Serial.println("La lecture du données DHT a échoué ! ");              // Affichage d'un message dans le moniteur série
              return;
            }
                                                                                  // Calcul de la température ressentie en se basant sur la température 
                                                                                    // en Fahrenheit et le taux d'humidité.
          float hi = dht.computeHeatIndex(f, h);                                    // Affichage sur moniteur série
          Serial.print("Hum: ");                                                    // Taux d'humidité 
          Serial.print(h);
          Serial.print(" %\t");                                                     // en %
          Serial.print("Temperature: ");                                            // Température
          Serial.print(t);
          Serial.print("°C ");                                                      // en °Celsius
          Serial.print(f);
          Serial.print(" *F\t");                                                    // en °Fahrenheit
          Serial.print("Temp ressentie: ");                                         // Température ressentie  
          Serial.print(hi);
          Serial.println(" *F");                                                    // en °Fahrenheit
          display.clear();
     
     
     
     
          display.showNumberDecEx(t*10,(0x80 >> 3),false,3);
     
          display.setSegments(degre,1,3);
     
     
          delay(2000);                                                              // On garde l'affichage pendant 2 secondes pour permettre la lecture
        }
    void loop() {
      displayTemp();
        delay(1000);
      }
    d'avance merci

  2. #2
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    vous avez un afficheur 4 éléments dont chacun à un point décimal en bas et avec des ':' au milieu ou un qui a juste les '.' par digit ?

    Nom : aff.png
Affichages : 1547
Taille : 123,1 Ko

    Ceux qui ont le ':' au milieu (modèle 1 dans l'image) sont souvent utilisés pour des horloges et souvent on ne peut pas contrôler les points, juste les ':' au milieu
    Ceux du modèle 2 n'ont pas les ':' et on peut contrôler les points (suivant les modèles)

    --> faudrait un lien vers votre module est sa documentation pour être sûr

  3. #3
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut
    Bonjour,
    c'est celui-ci :https://www.amazon.fr/ForceSthrength...sr=1-5-catcorr
    En examinant la librairie, je me rend compte que le point ou les deux points ont le même code:
    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
     //! Dispaly the given argument as a hexadecimal number. The dots between the digits (or colon)
      //! can be individually controlled.
      //!
      //! @param num The number to be shown
      //! @param dots Dot/Colon enable. The argument is a bitmask, with each bit corresponding to a dot
      //!        between the digits (or colon mark, as implemented by each module). i.e.
      //!        For displays with dots between each digit:
      //!        * 0.000 (0b10000000)
      //!        * 00.00 (0b01000000)
      //!        * 000.0 (0b00100000)
      //!        * 0.0.0.0 (0b11100000)
      //!        For displays with just a colon:
      //!        * 00:00 (0b01000000)
      //!        For displays with dots and colons colon:
      //!        * 0.0:0.0 (0b11100000)
      //! @param leading_zero When true, leading zeros are displayed. Otherwise unnecessary digits are

  4. #4
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    OK

    Vous appelez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     showNumberDecEx(int num, uint8_t dots, bool leading_zero, uint8_t length, uint8_t pos);
    Si vous regardez le code source, le paramètre Cette fonction vous permet de contrôler les points de l'affichage.

    Pour les écrans avec des points entre chaque chiffre:
    0b10000000 -> 0.000
    0b01000000 -> 00.00
    0b00100000 -> 000.0
    0b11100000 -> 0.0.0.0

    Pour les écrans avec seulement deux points:
    0b01000000 -> 00:00

    Pour les écrans avec des points et deux points:
    0b11100000 -> 0.0:0.0

    essayez un code tout simple qui fait que des showNumberDecEx(8888, dots) avec les différentes options ci dessus pour dots, ça vous permettra de voir ce que fait vraiment votre afficheur. (sur amazon il est marqué comme horloge, il se peut que seuls les deux points soient câblés)

  5. #5
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut
    En effet, seulement les deux points! Grrr Oublions la précision ;-)

  6. #6
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Citation Envoyé par Goltar Voir le message
    En effet, seulement les deux points! Grrr Oublions la précision ;-)
    Si ça peut vous consoler:

    le DHT22 a une Exactitude pour la température à ± 0,5 °C et pour l'humidité de ± 2 % RH et la Précision est assez dépendante du composant obtenu (j'en ai qui ne sont pas précis non plus)

    --> Donc un nombre à virgule pour la t° c'est pas forcément très utile et encore moins pour l'humidité

  7. #7
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut
    Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Point décimal (.) sur un champs numérique
    Par tleboukaka dans le forum Bases de données
    Réponses: 11
    Dernier message: 02/02/2010, 09h52
  2. Mon context ne pointe pas sur le bon dossier
    Par Baptiste Wicht dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/10/2006, 10h13
  3. Réponses: 2
    Dernier message: 29/05/2006, 12h43
  4. [OLE] Séparateur décimal sur mathcad
    Par MrDuChnok dans le forum Delphi
    Réponses: 11
    Dernier message: 16/05/2006, 15h08
  5. [VBExpress2005] Point décimal/virgule dans un masque de saisie
    Par BassBeat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/05/2006, 23h57

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