ProgressBar Arduino

Accueil/News/ProgressBar Arduino

ProgressBar Arduino

ProgressBar Arduino

Niveau : Debutant

Salut tout le monde !!

J’ai décidé aujourd’hui de vous proposer un tutoriel sur l’utilisation des écrans LCDs

Je vous propose un « exercice d’application » ,(TP) qui va vous mener pas à pas à la réalisation d’une barre de chargement sur votre afficheur LCD.

Petite précision avant tout, vous ne pourrez utiliser ici que les afficheurs LCDs normalisés, c’est-à-dire que j’exclu ici les afficheurs de type nokia 5110, fiez-vous souvent au prix des afficheurs pour choisir le bon. Pour ma part, l’afficheur nokia 5110 à 10€ me paraissait un bon plan, j’ai été déçu d’apprendre que la librairie que nous allons utiliser ici n’était pas compatible. Si vous avez un doute, n’achetez pas trop vite et posez vos questions sur http://arduino.leforum.eu

Allez, on y va !!

Le tutoriel sera divisé en trois parties :

1- Matériel nécessaire (Hardware)

2- Programmation (Software)

     2.1- La gestion de l’afficheur

       2.2- La gestion des caractères

       2.3- La gestion de la progression

3- Branchements (Hardware)

4- Tests

1- Matériel nécessaire

Pour suivre ce tutoriel, vous aurez besoin :

– D’un afficheur LCD 4×20 caractères (ou plus grand ou plus petit mais vous devrez adapter le code dans  ce cas)

– D’un potentiomètre de 20 kohms

– D’un Arduino

– Des fils

– Une plaque de connexion sans soudure (pas obligatoire mais plus pratique)

2- Programmation

       2.1- La gestion de l’afficheur

Il y a 7 fonctions utiles à connaitre pour la gestion de l’afficheur dans ce TP :

Mise en place de la librairie LiquidCrystal :

#include <LiquidCrystal.h> //Inclusion de la librairie LiquidCrystal

Précision des pins de connexion de l’afficheur sur l’arduino(rs, enable, d4, d5, d6, d7) en mode 4 bits :

LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Pins de l'afficheurs lcd

Activation et démarrage de l’afficheur LCD :

lcd.begin(20, 4); //Activation de l'afficheur lcd

Positionnement du curseur :

lcd.setCursor(8, 1); //On place le curseur à la colonne 8, ligne 1

Ecriture d’un caractère ou d’une valeur :

lcd.print(i); //On écrit la valeur de i
lcd.print(«Bonjour») ; //On écrit la lettre « Bonjour »

Effacement des caractères :

lcd.clear(); //Si i = 100, on efface l'écran

Ecriture d’un caractère sous la forme brute :

lcd.write(byte(1)); //On affiche le caractère défini à 1
 

 

2.2- La gestion des caractères

Une structure à connaitre, la création du caractère de chargement(un rectangle plein) où les 1 représentent les pixels allumés et les 0 les pixels éteint :

byte barre
[] = { //Création du caractères de chargement
   B111111,
   B111111,
   B111111,
   B111111,
   B111111,
   B111111,
   B111111,
   B111111
};

 

 2.3- La gestion de la progression

 Ici c’est une fonction que j’ai créé pour vous,  je pense que vous avez toutes les clés pour la comprendre :

