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 :

#inclure #inclure Écran LCD LiquidCrystal_I2C (0x27,16,2); /* Définit l'adresse et la taille d'affichage. Lorsque vous utilisez un module LCD I2C avec un écran 20x04, vous n'avez rien à changer dans le code, il vous suffit de définir la bonne dimension */ vide installation() ( lcd.init(); // Initialiser l'écran LCD LCD rétro-éclairage(); // Allume le rétroéclairage // Le curseur est au début de 1 ligne lcd.print("Bonjour tout le monde !"); // Afficher le texte lcd.setCursor (0, 1); // Place le curseur au début de la ligne 2 lcd.print("site"); //Texte de sortie) void boucle () { }

Cré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#inclure #inclure // Masque binaire du symbole du sourire octet sourire = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); Écran LCD LiquidCrystal_I2C (0x27,20,4); // Définit l'adresse et la taille d'affichage. vide installation() ( lcd.init(); // Initialiser l'écran LCD LCD rétro-éclairage(); // Allume le rétroéclairage // Crée le symbole numéro 0 lcd.createChar(1, sourire); lcd.setCursor(0, 0); // Place le curseur au début d'une ligne lcd.print("\1"); // Afficher un smiley (caractère numéro 1) - "\1") vide boucle () { }

Programme 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.


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 :

FonctionBut
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 // inclut la bibliothèque Wire #include // connecte la bibliothèque LCD #define printByte(args) write(args); // uint8_t coeur = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // masque de bits du symbole « cœur » LiquidCrystal_I2C lcd(0x27, 16, 2); // Définir l'adresse 0x27 pour l'écran LCD 16x2 void setup() ( lcd.init(); // initialisation de l'écran LCD lcd.backlight(); // allume le rétroéclairage de l'écran lcd.createChar(3, heart); // crée un symbole « cœur » dans la cellule mémoire 3 lcd.home(); // place le curseur dans le coin supérieur gauche, à la position (0,0) lcd.!"); // affiche une ligne de texte lcd.setCursor(0, 1); // déplace le curseur sur la ligne 2, caractère 1 lcd.print( " i "); // affiche le message sur la ligne 2 lcd.printByte(3); // affiche le symbole « cœur » situé dans la 3ème cellule lcd.print(" Arduino "); } boucle vide() (// fait clignoter le dernier caractère lcd.setCursor(13, 1); // déplace le curseur sur la ligne 2, caractère 1 lcd.print("\t"); retard (500); lcd.setCursor(13, 1); // déplace le curseur sur la ligne 2, caractère 1 lcd.print(" "); retard (500); }

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.

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.


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.


Chronogramme de sortie des caractères latins « A », « B » et « C » sur l'écran LCD 1602

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.


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 :

  1. Terre à la terre ;
  2. Alimentation 5 V ;
  3. Réglage du contraste du moniteur ;
  4. Commande, données ;
  5. Écriture et lecture de données ;
  6. Activer;

7-14. Lignes de données ;

  1. Plus rétroéclairage ;
  2. 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 :

Module écran bleu LCD1602+I2C, compatible Arduino Un simple écran LCD1602 (rétroéclairage vert) moins cher que 80 roubles Grand écran LCD2004 avec I2C HD44780 pour Arduino (rétroéclairage bleu et vert)
Écran 1602 avec adaptateur IIC et rétroéclairage bleu Une autre version du LCD1602 avec un module I2C soudé Module adaptateur de port IIC/I2C/TWI/SPI pour blindage 1602, compatible avec Arduino
Écran rétroéclairé RVB ! LCD 16×2 + clavier + Buzzer Shield pour Arduino Shield pour Arduino avec boutons et écran LCD1602 LCD 1602 Écran LCD pour imprimante 3D (Smart Controller for RAMPS 1.4, Text LCD 20×4), module lecteur de cartes SD et MicroSD

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 #inclure // Y compris la bibliothèque //#include // Connexion d'une bibliothèque alternative LiquidCrystal_I2C lcd(0x27,16,2); // Spécifiez l'adresse I2C (la valeur la plus courante), ainsi que les paramètres de l'écran (dans le cas du LCD 1602 - 2 lignes de 16 caractères chacune //LiquidCrystal_PCF8574 lcd(0x27); // Option pour la configuration vide de la bibliothèque PCF8574( ) ( lcd.init (); // Initialiser l'affichage lcd.backlight(); // Connecter le rétroéclairage lcd.setCursor(0,0); // Placer le curseur au début de la première ligne lcd.print(" Bonjour"); lcd.setCursor(0,1); // Place le curseur au début de la deuxième ligne lcd.print("ArduinoMaster"); // Tapez le texte sur la deuxième ligne) void loop() ( )

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 // Ajout de la bibliothèque LiquidCrystal nécessaire lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Définir la taille de l'écran lcd.setCursor(0, 0); // Définir le curseur au début 1 lignes lcd.print("Bonjour tout le monde !"); // Affiche le texte lcd.setCursor(0, 1); // Place le curseur au début de la ligne 2 lcd.print("site") ; // Imprimer le texte ) void Loop ()( )

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 #inclure Écran LCD LiquidCrystal_I2C (0x27,16,2); // Définit l'affichage void setup() ( lcd.init(); lcd.backlight(); // Active le rétroéclairage de l'écran lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Place le curseur sur la deuxième ligne et le caractère zéro. lcd.setCursor(0, 1); // Affiche le nombre de secondes depuis le démarrage de l'Arduino lcd.print(millis()/1000); )

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 #inclure // Ajoutez la bibliothèque nécessaire // Masque de bits de l'octet du symbole du sourire smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); Écran LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Définir la taille de l'écran lcd.createChar(1, smile); // Créer un numéro de caractère 1 lcd.setCursor(0, 0); // Place le curseur au début de la ligne 1 lcd.print("\1"); // Affiche un smiley (caractère numéro 1) - "\1" ) void loop( ) ( )

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 #inclure Écran LCD LiquidCrystal_I2C (0x27,16,2); // Définit l'adresse et la taille de l'affichage void setup() ( lcd.init(); // Initialise lcd lcd.backlight(); // Allume le rétroéclairage lcd.setCursor(0,0); // Définit le curseur au début d'une ligne lcd .print("Hello, world"); // Imprimer le texte lcd.setCursor(0,1); // Placer le curseur au début de la ligne 2 lcd.print("www. site"); // Imprimer le texte ) void loop( ) ( )

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.


Liens
Télécharger la bibliothèque
Documentation pour la puce
Documentation pour

Acheter sur Aliexpress