/** * Exemple de code pour un unique afficheur 7 segments avec un décodeur BCD vers 7 segments CD4511. */ /* Broches du CD4511 et du point décimal de l'afficheur */ const byte PIN_CD4511_A1 = 2; const byte PIN_CD4511_A2 = 3; const byte PIN_CD4511_A3 = 4; const byte PIN_CD4511_A4 = 5; const byte PIN_SEGMENT_DP = 6; /** Fonction setup() */ void setup() { /* Toutes les broches en sorties */ pinMode(PIN_CD4511_A1, OUTPUT); digitalWrite(PIN_CD4511_A1, LOW); pinMode(PIN_CD4511_A2, OUTPUT); digitalWrite(PIN_CD4511_A2, LOW); pinMode(PIN_CD4511_A3, OUTPUT); digitalWrite(PIN_CD4511_A3, LOW); pinMode(PIN_CD4511_A4, OUTPUT); digitalWrite(PIN_CD4511_A4, LOW); pinMode(PIN_SEGMENT_DP, OUTPUT); digitalWrite(PIN_SEGMENT_DP, LOW); } /** Fonction loop() */ void loop() { static byte chiffre = 0; static byte etat_dp = 0; /* Affiche le chiffre */ affiche_chiffre_7seg(chiffre, etat_dp); /* Incrémente le chiffre de 0 à 9 */ if (++chiffre == 10) { chiffre = 0; } /* Fait clignoter le point décimal (inverse l'état à chaque fois) */ etat_dp = !etat_dp; /* Délai pour la démo */ delay(1000); } /** Fonction permettant d'afficher un chiffre sur un afficheur 7 segments */ void affiche_chiffre_7seg(byte chiffre, byte dp) { /* Simple sécurité */ if (chiffre > 9) return; // Accepte uniquement des valeurs de 0 à 9. /* Affichage */ digitalWrite(PIN_CD4511_A1, bitRead(chiffre, 0)); digitalWrite(PIN_CD4511_A2, bitRead(chiffre, 1)); digitalWrite(PIN_CD4511_A3, bitRead(chiffre, 2)); digitalWrite(PIN_CD4511_A4, bitRead(chiffre, 3)); digitalWrite(PIN_SEGMENT