View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Afficher les chiffres 0 à 9 sur un digit à cathode commune

ARDUINO - INITIATION - DIGIT
Par X. HINAULT - Créé le 25/04/2010

1.  Présentation

Ce programme montre comment afficher les chiffres 0 à 9 sur un digit standard à cathode commune (masse commune), type tdsr 5160.

Voir également : Datasheet d'un digit 7 segments à cathode commune type 5160

2.  Principe des digits 7 segments à cathode commune

Ce qu'il faut bien comprendre, c'est qu'un digit, c'est ni plus ni moins 8 LEDs dans un boitier plastique : 7 LEDs pour chaque segment et 1 pour le point. Chaque LED-segment porte un nom., comme le montre ce schéma :

Brochage d'un Digit type 5160

Les digits 7 segments peuvent-être :

  • à cathode commune (masse ou 0V commun à toutes les LEDs): le segment s'allumera sur un niveau HAUT
  • ou à anode commune (+ commun à toutes les LEDs) : le segment s'allumera sur un niveau BAS

Schéma électrique interne équivalent d'un digit à cathode commune. Toutes les LEDs sont connectées ensembles à la broche du 0V.

Voir également : Datasheet d'un digit 7 segments à cathode commune type 5160

3.  Matériel Nécessaire

3.1  L'espace de développement Arduino

  • ... pour éditer, compiler le programme et programmer la carte Arduino.

3.2  Le matériel suivant pour réaliser le montage associé

  • une plaque d'essai pour montage sans soudures,
  • 8 résistances 1/4w de 270 Ohms,
  • un digit 7 segments à cathode commune,

4.  Instructions de montage

  • Connecter sur la broche 2 (configurée en sortie) la broche du segment e du digit via une résistance en série
  • Connecter sur la broche 3 (configurée en sortie) la broche du segment d du digit via une résistance en série
  • Connecter sur la broche 4 (configurée en sortie) la broche du segment c du digit via une résistance en série
  • Connecter sur la broche 5 (configurée en sortie) la broche du segment pt du digit via une résistance en série
  • Connecter sur la broche 6 (configurée en sortie) la broche du segment f du digit via une résistance en série
  • Connecter sur la broche 7 (configurée en sortie) la broche du segment f du digit via une résistance en série
  • Connecter sur la broche 8 (configurée en sortie) la broche du segment a du digit via une résistance en série
  • Connecter sur la broche 9 (configurée en sortie) la broche du segment b du digit via une résistance en série

5.  Le schéma théorique du montage


Le schéma théorique du montage

6.  Le circuit du montage


Le schéma du montage à réaliser

7.  Explication du programme

7.1  Structure globale du programme

Ce programme simple comprend :

  • une entête déclarative
  • une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) )
  • une partie constituée d'une boucle sans fin que le programme répètera à l'infini ( fonction loop( ) ) : c'est le coeur du programme.

7.2  Déroulement du programme

Le programme se déroule de la façon suivante :

  • Après avoir pris en compte les instructions de la partie déclarative,
  • puis après avoir exécuté la partie configuration ( fonction setup( ) ),
  • le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme

8.  Au niveau de la partie déclarative :

Déclaration des constantes de broches

  • Déclaration des constantes pour les broches utilisées dans le programme :

const int DIGIT_e=2; //declaration constante de broche 
const int DIGIT_d=3; //declaration constante de broche 
const int DIGIT_c=4; //declaration constante de broche 
const int DIGIT_pt=5; //declaration constante de broche 
const int DIGIT_g=6; //declaration constante de broche 
const int DIGIT_f=7; //declaration constante de broche 
const int DIGIT_a=8; //declaration constante de broche 
const int DIGIT_b=9; //declaration constante de broche 

Déclaration des variables globales

  • Déclaration des variables globales du programmes : on déclare une variable pour fixer la vitesse d'exécution du programme (cette variable est utilisée avec une instruction delay dans la suite du programme).
int vitesse=500; // variable de vitesse

9.  Au niveau de la fonction d'initialisation setup( ) :

