Utilisation du buzzer de la carte DangerShield à l'aide d'une boucle WHILE
L'afficheur 7 segments de la carte DangerShield est commandé par le composant 74HC595N. Il s'agit d'un registre à décalage de 8 bits (8 Bit Shift Register). Ce registre « reçoit » par une liaison série les codes (sous le format byte) et il les affiche sur ses sorties Q.
Schéma de l'afficheur de la carte « dangerShield » :
Définition des codes à envoyer à l'afficheur pour avoir les chiffres :
chiffre | DP(point) GFEDCBA (led correspondante) | ||
1. En analysant les codes binaires associés au chiffres : Pour allumer une Led de l'afficheur, faut-il envoyer un 0 ou un 1 ? 2. Dessiner, en rouge, sur l'afficheur correspondant au chiffre 9 (en bas du tableau ci-contre), les leds allumées. En déduire le code binaire pour afficher le chiffre 9 : 3. Quelle diode commande le bit de poids fort (bit de gauche) ? |
4.Compléter le programme ci-dessous (code binaire des leds pour le chiffre 9)
Remarque : on notera qu'une table de variable de type byte ( = 8 bits) a été crée pour mémoriser les codes des 10 chiffres (elle se nomme numeri[i] où i est un index dont la valeur peut aller de 0 à 9). Cette table possède donc 10 cases. Ainsi le contenu de numeri[0] est B11000000, celui de numeri[5] est B10010010, etc. Le chiffre entre crochet est l'index qui permet d'accéder au contenu de la case mémoire voulue.
//**** début du programme *********//
// definition des variables //
int i = 0;
byte j;
const byte numeri[10] = {
B11000000, // 0 leds correspondant au chiffre 0 //
B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B ………... , // 9 à compléter //
};
// definition des adresses pour communiquer avec le CI commande l'afficheur //
int LATCH_PIN = 7; // on aurait aussi put utiliser: #define LATCH_PIN 7 //
int CLOCK_PIN = 8;
int DATA_PIN = 4;
void setup()
{
pinMode(LATCH_PIN, OUTPUT); // parametrage des sorties Arduino //
pinMode(CLOCK_PIN, OUTPUT); // parametrage des sorties Arduino //
pinMode(DATA_PIN,OUTPUT); // parametrage des sorties Arduino //
}
void loop()
{
for (int i=9; i>-1; i--)
{
j = numeri[i]; // affectation à j du code 8 bits
digitalWrite(LATCH_PIN, LOW); // mise en route de la liaison série //
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, j); // envoi du byte j//
digitalWrite(LATCH_PIN, HIGH); // arrêt de la liaison série //
delay(500); // attente
}
}
//**** fin du programme ****//
5. Écrivez le programme précédent, testez-le et décrivez ce qui se passe.
6. Modifiez le programme pour inverser l'ordre d'affichage. Faire valider par le professeur.