Affichage LCD avec arduino

· Read in about 5 min · (854 words)

Dans un précédent article, nous avons fait pour notre premier circuit qui consistait à allumer toutes LEDs les unes après les autres. Dans ce second article consacré à Arduino, nous allons faire un exemple très simple avec un écran LCD. Nous allons faire un système de décollage. Lorsque l’utilisateur va appuyer sur le bouton, cela va déclencher un compte à rebours et lorsqu’il arrive à zéro, le mot décollage s’affichera et une LED rouge va s’allumer.

Schéma technique & Câblage

Pour réaliser notre circuit électrique, nous aurons besoin:

  • De deux résistances 220 Ohm
  • Une résistance de 10k Ohm
  • Un potentiomètre
  • L’écran LCD
  • Un bouton poussoir

La figure ci-dessous illustre le schéma électrique pour notre câblage. De prime abord, ça semble compliqué, mais c’est relativement simple.

Schéma technique

Tout d’abord, nous allons brancher notre bouton poussoir, puis relier une connectique sur le 5V et l’autre connectique sur le pin 13 de la carte Arduino et sur la résistance 10K Ohm qui sera par la suite connecté sur le GND (masse). Pour la LED qui va s’allumer lors du décollage, nous allons brancher l’anode + sur le pin 8 qui va permettre d’alimenter notre LED et la cathode, nous la branchons sur la résistance 220 Ohm puis sur la masse.

Passons maintenant à notre potentiomètre. Un potentiomètre possède 3 petites pattes. L’une des pattes, nous allons la connecter sur le 5V et l’autre sur la GND. La patte du milieu doit être connectée sur la connectique V0 de l’écran LCD. Grâce à ces propriétés variables du potentiomètre, nous allons pouvoir gérer le contraste de notre LCD.

Passons maintenant à la dernière étape qui est le branchement du LCD. Tout d’abord, nous devons brancher les connectiques LED+ et LED-. La première sera connectée sur la résistance 220 Ohm puis sur le 5V et la connectique LED- sur la GND. La connectique Vdd pour l’alimentation sera aussi connectée sur le 5V directement et la patte Vss sera relié à la masse.

L’interface RS (Register Select) permet de contrôler l’apparition des caractères sur l’écran, nous allons câbler directement sur le pin 12 de la carte Arduino. L’interface Read/Write (R/W) permet de mode de lecture ou écriture. Nous utilisons que le mode écriture, donc nous allons le brancher sur le GND. Le pin E (Enable) indique au LCD qu’il va recevoir une commande et nous la connectons sur le pin 11 de la carte.

Les pins DB0-DB7 permettent la de transmettre les données sur 8 bits. Nous n’allons transmettre que 4 bits, nous connecterons seulement les interfaces DB4-DB7 respectivement sur les pins 5, 4, 3 et 2.

Nous avons terminé avec notre câblage et voici le montage que j’ai effectué:

Montage

Réalisation du code

Maintenant que le câblage est réalisé, nous pouvons commencer à faire le code. Tout d’abord, nous allons indiquer à arduino d’utiliser la librairie LCD:

#include <LiquidCrystal.h>

Pour utiliser la librairie LCD, vous devez installer le package depuis l’IDE d’arduino. Cette librairie fournit un ensemble de fonctions.

Nous allons ensuite créer quelques variables:

LiquidCrystal lcd(12,11, 5, 4, 3, 2);
const int ledPin = 8;
const int switchPin = 13;
int switchState = 0;
int prevSwitchState = 0;

Nous allons d’abord créer une variable LCD de type LiquidCrystal et elle prend différentes valeurs. Nous spécifions les PIN qui relient les connectiques RS, E ainsi que les connectiques allant de DB4 à DB7. Ensuite, nous créons les variables ledPin et switchPin qui contiennent respectivement le numéro de pin. Les autres variables vont nous servir pour détecter l’état du boutton poussoir.

Dans notre fonction setup, nous initialisons nos Pins ainsi que l’écran LCD via la fonction begin:

pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2);
lcd.print("..."); // Display text in LCD

Maintenant, passons à la fonction loop. Dans cette fonction, nous devons récupérer l’état de notre bouton poussoir. Pour récupérer, l’état, nous utilons la fonction digitalRead qui prend en paramètre le pin d’entrée, ici c’est le pin 13. Pour identifier si le bouton poussoir est dans un état différent que précédemment, nous allons utiliser la déclaration if:

if (prevSwitchState != switchState){
  if (switchState == LOW) { 

Grâce à une boucle for, nous allons afficher notre décompte sur l’écran toutes les secondes:

for (int i = 10; i != 0; i--){
  lcd.print(i);
  delay(1000);
  lcd.clear();
}

Lorsque le programme qui la boucle for, nous avons fini notre décompte nous allons afficher le texte “décollage” et allumer notre LED rouge:

lcd.clear();
lcd.print("Decollage!!");
digitalWrite(ledPin, HIGH);

delay(3000);
lcd.clear();
digitalWrite(ledPin, LOW);

Et pour finir, nous allons stocker le nouvel état du bouton poussoir dans la variable prevSwitchState après le if (switchState == LOW): prevSwitchState = switchState.

Voici le code complet:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11, 5, 4, 3, 2);
const int ledPin = 8;
const int switchPin = 13;
int switchState = 0;
int prevSwitchState = 0;

void setup() {
  pinMode(switchPin, INPUT);
  pinMode(ledPin, OUTPUT);
  lcd.begin(16, 2);
  lcd.print("...");
}

void loop() {
  switchState = digitalRead(switchPin);

  if (prevSwitchState != switchState){
    if (switchState == LOW){
      lcd.clear();
      for (int i = 10; i != 0; i--){
        lcd.print(i);
        delay(1000);
        lcd.clear();
      }
      lcd.clear();
      lcd.print("Decollage!!");
      digitalWrite(ledPin, HIGH);

      delay(3000);
      lcd.clear();
      digitalWrite(ledPin, LOW);
    }
    prevSwitchState = switchState;
  }
}

Vous pouvez désormais vérifier le code, puis l’envoyer sur votre carte Arduino.