void affichage(){ //Fonction permettant de gérer l'affichage du caractère de chargement.
  switch(i){
          case 5 :
            lcd.setCursor(0, 2);
            lcd.write(byte(1));
            break ;
        case 10 :
            lcd.setCursor(1, 2);
            lcd.write(byte(1));
            break ;
        case 15 :
            lcd.setCursor(2, 2);
            lcd.write(byte(1));
            break ;
        case 20 :
            lcd.setCursor(3, 2);
            lcd.write(byte(1));
            break ;
        case 25 :
            lcd.setCursor(4, 2);
            lcd.write(byte(1));
            break ;
        case 30 :
            lcd.setCursor(5, 2);
            lcd.write(byte(1));
            break ;
        case 35 :
            lcd.setCursor(6, 2);
            lcd.write(byte(1));
            break ;
        case 40 :
            lcd.setCursor(7, 2);
            lcd.write(byte(1));
            break ;
        case 45 :
            lcd.setCursor(8, 2);
            lcd.write(byte(1));
            break ;
        case 50 :
            lcd.setCursor(9, 2);
            lcd.write(byte(1));
            break ;
        case 55 :
            lcd.setCursor(10, 2);
            lcd.write(byte(1));
            break ;
        case 60 :
            lcd.setCursor(11, 2);
            lcd.write(byte(1));
            break ;
        case 65 :
            lcd.setCursor(12, 2);
            lcd.write(byte(1));
            break ;
        case 70 :
            lcd.setCursor(13, 2);
            lcd.write(byte(1));
            break ;
        case 75 :
            lcd.setCursor(14, 2);
            lcd.write(byte(1));
            break ;
        case 80 :
            lcd.setCursor(15, 2);
            lcd.write(byte(1));
            break ;
        case 85 :
            lcd.setCursor(16, 2);
            lcd.write(byte(1));
            break ;
        case 90 :
            lcd.setCursor(17, 2);
            lcd.write(byte(1));
            break ;
        case 95 :
            lcd.setCursor(18, 2);
            lcd.write(byte(1));
            break ;
        }

Allez, réfléchissez un peu !!

Drrrrriiiiinnnnngggg !!!! C’est finis

correction :

Voici le programme à utiliser :

#include <LiquidCrystal.h> //Inclusion de la librairie LiquidCrystal
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Pins de l'afficheurs lcd
int i, j ; //Déclaration de i et j, variables égales à zéro
byte barre[] = { //Création du caractères de chargement
B111111,
B111111,
B111111,
B111111,
B111111,
B111111,
B111111,
B111111
};
void setup() {
lcd.begin(20, 4); //Activation de l'afficheur lcd
}
void loop() {
while(i != 100){
while(i < 100){
lcd.createChar(1, barre); //Déclaration du caractère de chargement
delay(250); //On attends 250 ms
i++ ; //i augmente de 1
lcd.setCursor(8, 1); //On place le curseur à la colonne 8, ligne 1
lcd.print(i); //On écrit la valeur de i
lcd.print("%"); //Puis le signe % (pourcent)
affichage(); //Utilisation de la fonction affichage déclarée plus bas
if(i == 100){
lcd.clear(); //Si i = 100, on efface l'écran
}
}
while(i == 100 && j < 20){
lcd.setCursor(8, 1); //On place le curseur à la colonne 8, ligne 1
lcd.print(i); //On écrit la valeur de i
lcd.print("%"); //Puis le signe % (pourcent)
lcd.setCursor(j, 2); //On place le curseur à la colonne égale à la valeur de j et à la ligne 2
lcd.write(byte(1)); //On affiche le caractère de chargement
j++ ; //j augmente de 1
}
}
}
void affichage(){ //Fonction permettant de gérer l'affichage du caractère de chargement. Je ne la détaillerai pas ici
switch(i){
case 5 :
lcd.setCursor(0, 2);
lcd.write(byte(1));
break ;
case 10 :
lcd.setCursor(1, 2);
lcd.write(byte(1));
break ;
case 15 :
lcd.setCursor(2, 2);
lcd.write(byte(1));
break ;
case 20 :
lcd.setCursor(3, 2);
lcd.write(byte(1));
break ;
case 25 :
lcd.setCursor(4, 2);
lcd.write(byte(1));
break ;
case 30 :
lcd.setCursor(5, 2);
lcd.write(byte(1));
break ;
case 35 :
lcd.setCursor(6, 2);
lcd.write(byte(1));
break ;
case 40 :
lcd.setCursor(7, 2);
lcd.write(byte(1));
break ;
case 45 :
lcd.setCursor(8, 2);
lcd.write(byte(1));
break ;
case 50 :
lcd.setCursor(9, 2);
lcd.write(byte(1));
break ;
case 55 :
lcd.setCursor(10, 2);
lcd.write(byte(1));
break ;
case 60 :
lcd.setCursor(11, 2);
lcd.write(byte(1));
break ;
case 65 :
lcd.setCursor(12, 2);
lcd.write(byte(1));
break ;
case 70 :
lcd.setCursor(13, 2);
lcd.write(byte(1));
break ;
case 75 :
lcd.setCursor(14, 2);
lcd.write(byte(1));
break ;
case 80 :
lcd.setCursor(15, 2);
lcd.write(byte(1));
break ;
case 85 :
lcd.setCursor(16, 2);
lcd.write(byte(1));
break ;
case 90 :
lcd.setCursor(17, 2);
lcd.write(byte(1));
break ;
case 95 :
lcd.setCursor(18, 2);
lcd.write(byte(1));
break ;
}
}
 

3- Branchements

 Afficheur –> Arduino

Vss –> GND

Vdd –> 5V

V0 (contraste) –> Potentiomètre 20kohms–> GND

RS –> D2

R/W –> GND

E –> D3

DB4 –> D4

DB5 –> D5

DB6 –> D6

DB7 –> D7

Led + –> 5V

Led – –> GND

Les branchements de votre afficheur ne sont pas forcément les mêmes, quoi qu’il en soit, vous retrouverez toujours les pins RS, R/W, E, DB4, DB5, DB6, DB7 sous des noms proches. Consultez toujours les datasheets avant de brancher quoi que ce soit.

4- Tests

 Reliez votre Arduino à l’USB ou à l’alimentaion par connecteur Jack et admirez notre travail !!

N’hésitez pas à poser vos questions en commentaires et à me signaler d’éventuels bugs de programme.

Une photo de mon coté :

TOSHIBA CAMCORDER

 

J’aurais beaucoup de plaisir à lire vos avis à propos de ce premier tuto donc n’hésitez pas à me laisser un petit mot !!

Bon Week-end et bon bidouillage à tous !!

2016-12-20T11:38:21+00:00 2 novembre, 2013|Categories: News|

Aucun commentaire

  1. azerty08 6 novembre 2013 à 17 h 15 min␣- Répondre

    merci pour l’article 🙂

  2. zup 17 novembre 2013 à 10 h 08 min␣- Répondre

    je ne sais pas si c’est un défaut matériel mais mon afficheur lcd se refuse à afficher quoi que ce soit et se contente de clignoter sans cesse de manière inquiétante …. 😥

    • Mistral30 18 novembre 2013 à 13 h 53 min␣- Répondre

      Je ne peux que te conseiller d’aller sur le forum ➡ (http://arduino.leforum.eu) car je n’ai pas les détails de l’afficheurs et qu’il sera plus simple d’apporter des réponses à ton problème !!

Laisser un commentaire