Go Down

Topic: affichage led 7 segments I2C (Read 586 times) previous topic - next topic

Alex2018

Jun 07, 2018, 09:07 pm Last Edit: Jun 14, 2018, 08:09 pm by Alex2018
Bonjour a tous )


Je suis debutant et essai d'afficher sur un affichage I2c 7 segments led le résultat d'un capteur a gas M135., mais je suis coincé, j'arrive a lire sur serial les donnes du capteur, j'arrive a afficher des chiffres sur l'affichage led, mais je n'arrive pas a afficher les résultats du capteur sur l'affichage.
Peut être que quelqu'un a une piste ?

https://fr.aliexpress.com/item/DIY-uses-TM1650-or-compatible-chip-HBS650-digital-tube-special-driver-chip-supports-8-brightness-adjustment/32854992661.html

https://fr.aliexpress.com/item/MQ-135-Air-quality-and-hazardous-gas-detection-sensor-alarm-module-MQ135-module-for-arduino-Free/32759228683.html?priceBeautifyAB=0



Code: [Select]


#include <Wire.h>

#include <TM1650.h>

TM1650 d;


int sensorValue;

int digitalValue;

int affiche;
int receiveEvent;
int incomingByte = 0;





void setup()

{
 
Wire.begin(0x34);                // join i2c bus with address #8

 Serial.begin(9600);      // sets the serial port to 9600

 pinMode(2, INPUT);
pinMode(0, INPUT);

 d.init();
}




void loop()


{
 sensorValue = analogRead(0);       // read analog input pin 0

 digitalValue = digitalRead(2);

 affiche = sensorValue;

 Serial.println(sensorValue,DEC);  // prints the value read

 Serial.println(digitalValue,DEC);

 delay(3000);                        // wait 100ms for next reading






{

 d.displayOff();

 d.displayString("____");

 d.setBrightness(TM1650_MIN_BRIGHT);

 d.displayOn();

 delay(100);

 char line[] = "4321";



 d.displayString(line);

 d.setBrightnessGradually(TM1650_MAX_BRIGHT);

 delay(100);

 d.setBrightnessGradually(TM1650_MIN_BRIGHT);

 d.displayOff();

 delay(100);

 



 d.displayOn();

 d.setBrightnessGradually(TM1650_MAX_BRIGHT);

 d.displayString(line);

 delay(100);









  // send data only when you receive data:
       if (Serial.available() > 0) {
               // read the incoming byte:
               incomingByte = Serial.read();

               // say what you got:
 


 //d.displayString('incomingByte');

 //delay(2400);

 

}

 




}}

J-M-L

Bonsoir

lisez comment utilisez le forum et corrigez (en l'éditant) votre post ci dessus. merci
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

Bonsoir,
je ne connais pas cet afficheur, j'ai juste lu l'exemple de la bibliothèque. Voici un code minimal qui pourrait servir de base :
Code: [Select]
#include <Wire.h>
#include <TM1650.h>
TM1650 d;
int sensorValue;
int digitalValue;

void setup()
{
  Wire.begin(0x34);        // join i2c bus with address #8
  Serial.begin(9600);      // sets the serial port to 9600
  pinMode(2, INPUT);
  pinMode(0, INPUT);
  d.init();
}

void loop()
{
  sensorValue = analogRead(0);       // read analog input pin 0
  digitalValue = digitalRead(2);
  Serial.println(sensorValue, DEC); // prints the value read
  Serial.println(digitalValue, DEC);
  d.displayOff();
  d.displayString(String(sensorValue));
  d.displayOn();
  delay(3000);
}
Pas testé, pas compilé : brut de brut...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Alex2018

Bonsoir Lesept,
merci de ton aide, mais le compilateur renvoit l'erreur suivante :

Code: [Select]

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

D:\Users\artit\Arduino\sketch_jun14a\sketch_jun14a.ino: In function 'void loop()':

sketch_jun14a:23: error: no matching function for call to 'TM1650::displayString(String)'

   d.displayString(String(sensorValue));

                                      ^

D:\Users\artit\Arduino\sketch_jun14a\sketch_jun14a.ino:23:38: note: candidate is:

In file included from D:\Users\artit\Arduino\sketch_jun14a\sketch_jun14a.ino:2:0:

D:\Users\artit\Arduino\libraries\TM1650-1.1.0\src/TM1650.h:270:6: note: void TM1650::displayString(char*)

 void TM1650::displayString(char *aString)

      ^

D:\Users\artit\Arduino\libraries\TM1650-1.1.0\src/TM1650.h:270:6: note:   no known conversion for argument 1 from 'String' to 'char*'

exit status 1
no matching function for call to 'TM1650::displayString(String)'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.


lesept

C'est pas normal, le compilo dit qu'il ne trouve pas la fonction displayString dans la biblio TM1650, mais elle existe bien :
Code: [Select]
void TM1650::displayString(char *aString)
{
if (!iActive) return;
for (int i=0; i<iNumDigits; i++) {
  byte a = ((byte) aString[i]) & 0b01111111;
  byte dot = ((byte) aString[i]) & 0b10000000;
#ifndef TM1650_USE_PROGMEM  
  iBuffer[i] = TM1650_CDigits[a];
#else
  iBuffer[i] = pgm_read_byte_near(TM1650_CDigits + a);
#endif
  if (a) {
    Wire.beginTransmission(TM1650_DISPLAY_BASE+i);
    Wire.write(iBuffer[i] | dot);
    Wire.endTransmission();
  }
  else
    break;
   
}
}

/** Display string on the display in a running fashion
 * aString = character array to be displayed
 *
 * Starts with first N positions of the string.
 * Subsequent characters are displayed with 1 char shift each time displayRunningShift() is called
 *
 * returns: number of iterations remaining to display the whole string
 */
Elle permet même de faire un affichage déroulant.

Vérifie que tu as bien installé la bibliothèque, au besoin efface la et ré-installe la. Après avoir installé une bibli, il faut relancer 'IDE.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up