Connexion LCD Arduino nano i2c. Connexion de l'écran LCD LCM1602 avec I2C à Arduino. Programme pour créer facilement des symboles
Le module LCD I2C vous permet de connecter un afficheur de caractères à la carte Arduino en utilisant seulement deux fils de signal.
Composants utilisés (acheter en Chine) :
. Tableau de contrôle
. Fils de connexion
Principales caractéristiques techniques :
Affichage : Caractère 16x02 ou 20x04
. Rétroéclairage : bleu avec caractères blancs
. Contraste : Ajustable par potentiomètre
. Tension d'alimentation : 5 V
. Interface : I2C
. Adresse I2C : 0x27
. Dimensions : 82 mm x 35 mm x 18 mm
Connexion à Arduino
Le module est équipé d'un connecteur à quatre broches de 2,54 mm
SCL: ligne d'horloge série (Serial CLock)
S.D.A.: ligne de données série (Serial DAta)
VCC: "+" puissance
GND: "-" pouvoir
Les broches responsables de l'interface I2C sur les cartes Arduino basées sur différents contrôleurs varient
Pour travailler avec ce module, vous devez installer la bibliothèque LiquidCrystal_I2C1602V1
Téléchargez-le, décompressez-le et placez-le dans le dossier bibliothèques du dossier Arduino. Si l'IDE Arduino était ouvert au moment de l'ajout de la bibliothèque, redémarrez l'environnement.
Passons directement au croquis. DANS dans cet exemple afficher le standard "Bonjour tout le monde !" et pour notre discours communautaire.
exemple de code de programme :
#inclureCréez vos propres symboles
Nous avons trié la sortie du texte, les lettres de l'alphabet anglais sont câblées dans la mémoire du contrôleur à l'intérieur de l'écran et elles ne posent aucun problème. Mais que faire si le symbole recherché n’est pas dans la mémoire du contrôleur ?
Pas de problème, le symbole requis peut être créé manuellement. Cette méthode En partie, la limite de 7 caractères aidera à résoudre le problème de sortie.
La cellule des écrans que nous envisageons a une résolution de 5x8 pixels. La tâche de création d'un symbole se résume simplement à écrire un masque de bits et à y placer des valeurs aux endroits où les points doivent être allumés et des zéros là où ils ne doivent pas être.
Dans l'exemple ci-dessous, nous dessinerons un visage souriant.
exemple de code de programme :
//Testé sur Arduino IDE 1.0.5 // Ajout des bibliothèques nécessaires#inclureProgramme pour créer facilement des symboles
Dans les commentaires, un membre de la communauté a envoyé un lien vers le générateur de symboles
- Le module FC-113 est basé sur la puce PCF8574T, qui est un registre à décalage de 8 bits - un « expanseur » d'entrée-sortie pour bus série I2C. Sur la figure, le microcircuit est désigné DD1.
- R1 est une résistance de réglage permettant de régler le contraste de l'écran LCD.
- Le cavalier J1 est utilisé pour allumer le rétroéclairage de l'écran.
- Les broches 1 à 16 sont utilisées pour connecter le module aux broches de l'écran LCD.
- Les plages de contact A1...A3 sont nécessaires pour modifier l'adresse I2C de l'appareil. En soudant les cavaliers appropriés, vous pouvez modifier l'adresse de l'appareil. Le tableau montre la correspondance des adresses et des cavaliers : « 0 » correspond à un circuit ouvert, « 1 » à un cavalier installé. Par défaut, les 3 cavaliers sont ouverts et l'adresse de l'appareil 0x27.
2 Schéma de connexion de l'écran LCD à Arduino via le protocole I2C
Le module se connecte à Arduino de manière standard pour le bus I2C : la broche SDA du module est connectée au port analogique A4, la broche SCL est connectée au port analogique A5 de l'Arduino. Le module est alimenté par +5 V depuis Arduino. Le module lui-même est connecté par les broches 1 à 16 aux broches correspondantes 1 à 16 sur l'écran LCD.
![](https://i0.wp.com/soltau.ru/images/LCD-I2C/2.png)
3 Bibliothèque pour le travail via le protocole I2C
Nous avons maintenant besoin d'une bibliothèque pour travailler avec LCD via l'interface I2C. Vous pouvez utiliser par exemple celui-ci (lien dans la ligne "Télécharger l'exemple de code et la bibliothèque").
Archives téléchargées LiquidCrystal_I2Cv1-1.rar décompresser dans un dossier \bibliothèques\, qui se trouve dans le répertoire Arduino IDE.
La bibliothèque prend en charge un ensemble de fonctions standards pour les écrans LCD :
Fonction | But |
---|---|
Liquide Crystal() | crée une variable de type LiquidCrystal et accepte les paramètres de connexion d'affichage (numéros de broches) ; |
commencer() | initialisation de l'écran LCD, réglage des paramètres (nombre de lignes et de caractères) ; |
clair() | effacer l'écran et ramener le curseur à la position de départ ; |
maison() | ramener le curseur à la position de départ ; |
setCurseur() | placer le curseur à une position donnée ; |
écrire() | affiche le symbole sur l'écran LCD ; |
imprimer() | affiche le texte sur l'écran LCD ; |
le curseur() | affiche le curseur, c'est-à-dire souligner sous la place du caractère suivant ; |
pas de curseur() | masque le curseur ; |
clignoter() | le curseur clignote ; |
noBlink() | Annuler le clignotement ; |
pas d'affichage() | éteindre l'écran tout en enregistrant toutes les informations affichées ; |
afficher() | allumer l'écran tout en enregistrant toutes les informations affichées ; |
scrollDisplayLeft() | faites défiler le contenu de l'affichage d'une position vers la gauche ; |
scrollDisplayRight() | faites défiler le contenu de l'affichage d'une position vers la droite ; |
défilement automatique() | activer le défilement automatique ; |
pas de défilement automatique() | désactiver le défilement automatique ; |
de gauche à droite() | définit la direction du texte de gauche à droite ; |
de droite à gauche() | direction du texte de droite à gauche ; |
créerChar() | crée un caractère personnalisé pour l'écran LCD. |
4 Esquisse pour afficher du texte vers l'écran LCD via le bus I2C
Ouvrons l'exemple : Exemples de fichiers LiquidCrystal_I2C CustomChars et nous allons le retravailler un peu. Nous afficherons un message à la fin duquel il y aura un symbole clignotant. Les commentaires du code commentent toutes les nuances du croquis.
#inclure
Au fait, les caractères écrits par la commande lcd.createChar();, restent dans la mémoire d'affichage même après la mise hors tension, car écrit pour afficher la ROM 1602.
5 Créez vos propres symboles pour écran LCD
Examinons de plus près la question de la création de vos propres symboles pour les écrans LCD. Chaque caractère à l'écran est constitué de 35 points : 5 en largeur et 7 en hauteur (+1 ligne de réserve pour le soulignement). À la ligne 6 du croquis ci-dessus, nous définissons un tableau de 7 nombres : (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Convertissez les nombres hexadécimaux en binaires : {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Ces nombres ne sont rien d'autre que des masques de bits pour chacune des 7 lignes du symbole, où « 0 » désigne un point clair et « 1 » un point sombre. Par exemple, un symbole de cœur spécifié comme masque de bits apparaîtra à l'écran comme indiqué sur la figure.
![](https://i0.wp.com/soltau.ru/images/LCD-I2C/5.png)
6 Contrôle par écran LCD via le bus I2C
Téléchargeons le croquis sur Arduino. L'inscription que nous avons spécifiée avec un curseur clignotant à la fin apparaîtra à l'écran.
![](https://i2.wp.com/soltau.ru/images/LCD-I2C/6.jpg)
7 Qu'est-ce qu'il y a derrière Bus I2C
En bonus, regardons le chronogramme d'affichage des caractères latins « A », « B » et « C » sur l'écran LCD. Ces caractères sont stockés dans la ROM d'affichage et sont affichés à l'écran simplement en transmettant leurs adresses à l'écran. Le diagramme est tiré des broches RS, RW, E, D4, D5, D6 et D7 de l'écran, c'est-à-dire déjà après le convertisseur FC-113 « bus parallèle I2C ». On peut dire que nous approfondissons un peu le matériel.
![](https://i2.wp.com/soltau.ru/images/LCD-I2C/ABC_timing_diagram.png)
Le diagramme montre que les caractères qui se trouvent dans la ROM d'affichage (voir p. 11 de la fiche technique, lien ci-dessous) sont transmis en deux quartets, dont le premier détermine le numéro de colonne du tableau et le second - le numéro de ligne. Dans ce cas, les données sont « verrouillées » au bord du signal sur la ligne. E(Activer) et la ligne R.S.(Sélection du registre) est dans un état logique, ce qui signifie que les données sont en cours de transfert. Un état bas sur la ligne RS signifie que des instructions sont envoyées, ce que nous voyons avant la transmission de chaque caractère. Dans ce cas, le code instruction retour chariot est transmis à la position (0, 0) de l'afficheur LCD, que l'on peut également connaître en étudiant description technique afficher.
Et encore un exemple. Ce chronogramme montre la sortie du symbole cœur sur l'écran LCD.
![](https://i1.wp.com/soltau.ru/images/LCD-I2C/lcd_heart.png)
Encore une fois, les deux premières impulsions Activer respecter les consignes Maison()(0000 0010 2) - ramener le chariot en position (0 ; 0), et les deux seconds - afficher sur l'écran LCD stocké dans la cellule mémoire 3 10 (0000 0011 2) le symbole « Cœur » (instruction lcd.createChar(3, coeur); esquisser).
affichage LCD– un invité fréquent dans les projets Arduino. Mais en schémas complexes nous pouvons avoir le problème d'un manque de ports Arduino en raison de la nécessité de connecter un blindage qui a de très, très nombreuses broches. La solution dans cette situation pourrait être I2C/IIC adaptateur qui se connecte presque standard pour Écran Arduino 1602 vers les cartes Uno, Nano ou Mega avec seulement 4 broches. Dans cet article, nous verrons comment connecter un écran LCD à une interface I2C, quelles bibliothèques vous pouvez utiliser, rédigerons un court exemple de croquis et examinerons les erreurs courantes.
Affichage à cristaux liquides ACL 1602 est bon choix pour afficher des chaînes de caractères dans divers projets. C'est peu coûteux, il existe diverses modifications avec différentes couleurs de rétroéclairage, vous pouvez facilement télécharger des bibliothèques prêtes à l'emploi pour les croquis Arduino. Mais l'inconvénient le plus important de cet écran est le fait que l'écran dispose de 16 broches numériques, dont au moins 6 sont donc nécessaires pour son utilisation. écran LCD sans i2c ajoute de sérieuses limitations pour les cartes Arduino Uno ou Nano. S'il n'y a pas assez de contacts, vous devrez alors acheter une carte Arduino Mega ou enregistrer des contacts, notamment en connectant l'écran via i2c.
Brève description des broches LCD 1602
Examinons de plus près les broches du LCD1602 :
Chacune des broches a son propre objectif :
- Terre à la terre ;
- Alimentation 5 V ;
- Réglage du contraste du moniteur ;
- Commande, données ;
- Écriture et lecture de données ;
- Activer;
7-14. Lignes de données ;
- Plus rétroéclairage ;
- Moins le rétroéclairage.
Spécifications d'affichage :
- Type d'affichage de caractères, il est possible de charger des symboles ;
- Lumières LED;
- Contrôleur HD44780 ;
- Tension d'alimentation 5V ;
- Formater 16x2 caractères ;
- Plage de température de fonctionnement de -20C à +70C, plage de température de stockage de -30C à +80C ;
- Angle de vision 180 degrés.
Schéma de connexion de l'écran LCD à la carte Arduino sans i2C
Le schéma standard pour connecter un moniteur directement à un microcontrôleur Arduino sans I2C est le suivant.
En raison du grand nombre de contacts connectés, il se peut qu'il n'y ait pas assez d'espace pour connecter les éléments nécessaires. L'utilisation d'I2C réduit le nombre de fils à 4 et les broches occupées à 2.
Où acheter des écrans et des blindages LCD pour Arduino
L'écran LCD 1602 (et la version 2004) est très populaire, vous pouvez donc le trouver facilement aussi bien dans les magasins en ligne nationaux que sur des sites étrangers. Voici quelques liens vers les options les plus disponibles :
![]() ![]() | ![]() ![]() | ![]() ![]() |
![]() ![]() | ![]() ![]() | ![]() ![]() |
![]() ![]() | ![]() ![]() | ![]() ![]() |
Description du protocole I2C
Avant de discuter de la connexion de l'écran à Arduino via un adaptateur i2c, parlons brièvement du protocole i2C lui-même.
I2C/IIC(Inter-Integrated Circuit) est un protocole créé à l'origine pour la communication circuits intégrésà l’intérieur d’un appareil électronique. Le développement appartient à Philips. Le protocole i2c est basé sur l'utilisation d'un bus 8 bits, nécessaire à la communication des blocs dans l'électronique de contrôle, et d'un système d'adressage, grâce auquel vous pouvez communiquer sur les mêmes fils avec plusieurs appareils. Nous transférons simplement des données vers l'un ou l'autre appareil, en ajoutant l'identifiant de l'élément souhaité aux paquets de données.
Le plus circuit simple I2C peut contenir un périphérique maître (le plus souvent un microcontrôleur Arduino) et plusieurs esclaves (par exemple, un écran LCD). Chaque appareil a une adresse comprise entre 7 et 127. Il ne doit pas y avoir deux appareils avec la même adresse dans le même circuit.
La carte Arduino prend en charge i2c au niveau matériel. Vous pouvez utiliser les broches A4 et A5 pour connecter des appareils utilisant ce protocole.
Le fonctionnement I2C présente plusieurs avantages :
- Le fonctionnement ne nécessite que 2 lignes : SDA (ligne de données) et SCL (ligne de synchronisation).
- Connecter un grand nombre d’appareils leaders.
- Temps de développement réduit.
- Un seul microcontrôleur est nécessaire pour contrôler l’ensemble des appareils.
- Le nombre possible de microcircuits connectés à un bus n'est limité que par la capacité maximale.
- Haut degré de sécurité des données grâce à un filtre spécial de suppression des surtensions intégré aux circuits.
- Une procédure simple pour diagnostiquer les pannes émergentes et déboguer rapidement les pannes.
- Le bus est déjà intégré à l'Arduino lui-même, il n'est donc pas nécessaire de développer une interface de bus supplémentaire.
Défauts:
- Il y a une limite capacitive sur la ligne - 400 pF.
- Difficile de programmer un contrôleur I2C s'il y a plusieurs appareils différents sur le bus.
- À grandes quantités les appareils ont du mal à localiser un défaut si l'un d'eux règle par erreur l'état de niveau bas.
Module i2c pour LCD 1602 Arduino
Le plus rapide et moyen pratique Utiliser un écran i2c dans Arduino signifie acheter un écran prêt à l'emploi avec prise en charge du protocole intégré. Mais ces écrans ne sont pas très nombreux et ils ne sont pas bon marché. Mais un grand nombre d'écrans standards différents ont déjà été produits. Par conséquent, l'option la plus abordable et la plus populaire aujourd'hui consiste à acheter et à utiliser un module I2C séparé - un adaptateur, qui ressemble à ceci :
D'un côté du module, nous voyons les broches i2c - masse, alimentation et 2 pour le transfert de données. Sur l'autre adaptateur, nous voyons des connecteurs d'alimentation externes. Et bien sûr, la carte comporte de nombreuses broches avec lesquelles le module est soudé aux broches standard de l'écran.
Les sorties i2c sont utilisées pour se connecter à la carte Arduino. Si nécessaire, nous connectons une alimentation externe pour le rétroéclairage. Avec le trimmer intégré, nous pouvons définir des valeurs de contraste personnalisées J
Sur le marché, vous pouvez trouver des modules LCD 1602 avec des adaptateurs déjà soudés ; leur utilisation est simplifiée au maximum. Si vous avez acheté un adaptateur séparé, vous devrez d'abord le souder au module.
Connexion de l'écran LCD à Arduino via I2C
Pour vous connecter, vous avez besoin de la carte Arduino elle-même, d'un écran, d'une maquette, de fils de connexion et d'un potentiomètre.
Si vous utilisez un adaptateur i2c séparé spécial, vous devez d'abord le souder au module d'écran. Il est difficile de se tromper là-bas, vous pouvez suivre ce schéma.
Un moniteur LCD avec prise en charge i2c est connecté à la carte à l'aide de quatre fils : deux fils pour les données, deux fils pour l'alimentation.
- La broche GND se connecte à GND sur la carte.
- La broche VCC est à 5V.
- SCL se connecte à la broche A5.
- SDA est connecté à la broche A.
Et c'est tout ! Pas de réseaux de fils dans lesquels il est très facile de s'emmêler. Dans le même temps, on peut simplement confier toute la complexité de la mise en œuvre du protocole i2C aux bibliothèques.
Bibliothèques pour travailler avec l'écran LCD i2c
Pour interagir avec Arduino et LCD 1602 via le bus I2C, vous aurez besoin d'au moins deux librairies :
- La bibliothèque Wire.h pour travailler avec I2C est déjà disponible dans programme standard L'IDE Arduino.
- La bibliothèque LiquidCrystal_I2C.h, qui comprend une grande variété de commandes pour contrôler le moniteur via le bus I2C et permet de rendre le croquis plus simple et plus court. Vous devez également installer la bibliothèque. Après avoir connecté l'écran, vous devez également installer la bibliothèque LiquidCrystal_I2C.h.
Après avoir connecté toutes les bibliothèques nécessaires au croquis, nous créons un objet et pouvons utiliser toutes ses fonctions. Pour les tests, chargeons l’exemple d’esquisse standard suivant.
#inclure
Description des fonctions et méthodes de la bibliothèque LiquidCrystal_I2C :
- home() et clear() - la première fonction vous permet de ramener le curseur au début de l'écran, la seconde fait de même, mais supprime en même temps tout ce qui était auparavant sur le moniteur.
- write(ch) – vous permet d’imprimer un seul caractère ch à l’écran.
- Cursor() et noCursor() – affiche/masque le curseur sur l’écran.
- clignotant() et noBlink() – le curseur clignote/ne clignote pas (si son affichage a été activé auparavant).
- display() et noDisplay() – vous permettent de connecter/désactiver l’affichage.
- scrollDisplayLeft() et scrollDisplayRight() – font défiler l'écran d'un caractère vers la gauche/droite.
- autoscroll() et noAutoscroll() – vous permettent d'activer/désactiver le mode de défilement automatique. Dans ce mode, tout le monde nouveau symbole est écrit au même endroit, déplaçant ce qui était précédemment écrit à l'écran.
- leftToRight() et rightToLeft() – Définition de la direction du texte affiché – de gauche à droite ou de droite à gauche.
- createChar(ch, bitmap) – crée un caractère avec le code ch (0 – 7), en utilisant un tableau de bitmaps bitmap pour créer des points noirs et blancs.
Bibliothèque alternative pour travailler avec l'affichage i2c
Dans certains cas, des erreurs peuvent survenir lors de l'utilisation de la bibliothèque spécifiée avec des appareils équipés de contrôleurs PCF8574. Dans ce cas, la bibliothèque LiquidCrystal_PCF8574.h peut être proposée comme alternative. Il étend LiquidCrystal_I2C, il ne devrait donc y avoir aucun problème pour l'utiliser.
Problèmes de connexion de l'écran LCD i2c
Si après avoir téléchargé le croquis, vous ne voyez aucun message à l'écran, essayez les étapes suivantes.
Tout d'abord, vous pouvez augmenter ou diminuer le contraste du moniteur. Souvent, les caractères ne sont tout simplement pas visibles en raison du mode de contraste et de rétroéclairage.
Si cela ne résout pas le problème, vérifiez si les contacts sont correctement connectés et si l'alimentation du rétroéclairage est connectée. Si vous avez utilisé un adaptateur i2c séparé, vérifiez à nouveau la qualité de la soudure des contacts.
Une autre raison courante pour laquelle du texte manque à l'écran peut être une adresse i2c incorrecte. Essayez d'abord de changer l'adresse de l'appareil dans le croquis de 0x27 0x20 ou à 0x3F. Différents fabricants peuvent avoir différentes adresses par défaut programmées. Si cela ne résout pas le problème, vous pouvez exécuter le croquis du scanner i2c, qui analyse tous les appareils connectés et détermine leur adresse par force brute. Un exemple de croquis de scanner i2c.
Si l'écran ne fonctionne toujours pas, essayez de dessouder l'adaptateur et de connecter l'écran LCD comme d'habitude.
Conclusion
Dans cet article, nous avons examiné les principaux problèmes liés à l'utilisation d'un écran LCD dans des projets Arduino complexes, lorsque nous devons enregistrer des broches libres sur la carte. Un adaptateur i2c simple et peu coûteux vous permettra de connecter un écran LCD 1602, en n'occupant que 2 broches analogiques. Dans de nombreuses situations, cela peut être très important. Le prix de la commodité est la nécessité d'utiliser un module supplémentaire - un convertisseur et une bibliothèque. À notre avis, ce n’est pas un prix élevé à payer pour plus de commodité et nous recommandons fortement d’utiliser cette fonctionnalité dans les projets.
Chaque radioamateur après un certain montant produits simples faits maison vient à l’objectif de concevoir quelque chose de grandiose à l’aide de capteurs et de boutons. Après tout, il est bien plus intéressant d'afficher les données sur un écran plutôt que sur un moniteur de port. Mais alors la question se pose : quel écran choisir ? Et en général, comment le connecter, que faut-il pour se connecter ? Les réponses à ces questions seront discutées dans cet article.
ACL 1602
Parmi les nombreuses options d'affichage, je voudrais mentionner spécifiquement l'écran LCD1602 basé sur le contrôleur HD4478. Cet afficheur est disponible en deux couleurs : lettres blanches sur fond bleu, lettres noires sur fond jaune. La connexion du LCD 1602 à Arduino ne posera également aucun problème, car il existe une bibliothèque intégrée et il n'est pas nécessaire de télécharger quoi que ce soit de plus. Les écrans diffèrent non seulement par leur prix, mais aussi par leur taille. Souvent, les radioamateurs utilisent 16 x 2, soit 2 lignes de 16 caractères. Mais il existe aussi 20 x 4, où il y a 4 lignes de 20 caractères. Les dimensions et la couleur ne jouent aucun rôle dans la connexion de l'écran LCD 1602 à Arduno, elles sont connectées de la même manière. L'angle de vision est de 35 degrés, le temps de réponse de l'affichage est de 250 ms. Il peut fonctionner à des températures allant de -20 à 70 degrés Celsius. En fonctionnement, il utilise 4 mA pour l'écran et 120 mA pour le rétroéclairage.
Où est-il utilisé ?
Cet affichage est populaire non seulement parmi les radioamateurs, mais aussi parmi les grands fabricants. Par exemple, les imprimantes et les machines à café utilisent également le LCD1602. Cela est dû à son prix bas : cet écran coûte 200 à 300 roubles sur les sites chinois. Cela vaut la peine d'acheter là-bas, car dans nos magasins, les majorations pour ce présentoir sont très élevées.
Connexion à Arduino
Connecter le LCD 1602 à Arduino Nano et Uno n'est pas différent. Vous pouvez travailler avec l'affichage dans deux modes : 4 bits et 8. Lorsque vous travaillez avec 8 bits, les bits de poids faible et de poids fort sont utilisés, et avec 4 bits, uniquement les bits de poids faible. Cela ne sert à rien de travailler avec du 8 bits, car cela ajoutera 4 contacts supplémentaires pour la connexion, ce qui n'est pas conseillé, car la vitesse ne sera pas plus élevée, la limite de mise à jour de l'affichage est de 10 fois par seconde. En général, pour connecter le LCD 1602 à l'Arduino, de nombreux fils sont utilisés, ce qui provoque quelques désagréments, mais il existe des blindages spéciaux, mais nous y reviendrons plus tard. La photo montre la connexion de l'écran à l'Arduino Uno :
Exemple de code :
#inclure
Que fait le code ? La première étape consiste à connecter la bibliothèque pour travailler avec l'écran. Comme mentionné ci-dessus, cette bibliothèque est déjà incluse dans l'IDE Arduino et n'a pas besoin d'être téléchargée et installée en plus. Ensuite, les contacts connectés aux broches sont déterminés : RS, E, DB4, DB5, DB6, DB7, respectivement. Ensuite, la taille de l'écran est définie. Puisque nous travaillons avec une version de 16 caractères et 2 lignes, nous écrivons les valeurs suivantes. Nous plaçons le curseur au début de la première ligne et affichons notre premier texte Hello World. Placez ensuite le curseur sur la deuxième ligne et affichez le nom du site. C'est tout! La connexion de l'écran LCD 1602 à Arduino Uno a été envisagée.
Qu’est-ce que l’I2C et pourquoi est-il nécessaire ?
Comme mentionné ci-dessus, la connexion de l'écran consomme beaucoup de contacts. Par exemple, lorsque vous travaillez avec plusieurs capteurs et un écran LCD, 1602 broches peuvent tout simplement ne pas suffire. Souvent, les radioamateurs utilisent les versions Uno ou Nano, qui n'ont pas beaucoup de contacts. Ensuite, les gens ont inventé des boucliers spéciaux. Par exemple, I2C. Il permet de connecter un écran avec seulement 4 broches. C'est deux fois plus. Le module I2C est vendu séparément, où vous devez le souder vous-même, et déjà soudé à l'écran LCD 1602.
Connexion via le module I2C
La connexion du LCD 1602 à l'Arduino Nano avec I2C prend peu de place, seulement 4 broches : masse, alimentation et 2 sorties de données. Nous connectons respectivement l'alimentation et la terre à 5V et GND sur l'Arduino. Nous connectons les deux contacts restants : SCL et SDA à n'importe quelle broche analogique. Sur la photo vous pouvez voir un exemple de connexion d'un lcd 1602 à un arduino avec un module I2C :
Code du programme
Si pour travailler avec un écran sans module, il fallait utiliser une seule bibliothèque, alors pour travailler avec un module, vous avez besoin de deux bibliothèques. L'un d'eux est déjà inclus dans l'IDE Arduino - Wire. Une autre bibliothèque, LiquidCrystal I2C, doit être téléchargée séparément et installée. Pour installer la bibliothèque sur Arduino, le contenu de l'archive téléchargée doit être chargé dans le dossier racine des bibliothèques. Exemple de code de programme utilisant I2C :
#inclure
Comme vous pouvez le constater, le code est presque le même.
Comment ajouter votre propre symbole ?
Le problème avec ces affichages est qu’ils ne prennent pas en charge l’alphabet et les symboles cyrilliques. Par exemple, vous devez charger un symbole dans l'affichage afin qu'il puisse le refléter. Pour ce faire, l'écran vous permet de créer jusqu'à 7 de vos propres symboles. Imaginez le tableau :
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 |
Si 0 - il n'y a rien là, si 1 - c'est une zone peinte. Dans l'exemple ci-dessus vous pouvez voir la création du symbole "smiley souriant". En utilisant un exemple de programme dans Arduino, cela ressemblerait à ceci :
#inclure
Comme vous pouvez le voir, un masque de bits a été créé de la même manière que le tableau. Une fois créé, il peut être affiché sous forme de variable sur l'écran. N'oubliez pas que vous ne pouvez stocker que 7 caractères en mémoire. En principe, cela suffit. Par exemple, si vous devez afficher un symbole de degré.
Problèmes dans lesquels l'écran peut ne pas fonctionner
Il y a des moments où l'affichage ne fonctionne pas. Par exemple, il s'allume mais n'affiche aucun caractère. Ou alors il ne s'allume pas du tout. Tout d’abord, vérifiez si vous avez correctement connecté les broches. Si vous aviez l'habitude de connecter l'écran LCD 1202 à Arduino sans I2C, il est alors très facile de s'emmêler dans les fils, ce qui peut provoquer opération incorrecte afficher. Vous devez également vous assurer que le contraste de l'affichage est augmenté, car avec un contraste minimum, il n'est même pas visible si l'écran LCD 1602 est allumé ou non. Si cela ne résout pas le problème, le problème réside peut-être dans la soudure des contacts, c'est le cas lors de l'utilisation d'un module I2C. Aussi cause commune Le problème qui peut empêcher l'affichage de fonctionner est le réglage incorrect de l'adresse I2C. Le fait est qu'il existe de nombreux fabricants, et ils peuvent mettre une adresse différente, vous devez la corriger ici :
Écran LCD LiquidCrystal_I2C (0x27,16,2);
Entre parenthèses, vous pouvez voir deux valeurs, 0x27 et 16,2 (16,2 est la taille d'affichage et 0x27 est l'adresse I2C). Au lieu de ces valeurs, vous pouvez essayer de définir 0x37 ou 0x3F. Eh bien, une autre raison est simplement un écran LCD 1602 défectueux. Étant donné que presque tout pour Arduino est fabriqué en Chine, vous ne pouvez pas être sûr à 100 % que le produit acheté n'est pas défectueux.
Avantages et inconvénients du LCD 1602
Examinons les avantages et les inconvénients de l'écran LCD 1602.
- Prix. Ce module peut être acheté à un prix très abordable dans les magasins chinois. Le prix est de 200 à 300 roubles. Parfois, il est même vendu avec un module I2C.
- Facile à connecter. Personne ne connecte probablement le LCD 1602 sans I2C de nos jours. Et avec ce module, la connexion ne prend que 4 contacts, il n'y aura pas de « toiles » de fils.
- La programmation. Grâce aux bibliothèques prêtes à l'emploi, travailler avec ce module est simple ; toutes les fonctions sont déjà écrites. Et si vous devez ajouter votre propre symbole, cela ne prend que quelques minutes.
- Lors de son utilisation par des milliers de radioamateurs, aucun inconvénient majeur n'a été identifié, seulement il y a des cas d'achats défectueux, puisque les versions chinoises des écrans sont principalement utilisées.
Cet article examine la connexion du 1602 à Arduino et fournit également des exemples de programmes permettant de travailler avec cet écran. C’est vraiment l’un des meilleurs de sa catégorie ; ce n’est pas pour rien que des milliers de radioamateurs le choisissent pour leurs projets !
Dans cet article je vais vous expliquer comment utiliser le module d'interface I2C pour contrôler un écran LCD (2x16 / 20x4) avec en utilisant Arduino. Ce module permet de réduire le nombre de broches de contrôleur utilisées ; au lieu d'une connexion 8 ou 4 bits, seules 2 broches sont nécessaires (SDA et SCL).
Spécifications techniques
Support d'affichage : LCD 16×02 / 20×04
En option : réglage du contraste
Tension d'alimentation. 5V
Interface : I2C
Dimensions : 54 mm x 19 mm x 15 mm
Informations générales sur le module d'interface I2C
Étant donné que le nombre de broches sur les contrôleurs Arduino est limité et souvent utilisé divers capteurs et ils manquent de modules, il est nécessaire de les sauvegarder, pour ces cas ce module a été développé, avec son aide, vous pouvez mettre en œuvre la transmission sur deux contacts (SDA et SCL).
Parlons maintenant un peu du module lui-même : il est construit sur la puce PCF8574T. Les résistances R8 (4,7 kOhm) et R9 (4,7 kOhm) sont nécessaires pour remonter les lignes SDA et SCL. Idéalement, lors de la connexion de deux appareils ou plus via le bus I2C, vous devez utiliser un pull-up sur un seul appareil, je. J'écrirai pourquoi plus tard. Il y a trois cavaliers sur la carte (le schéma montre que les lignes A0, A1, A2 sont connectées à l'alimentation via les résistances R4, R5, R6), ils sont nécessaires pour changer l'adressage de l'appareil, il y a 8 options au total . La modification de l'adressage nous donne la possibilité de connecter jusqu'à huit appareils via le bus IC2 avec la puce PCF8574T ; les options d'adresse sont indiquées sur la figure (l'adresse par défaut de l'appareil est 0x27). Le module est également équipé d'un potentiomètre R11, avec son aide vous pouvez modifier le contraste de l'écran LCD.
Il y a trois groupes de contacts sur le module pour la connexion :
Premier groupe :
SCL : horloge série
SDA : ligne de données (Serial Dфta)
VCC : "+" puissance
GND : "-" alimentation
Deuxième groupe :
VSS : puissance "-"
VDD : alimentation "+"
VO : broche de contrôle du contraste
RS : Sélectionner le registre
RW : lecture/écriture (mode écriture lorsqu'il est connecté à la terre)
E : Activer (stroboscope de chute)
DB0-DB3 : bits faibles de l'interface
DB4-DB7 : bits élevés de l'interface
A : alimentation du rétroéclairage « + »
K : "-" puissance du rétroéclairage
Troisième groupe : (cavalier réglé par défaut)
VCC :
A de l'écran LCD :
Connexion à Arduino
Pièces requises :
Arduino UNO R3 x 1 pièce.
Écran LCD 1602A (2×16, 5V, bleu) x 1 pc.
Module d'interface I2C, IIC, TWI pour LCD x 1 pc.
Fil DuPont, 2,54 mm, 20 cm, F-M (Femelle - Mâle) x 1 pc.
cable USB 2,0 A-B x 1 pièce.
Connexion:
Tout d'abord, soudez le module I2C à affichage LCD, vous devez alors connecter l'écran à l'Arduino UNO. Pour ce faire, nous utiliserons le câblage DuPont ; nous nous connectons selon le tableau ci-dessous.
Pour plus de clarté, je vais donner un autre schéma.
Pour cette expérience, vous devez télécharger et installer la bibliothèque « LiquidCrystal_I2C ». Copiez et collez ensuite cet exemple de code dans la fenêtre du programme Arduino IDE et chargez-le dans le contrôleur.
/* Testé sur Arduino IDE 1.6.11 Date du test 15/09/2016 */ #inclure
Si vous avez tout fait correctement, mais qu'il n'y a aucun symbole sur l'écran, essayez d'augmenter le contraste avec le potentiomètre.
LiensTélécharger la bibliothèque
Documentation pour la puce
Documentation pour
Acheter sur Aliexpress