Cours:Arduino7segt : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « La carte utilisée pour les Tps dispose de 2 afficheurs [http://fr.wikipedia.org/wiki/Afficheur_7_segments 7 segments]. ={{Bleu|Ex1: Un premier chiff... »)
 
Ligne 1 : Ligne 1 :
 
[[Cours:Shieldinfo|La carte utilisée pour les Tps]] dispose de 2 afficheurs [http://fr.wikipedia.org/wiki/Afficheur_7_segments 7 segments].
 
[[Cours:Shieldinfo|La carte utilisée pour les Tps]] dispose de 2 afficheurs [http://fr.wikipedia.org/wiki/Afficheur_7_segments 7 segments].
  
={{Bleu|Ex1: Un premier chiffre}}=
+
={{Bleu|Ex1: Un premier caractère}}=
  
 
{{Todo|Commencez par lire [[Cours:Shieldinfo#Afficheurs_7_segments|la documentation]] et exécutez le programme donné en exemple.}}
 
{{Todo|Commencez par lire [[Cours:Shieldinfo#Afficheurs_7_segments|la documentation]] et exécutez le programme donné en exemple.}}
Ligne 54 : Ligne 54 :
 
     }
 
     }
 
}
 
}
 +
</source>
 +
 +
 +
={{Bleu|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 [http://arduino.cc/en/Reference/UnsignedChar unsigned char] de dimension 10 :
 +
<source lang=c>
 +
const unsigned char val[10]={B00111111,..,...};    // Vous avez ici l'état des segments pour afficher le chiffre 0.
 
</source>
 
</source>

Version du 18 septembre 2013 à 18:16

La carte utilisée pour les Tps dispose de 2 afficheurs 7 segments.

Ex1: Un premier caractère

Todo.jpg 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 : 7-segment bcdeg.svg

L'état des segments est donné dans le tableau suivant :

sgt pt g f e d c b a
Etat Lede.png Leda.png Lede.png Leda.png Leda.png Leda.png Leda.png Lede.png
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.

Question.jpg 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

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) ...
    }
}


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.