Bonjour à tous,
Comment afficher les zéros avant les chiffres sur un afficheurs 7 segments 4 digits?
J'utilise la fonction sevseg.
Merci de votre réponse.
Gerard
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.
Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone
En gérant l’affichage à la main.
Je ne connais pas la fonction sevseg(), si c’est une bibliothèque donnez des liens et décrivez aussi votre matériel et montage comme indiqué dans le lien ci dessus
Bonjour
si c'est cette lib qui est utilisée :
Il faut passer à 'true' ce parametre
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
Merci de vos réponses.
Oui c'est bien cette lib, j'ai bien true au paramètre: leadingZeros et j'ai fait une mise à jour de la lib. Mais toujours le même problème. Le zéros ne s'affiche pas.
Voici mon code:
#include <SevSeg.h> //Libreria inclus
SevSeg sevseg; //Creazione dell'oggetto "sevseg"
int i;
int number;
char data[4];
char *result = malloc(4);
void setup(){
Serial.begin(9600); // ouvre le port s�rie et fixe le d�bit � 9600 bauds
byte numDigits = 4; //7segments avec 4 digits
byte digitPins[] = {A0, A1, A2, A3}; //Correspondance 7segments : Digit1 Digit2 Digit3 Digit4
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; //Correspondance 7segments : A B C D E F DP
bool resistorsOnSegments = false; //'false' => resistances sur les pins digitales
byte hardwareConfig = COMMON_CATHODE; // Utiliser un tube numérique à cathode commune
bool updateWithDelays = false; // Default. Recommended
bool leadingZeros = true; // Mettre 'true' pour afficher les 0 'avant' les chiffres
bool disableDecPoint = false; //Si votre point décimal n'existe pas ou n'est pas associé, veuillez utiliser true
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, leadingZeros, disableDecPoint);//Add parameters
sevseg.setBrightness(90);
}
void loop() {
while(Serial.available()>0){
Serial.readBytes(data,4)-'0';
sscanf(data, "%04d", &i);
//sprintf(result, "%04d", i);
//Serial.println(result);
}
{
sevseg.setNumber(i,2); // Définir les données à afficher,
sevseg.refreshDisplay(); // Doit être réexécuté pour rafraîchir l'affichage numérique du tube
}
}
Cordialement
Gerard
Si tu compares le prototype de la fonction et ton apel à begin(), tu verras qu'il manque un arguments ( updateWithDelaysIn ) du coup tout se décale derrière.
begin(uint8_t hardwareConfig, uint8_t numDigitsIn, const uint8_t digitPinsIn[],
const uint8_t segmentPinsIn[], bool resOnSegmentsIn=0,
bool updateWithDelaysIn=0, bool leadingZerosIn=0,
bool disableDecPoint=0);
Merci de vos reponses.
Cordialement.
Gerard
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.