Bonjour,
j'ai cherché pendant pas mal de temps mais rien, alors je pose ma question
Je veux afficher une valeur d'une broche analogique sur un afficheur 4x 7 segments Leds (Seedstudio grove qui utilise un tm1637). J'arrive à afficher des chiffres et caractères donnés mais le problème c'est que je ne sais pas comment faire pour "séparer" les unités, dizaines, centaines et milliers d'une valeur (pour pouvoir ensuite les afficher sur chaque afficheur 7 segments).
Je ne sais pas si j'ai été très clair mais j'espère que vous pourrez m'aider
Bonjour,
J'ai déjà utilisé des TM1640 / TM1638, je sait pas si c'est dans la même série de driver 7 segments m'enfin bon ...
Pour séparer les digits de ton affichage tu peut faire comme moi, un bon vieux calcul à base de division et de modulo pour obtenir la valeur de chaque digits séparément.
Ensuite tu fait l'affichage comme tu le souhaite digits par digits.
skywodd:
Bonjour,J'ai déjà utilisé des TM1640 / TM1638, je sait pas si c'est dans la même série de driver 7 segments m'enfin bon ...
bonjour skywodd
c'est assez compliqué de trouver de la doc , mais on dirait bien le petit frere du TM1638
Merci skywodd et Artouste pour vote aide !
J'ai donc branché un potard en A0 et l'afficheur en D2/D3 sur un shield Seeedstudio grove.
Voici ce que ça donne
avec le code qui va bien :
#include "TM1637.h"
#define CLK 2//pins definitions for TM1637 and can be changed to other ports
#define DIO 3
TM1637 tm1637(CLK,DIO);
void setup()
{
Serial.begin(9600);
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
}
void loop()
{
static unsigned long t = 0;//Refreshment of the display quite 250ms
if(millis() - t > 250)
{
tm1637.display(0,(analogRead(A0) / 1000) % 10); //Display of thousands
tm1637.display(1,(analogRead(A0) / 100) % 10); //Display of hundreds
tm1637.display(2,(analogRead(A0) / 10) % 10); //Display of tens
tm1637.display(3,analogRead(A0) % 10); //Display of units
Serial.print( analogRead(A0) ); // Show the value of A0 on the serial port
Serial.println("");
t = millis();
}
}
Par contre que signifie le "% 10" ??
willtynux:
...
Par contre que signifie le "% 10" ??
C'est la fonction modulo (avec le facteur modulo 10 ici )
http://www.arduino.cc/en/Reference/Modulo
http://arduino.cc/fr/Main/Modulo
désolé, je ne comprends pas trop l'explication de la fonction ...
Si je prends une valeur, par exemple 832, pour avoir les unités je fais 832 % 10 mais ça me fait quoi exactement ?
Merci d'aider un vieux newbie 8)
Modulo 10 retourne le reste de la division par 10
832 = 83 x 10 + 2
832 % 10 -> reste 2
Ok !!!!!!!!!!! facile quand on a compris !
Encore un très grand merci à toi !
Je vais pouvoir créer un bloc pour ArduBlock maintenant
Ps: fait un seul analogRead() que tu stocke dans une variable avant de faire tes calculs
Si la valeur change entre deux analogRead() tu peut te retrouver avec une valeur complétement fausse sur ton afficheur (et sur le port série).