configuration des broches utilisées :

  • Configuration des broches en sortie : on configure en sortie toutes les broches utilisées avec les segments du digit.

pinMode(DIGIT_e, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_d, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_c, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_pt, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_g, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_f, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_a, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_b, OUTPUT); //met la broche en sortie 

10.  Au niveau de la boucle principale, la fonction loop ( ) :

  • Pour l'affichage de chaque chiffre, on met au niveau HAUT (=allumé) les segments voulus en laissant les autres au niveau BAS (=éteint) à l'aide de l'instruction digitalWrite(). Entre chaque l'allumage de chaque chiffre, on fait une pause avec l'instruction delay. Voici par exemple le code pour le chiffre 0 :

// --- 0
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,1),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,0),digitalWrite(DIGIT_pt,1); 
delay(vitesse);

  • Le programme recommence en boucle les instructions de la fonction loop( ).

Se reporter aux commentaires présents dans le programme pour plus de détails.

11.  Mise en oeuvre du programme

11.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d'expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

11.2  Fonctionnement

  • Les chiffres 0 à 9 s'affichent successivement sur le digit.

12.  Le programme complet en langage Arduino :

A copier/coller directement dans l'éditeur Arduino


// --- Programme Arduino ---
// par X. et P.E. HINAULT - 01/2010 

// --- Que fait ce programme ? ---
/* Affiche les chiffres 0 à 9 sur un digit à cathode commune (masse commune)*/

// --- Fonctionnalités utilisées ---

// --- Circuit à réaliser ---
// Connecter Segment e du digit CC sur la broche 2 (configurée en sortie)
// Connecter Segment d du digit CC sur la broche 3 (configurée en sortie)
// Connecter Segment c du digit CC sur la broche 4 (configurée en sortie)
// Connecter Point du digit CC sur la broche 5 (configurée en sortie)
// Connecter Segment g du digit CC sur la broche 6 (configurée en sortie)
// Connecter Segment f du digit CC sur la broche 7 (configurée en sortie)
// Connecter Segment a du digit CC sur la broche 8 (configurée en sortie)
// Connecter Segment b du digit CC sur la broche 9 (configurée en sortie)

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

// --- Déclaration des constantes ---

// --- constantes des broches ---

const int DIGIT_e=2; //declaration constante de broche 
const int DIGIT_d=3; //declaration constante de broche 
const int DIGIT_c=4; //declaration constante de broche 
const int DIGIT_pt=5; //declaration constante de broche 
const int DIGIT_g=6; //declaration constante de broche 
const int DIGIT_f=7; //declaration constante de broche 
const int DIGIT_a=8; //declaration constante de broche 
const int DIGIT_b=9; //declaration constante de broche 

// --- Déclaration des variables globales ---
int vitesse=1000; // variable de vitesse

// --- Initialisation des fonctionnalités utilisées ---

//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage --- 

pinMode(DIGIT_e, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_d, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_c, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_pt, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_g, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_f, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_a, OUTPUT); //met la broche en sortie 
pinMode(DIGIT_b, OUTPUT); //met la broche en sortie 

} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal --- 

// affichage successif des chiffres sur le digit

// --- 0
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,1),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,0),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
//--- 1
digitalWrite(DIGIT_a,0),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,0);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,0),digitalWrite(DIGIT_g,0),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
//--- 2
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,0),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,1),digitalWrite(DIGIT_f,0),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,0),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 4
digitalWrite(DIGIT_a,0),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,0);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 5
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,0),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 6
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,0),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,1),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 7
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,0);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,0),digitalWrite(DIGIT_g,0),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 8
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,1),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);
// --- 9
digitalWrite(DIGIT_a,1),digitalWrite(DIGIT_b,1),digitalWrite(DIGIT_c,1),digitalWrite(DIGIT_d,1);
digitalWrite(DIGIT_e,0),digitalWrite(DIGIT_f,1),digitalWrite(DIGIT_g,1),digitalWrite(DIGIT_pt,0); 
delay(vitesse);

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// --- Fin programme ---