Leçon 20/31 : Affichage de la tension sur LCD1602
Ce projet montre comment construire un voltmètre numérique à l'aide d'un Arduino et d'un écran LCD1602 avec une interface I2C. En lisant la tension analogique d'un potentiomètre et en l'affichant à l'écran, vous apprendrez les compétences essentielles de la conversion analogique-numérique, de la communication I2C et du contrôle d'un écran LCD.
Ce projet est une excellente étape pour de nombreuses applications pratiques. Voici quelques idées sur lesquelles vous pouvez vous appuyer :
- Construire un moniteur de tension de batterie portable pour vos projets.
- Créer une alimentation simple avec un affichage visuel de la tension.
- Surveiller la sortie d'un panneau solaire ou d'une autre source de tension variable.
- Afficher la valeur de n'importe quel capteur analogique, comme une photorésistance (LDR), sous forme de nombre lisible.
À la fin de ce guide, vous aurez une compréhension claire de la façon de connecter les composants, de configurer les bibliothèques nécessaires et d'écrire le code pour créer votre propre affichage de tension.
Composants matériels
Pour construire ce projet, vous aurez besoin des composants suivants. Le cours est basé sur le kit Arduino 3-en-1 de SunFounder, qui comprend toutes ces pièces.
- Carte Arduino (par exemple, Uno)
- Écran LCD1602 avec module I2C
- Potentiomètre (10kΩ recommandé)
- Fils de connexion
- Plaque d'essai (breadboard)
Comprendre le LCD1602 et le module I2C
Le LCD1602 est un afficheur alphanumérique populaire avec 16 colonnes et 2 lignes. Un LCD parallèle standard nécessiterait de nombreuses broches numériques pour être contrôlé. Cependant, cet écran est livré avec un module I2C dédié fixé à l'arrière (dans la vidéo à 01:30). Ce module simplifie considérablement le câblage, réduisant la connexion à seulement quatre fils : VCC, GND, SDA et SCL. Cela est possible car le module I2C agit comme un pont, traduisant le simple signal série I2C en signaux parallèles dont le LCD a besoin.
Ce projet utilise l'interface I2C, qui est un protocole de communication permettant à votre Arduino de parler à plusieurs appareils en utilisant seulement deux fils. C'est une compétence fondamentale pour connecter de nombreux types de capteurs et d'écrans.
Guide de câblage
Connecter le LCD et le potentiomètre à l'Arduino est simple. Le module I2C a besoin d'alimentation et de deux lignes de communication. Le potentiomètre agit comme un diviseur de tension variable, vous permettant d'ajuster la tension à sa broche de sortie (wiper).
Voici la configuration de câblage détaillée :
- Module I2C du LCD à l'Arduino :
- GND vers GND de l'Arduino (dans la vidéo à 05:38).
- VCC vers 5V de l'Arduino (dans la vidéo à 05:47).
- SDA vers A4 de l'Arduino (dans la vidéo à 05:47).
- SCL vers A5 de l'Arduino (dans la vidéo à 05:57).
- Potentiomètre à l'Arduino :
- Broche gauche vers 5V de l'Arduino (dans la vidéo à 33:39).
- Broche du milieu (wiper) vers A0 de l'Arduino (dans la vidéo à 33:43).
- Broche droite vers GND de l'Arduino (dans la vidéo à 33:43).
Installation de la bibliothèque requise
Ce projet nécessite une bibliothèque externe pour contrôler le LCD via I2C. La bibliothèque utilisée dans la vidéo est la bibliothèque « Arduino Liquid Crystal I2C ». Vous pouvez la télécharger à partir du lien fourni sur la page de ressources Robojax ou depuis GitHub (dans la vidéo à 06:16).
Pour l'installer, téléchargez la bibliothèque sous forme de fichier ZIP. Ensuite, dans votre IDE Arduino, allez dans Croquis > Inclure une bibliothèque > Ajouter la bibliothèque .ZIP... et sélectionnez le fichier téléchargé (dans la vidéo à 06:41).
Trouver l'adresse I2C de votre LCD
Avant de téléverser le code principal, il est crucial de déterminer l'adresse I2C de votre module LCD spécifique. Cette adresse peut varier selon le fabricant. La vidéo montre comment utiliser un scanner I2C pour la trouver (dans la vidéo à 08:11).
Vous pouvez trouver ce scanner en allant dans Fichier > Exemples > Wire > i2c_scanner. Téléversez ce code sur votre Arduino avec le LCD connecté, et ouvrez le moniteur série. Il affichera l'adresse, qui est souvent 0x27 ou 0x3F. Vous devrez utiliser cette adresse dans votre code principal.
Explication du code
Le code de ce projet est axé sur la lecture d'une valeur analogique et son formatage pour l'affichage. Décomposons les parties clés et configurables par l'utilisateur.
1. Inclusions de bibliothèques et objet LCD
Cette section inclut les bibliothèques nécessaires et crée un objet pour votre LCD. La partie la plus importante ici est l'adresse I2C, que vous devez modifier pour correspondre à celle trouvée à l'étape précédente.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Définissez l'adresse LCD sur 0x27 pour un affichage de 16 ou 20 caractères et 2 ou 4 lignes
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Cette bibliothèque est intégrée à Arduino et est requise pour la communication I2C.#include <LiquidCrystal_I2C.h>: Cela inclut la bibliothèque que nous venons d'installer, qui fournit les fonctions pour contrôler l'écran LCD.LiquidCrystal_I2C lcd(0x27, 16, 2);: Cette ligne crée un objet nommélcd. Le premier paramètre,0x27, est l'adresse I2C que vous avez trouvée précédemment. Les deuxième et troisième paramètres définissent les dimensions de l'écran LCD : 16 colonnes et 2 lignes. Vous devez changer0x27pour votre adresse spécifique si elle est différente.
2. Fonctions Setup et Loop
La fonction setup() initialise l'écran LCD et allume son rétroéclairage. La fonction loop() contient la logique principale pour lire la tension et l'afficher.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (code d'affichage LCD)
delay(1000);
}
lcd.begin(): Cela initialise l'interface LCD et la prépare à être utilisée.lcd.backlight(): Cela allume le rétroéclairage de l'écran, rendant le texte visible.int potValue = analogRead(A0);: Cela lit la valeur analogique brute de la broche A0, qui est connectée au curseur du potentiomètre. La valeur sera un entier entre 0 et 1023, représentant la tension de 0V à 5V.float voltage = potValue * (5.0 / 1023.0);: C'est l'étape de conversion cruciale. Elle convertit la valeur ADC brute en une lecture de tension réelle. La formule multiplie la valeur brute par le rapport entre la tension de référence (5,0 V) et la valeur ADC maximale (1023). Cela est nécessaire car l'ADC ne lit pas la tension directement ; il lit un nombre proportionnel.
3. Affichage de la tension
Le code efface ensuite l'écran et imprime la valeur de tension à une position spécifique sur la deuxième ligne.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // aller au début de la 2ème ligne
lcd.print("Voltage:");
lcd.setCursor (9,1); // définir à la ligne 2, caractère 9
lcd.print(voltage);
lcd.setCursor (13,1); // définir à la ligne 2, caractère 14
lcd.print("V");
lcd.clear(): Efface tout texte précédent de l'écran.lcd.print("LCD1602 Tutorial"): Imprime le titre sur la première ligne.lcd.setCursor (0,1): Place le curseur au début de la deuxième ligne. Le premier paramètre est la colonne (0-15), et le second est la ligne (0 pour la première ligne, 1 pour la deuxième).lcd.print(voltage): Imprime la valeur de tension calculée. La variablefloatsera imprimée avec deux décimales par défaut.lcd.setCursor (13,1): Déplace le curseur à la colonne 13 sur la deuxième ligne pour positionner le caractère "V" juste après le nombre.
Démonstration du projet en direct
Une fois que vous avez téléversé le code, l'écran LCD devrait afficher "LCD1602 Tutorial" sur la première ligne. Sur la deuxième ligne, il affichera "Voltage:" suivi de la lecture de tension actuelle. Lorsque vous tournez le bouton du potentiomètre, vous verrez la tension affichée changer en temps réel, allant d'environ 0,00 V à 5,00 V (dans la vidéo à 35:25).
Ce projet est un exemple parfait de la façon de prendre un signal analogique brut et de le transformer en une valeur claire et lisible par l'humain. Les compétences que vous avez apprises ici peuvent être directement appliquées à tout autre capteur analogique que vous pourriez utiliser à l'avenir.
La vidéo couvre également d'autres sujets connexes, tels que l'affichage de texte, le défilement et la création de caractères personnalisés sur l'écran LCD.
Projets connexes de cette vidéo
- Leçon 20/31 : Utilisation de LCD1602 avec Arduino pour afficher du texte | Robojax
- Leçon 20/31 : Affichage de la température et de l'humidité du DHT11 sur un écran LCD
Chapitres
- [00:00] Introduction au LCD1602 et aperçu du projet
- [01:30] Explication du matériel LCD1602 et du module I2C
- [04:06] Réglage de l'adresse I2C avec les cavaliers
- [05:28] Schéma de câblage pour le LCD1602
- [07:31] Explication du code pour l'affichage de texte de base
- [11:10] Démonstration de l'exemple du curseur clignotant
- [13:46] Création et utilisation de caractères personnalisés
- [18:51] Utilisation de l'exemple d'affichage série
- [23:16] Défilement du texte sur l'écran LCD
- [26:13] Affichage de la température et de l'humidité du DHT11
- [33:00] Lecture et affichage de la tension d'un potentiomètre
- [35:56] Affichage de la distance d'un capteur ultrasonique
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count =700;
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Voltage:");
lcd.setCursor (9,1); // set to line 2 char 9
lcd.print(voltage);
lcd.setCursor (13,1); // set to line 2 char 14
lcd.print("V");
//lcd.setCursor (3,3); // set to line 4 character 4
//lcd.print("Text in line 4");
delay(1000);
count++;
//end of loopcode Robojax code for LCD with I2C
}
Ce dont vous pourriez avoir besoin
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Ressources et références
-
DocumentationDocumentation pour le kit d'apprentissage IoT/Smart Car/en 3 en 1 de SunFounderdocs.sunfounder.com
-
Externe
Fichiers📁
Bibliothèques Arduino (zip)
-
Code source du kit d'apprentissage Smart Car 3-en-1 de SunFounder.
3in1-kit-main-v2.zip12.80 MB
Manuel de l'Utilisateur
-
Manuel d'assemblage de la voiture intelligente SunFounder 3-en-1 ArduinoCe document montre l'assemblage étape par étape de la voiture intelligente SunFounder 3-en-1 Arduino
SunFounder_car_assembly_manual.pdf1.20 MB