Au cours des trois derniers jours, vous avez développé des connaissances de base sur la construction d'un petit circuit, le soudage et la mise en service d'un microcontrôleur. Ce que les elfes de Noël n'ont pas encore sorti, ce sont des périphériques pour le micro contrôleur. Les elfes de Noël veulent corriger cela aujourd'hui et ont 6 composants cachés derrière la porte quatre.
Ce qu'il y a derrière la porte numéro 4
Derrière la porte numéro quatre, vous trouverez
- Affichage du module LCD 3 x HD44780 1602 (éclairage vert)
- 3 x adaptateurs d'interface I2C pour le soudage
Vous avez également besoin des bibliothèques de programmes pour l'IDE Arduino Liquide Crystal et/ou LiquidCrystal_I2C. Nous montrons comment cela fonctionne ici.
En général, vous avez trois options différentes pour connecter l'écran à un microcontrôleur (voir illustration 1).
Illustration 1: Le module LCD HD44780 1602 affiche les options de connexion
La première variante, dans l'image ci-dessus, est la variante originale avec un embout soudé (non inclus dans le volume de livraison). Mais cela signifie aussi que sur un micro contrôleur, au moins 6 broches sont utilisées, nous en parlerons plus tard.
L'autre variante consiste d'un adaptateur d'interface I2C soudé, qui peut être fixé à l'avant ou à l'arrière. Assurez-vous que les en-têtes à quatre broches pour la connexion au microcontrôleur sont toujours orientées vers l'extérieur, sinon l'écran du module LCD HD44780 1602 risque d'être détruit.
Connexion classique
Dans la variante classique l'écran LCD est connecté au microcontrôleur sur un total de 6 broches. La figure 2 montre une telle connexion, où le potentiomètre 10kOhm est utilisé pour le contraste sur l'écran.
Illustration 2: Interface parallèle de connexion LCD
Le code correspondant (voir code 1) est fin et affiche le message "Ecran LCD sans ic2" sur deux lignes
//-----------------------------------------------------
// LiquidCrystal parallel interface
// Autor: Joern Weise
// License: GNU GPl 3.0
// Created: 24. Nov 2020
// Update: 24. Nov 2020
//-----------------------------------------------------
#include <LiquidCrystal.h> //include the LiquidCrystal library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//define LCD pins (RS, E, D4, D5, D6, D7)
void setup() {
lcd.begin(16, 2); //initializes the LCD and specifies the dimensions
lcd.home();
lcd.print(" LCD-Display ");
lcd.setCursor(0, 1);
lcd.print(" without i2c ");
}
void loop()
{
}
Code 1: Edition simple
Au fait, le calcul pour la position du curseur et la ligne commence toujours à 0, donc lcd.setCursor(0,1) ; est le premier chiffre de la deuxième ligne.
Connexion avec adaptateur d'interface I2C
Si vous voulez faire fonctionner l'écran avec I2C, vous devez souder l'adaptateur d'interface I2C à l'écran. En principe, vous pouvez faire fonctionner jusqu'à 8 écrans LCD si vous définissez différentes adresses en format hexadécimal via les pavés d'adresse. Le tableau 1 montre comment souder le pavé d'adresse pour obtenir l'adresse HEX souhaitée (voir la figure 3). "X" signifie connecté, "0" non connecté.
Article |
A0 |
A1 |
A2 |
Adresse hexadécimale |
1 |
X |
X |
X |
0X20 |
2 |
0 |
X |
X |
0X21 |
3 |
X |
0 |
X |
0X22 |
4 |
0 |
0 |
X |
0X23 |
5 |
X |
X |
0 |
0X24 |
6 |
0 |
X |
0 |
0X25 |
7 |
X |
0 |
0 |
0X26 |
8 |
0 |
0 |
0 |
0X27 |
Table 1: Adresse hexadécimale pour les blocs d'adresse
Illustration 3: Position des pavés d'adresse pour changer l'adresse HEX
L'adresse de base est 0x27, les trois ponts de soudure sont ouverts.
La connexion à une par ex. carte microcontrôleur compatible avec Arduino Uno R3 est assez simple, car les broches I2C du microcontrôleur sont utilisées, c'est-à-dire SDA vers A4, SCL vers A5, VCC vers 5V et GND vers GND (voir figure 3). Ici, sur la figure 3, le potentiomètre pour le contraste de l'écran LCD peut également être bien vu.
Figure 4 : Connexion du HD44780 1602 LCD avec I2C à la carte du microcontrôleur
Le code 2 produit également un message sur deux lignes ; ici, il s'agit de la phrase "Écran LCD avec i2c". Nous utilisons ici la deuxième bibliothèque pour LiquidCrystal avec l'ajout I2C.
//-----------------------------------------------------
// LiquidCrystal I2C connection
// Autor: Joern Weise
// License: GNU GPl 3.0
// Created: 24. Nov 2020
// Update: 24. Nov 2020
//-----------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight(); // backlight on
lcd.home(); // set cursor to 0,0
//Write some text
lcd.print(" LCD-Display ");
lcd.setCursor(0, 1);
lcd.print(" with i2c ");
}
void loop()
{
}
Code 2: sortie simple via i2c
Bien évidemment, la combinaison des deux variantes de connexion est également possible. Pour cela, vous devez construire le circuit à partir de la figure 2 et de la figure 4 en même temps et bien sûr inclure les deux bibliothèques.
Dans ce sens….
Figure 5: Nous souhaitons un joyeux Noël
Vous avez maintenant mis la porte numéro 4 en service et acquis un peu de connaissances de base. Si vous voulez des idées de projets, voici quelques projets:
Plus de projets pour AZ-Delivery de ma part, vous pouvez trouver sous https://github.com/M3taKn1ght/Blog-Repo.
L'équipe AZ-Delivery vous souhaite une belle saison de l'Avent
5 commentaires
Andreas Wolter
@Wolf Fietz: auf Abbildung 1 sind zwei Möglichkeiten abgebildet. Ansonsten könnten Sie noch einen Blick auf diese Beiträge werfen:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/binaerumrechner-mit-arduino-und-i2c-lcdisplay
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/mein-i2c-display-adapter-geht-nicht
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/verschiedene-varianten-einer-anzeige-fuer-messwerte-am-beispiel-einer-fuellstandsanzeige
Im Grunde funktioniert der Adapter wie ein Shield. Die Pins passen genau übereinander. Man muss nur darauf achten, dass die vier Anschlüsse nach außen zeigen.
Grüße,
Andreas Wolter
AZ-Delivery Blog
wolf fietz
hi, ich habe heute – 14.07.2022 – bekommen :
HD44780 2004 LCD Display Bundle 4×20
Zeichen mit I2C Schnittstelle – 1x Bundle
Leider ist die Schnittstellenkarte Nicht mit dem
Display verbunden sondern muß noch angelötet werden.
Es liegt Keine Anweisung dazu bei, wie herum das gemacht werden muß !
Wo finde ich dazu etwas ?
Yannic Thiel
Guten Tag
Ich bin absoluter Neuling im Bereich Arduino und Co. Ich hangele mich derzeit von Forum zu Forum und kleine, einfach Programme zum laufen zu bekommen. Ich habe aber ein Problem, dass mich seit Freitag Abend beschäftigt und ich keine vernünftige Lösung dazu finde. Wie kann ich Text, der länger als 16 Zeichen ist, durchscrollen lassen?
Bernd Albrecht
Unser französischer Freund fragt nach Unterschieden bei den Programm-Bibliotheken und wie man die tatsächliche I2C-Adresse eines Bauteils überprüft.
1. Der einzige Unterschied, den ich festgestellt habe, war bei der Initialisierung des Display-Objekts lcd. Wer bei lcd.init() eine Fehlermeldung erhält, sollte es mit lcd.begin() probieren.
2. Zur Überprüfung der I2C-Adresse benötigt man einen Micro Controller, auf dem die Programm-Bibliothek SoftwareSerial funktioniert, z.B. unseren Nano, sowie einen geeigneten Sketch, z.B. aus unserem Blog-Beitrag vom 5. Oktober 2020: https://www.az-delivery.de/en/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ein-praktischer-und-kostengunstiger-i2c-scanner.
Notre ami français demande quelles sont les différences dans les bibliothèques de programmes et comment vérifier l’adresse I2C réelle d’une pièce.
1. La seule différence que j’ai remarquée était l’initialisation de l’objet d’affichage lcd. Si vous obtenez un message d’erreur avec lcd.init (), vous devriez essayer lcd.begin ().
2. Pour vérifier l’adresse I2C, vous avez besoin d’un microcontrôleur sur lequel fonctionne la bibliothèque de programmes SoftwareSerial, par ex. notre nano, ainsi qu’un croquis approprié, par ex. de notre article de blog du 5 octobre 2020: https://www.az-delivery.de/en/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ein-praktischer-und-kostengunstiger-i2c-scanner.
Reitzer
Bonjour, merci pour votre partage!
Je démarre dans le “hobby” Arduino et il est difficile pour moi de savoir si toute les bibliothèques “LiquidCrystal_I2C.h” sont équivalentes (en fonction des auteurs) ou non, comment les choisir et ou les trouver…
D’autre part je ne suis pas sur de comprendre… L’adresse du LCD (ici 0×27) est un paramètre ‘physique’ du composant, je me trompe? si oui comment puis-je vérifier si l’adresse est effectivement correcte?
Merci a l’avance pour votre aide,
et bonne fête a vous aussi!