Cours:Arduino7segt
La carte utilisée pour les Tps dispose de 2 afficheurs 7 segments.
Sommaire
Ex1: Un premier caractère
Commencez par lire la documentation et exécutez le programme donné en exemple.
Ce programme très simple ne permet pas de choisir l'état des segments individuellement.
Nous allons modifier le programme afin d'afficher la lettre d :
L'état des segments est donné dans le tableau suivant :
sgt | pt | g | f | e | d | c | b | a |
---|---|---|---|---|---|---|---|---|
Etat | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Val | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
Afficher une valeur se résume à commander l'état de 8 bits, et donc une variable V de type unsigned char de valeur V=B01011110 permet de mémoriser cette valeur.
En utilisant par exemple les opérateurs >> et & compléter le programme suivant pour afficher la lettre d
const char pinMux = 4;
const char pinAff[8]={13,12,6,7,8,10,9,11};
const unsigned char val=....; // Mettre la bonne valeur donnée ci-dessus
void setup()
{
char i;
for (i=0;i<8;i++) pinMode(pinAff[i],OUTPUT); // Déclaration des 8 sorties des afficheurs
pinMode(pinMux,OUTPUT); // + sortie de multiplexage (choix de l'afficheur)
digitalWrite(pinMux,1); // sur l'afficheur 1
}
void loop()
{
char i,s;
unsigned char c;
for (i=0;i<8;i++)
{
delay(300); // Inutile ! permet de ralentir pour éventuellement trouver les erreurs
c = ..... ; // c dépend nécessairement de val et du segment qui nous intéresse (donc i)
digitalWrite(...,c); // Modifie successivement l'état des segments a (ou patte 13) puis b (ou patte 12) ...
}
}
Pour obtenir l'état du segment c, correspondant au bit b2, commençons par faire un décalage de 2 rang vers la droite. La valeur qui nous intéresse se trouve alors complètement à droite. Il suffit alors de "masquer" les autres bits à l'aide de l'opérateur & (et bit à bit) :
Ex2: 0,1,2 ... 9 !Maintenant que nous avons un code plus facilement flexible, attaquons nous aux chiffres. Nous avons 10 symboles différents, donc nous utiliserons un tableau de type unsigned char de dimension 10 : const unsigned char val[10]={B00111111,..,...}; // Vous avez ici l'état des segments pour afficher le chiffre 0.
Ex3: Toujours plusVous allez maintenant faire un compteur de 0 à 99. Pour ce faire vous allez commencer par modifier le compteur de 0 à 9, pour que la valeur s'affiche "simultanément" sur les 2 afficheurs, soit 00 puis 11, 22, 33 ... 99. Vous conserverez la même vitesse de comptage.
Le comptage de 0 à 99 devient alors une formalité, on vous demande 3 méthodes.
unsigned char cpt=0;
...
void setup()
{
...
}
void loop()
{
...
cpt++;
...
}
|