Table des matières:

LCD COG pour un Arduino Nano : 3 étapes
LCD COG pour un Arduino Nano : 3 étapes

Vidéo: LCD COG pour un Arduino Nano : 3 étapes

Vidéo: LCD COG pour un Arduino Nano : 3 étapes
Vidéo: FLProg8:установка часов реального времени с помощью ЖК-меню| Визуальное программирование для Arduino 2024, Juillet
Anonim
LCD COG pour un Arduino Nano
LCD COG pour un Arduino Nano

Ce Instructable décrit comment utiliser un écran LCD COG avec un Arduino Nano.

Les écrans LCD COG sont bon marché mais sont légèrement plus difficiles à interfacer. (COG signifie "Chip On Glass".) Celui que j'utilise contient une puce de pilote UC1701. Il ne nécessite que 4 broches de l'Arduino: horloge SPI, données SPI, sélection de puce et commande/données.

L'UC1701 est contrôlé par le bus SPI et fonctionne à 3,3V.

Ici, je décris comment l'utiliser avec un Arduino Nano. Cela devrait également fonctionner avec un Arduino Mini ou Uno - je vais l'essayer bientôt.

C'est mon premier projet Arduino et je n'ai pas écrit C depuis des décennies, donc si je fais des erreurs évidentes, faites-le moi savoir.

Étape 1: Construire le matériel

Construire le matériel
Construire le matériel
Construire le matériel
Construire le matériel
Construire le matériel
Construire le matériel

Achetez un écran LCD COG qui contient une puce UC1701. Il devrait utiliser le bus SPI plutôt qu'une interface parallèle. Il aura environ 14 broches qui seront étiquetées avec des noms comme ceux énumérés ci-dessous. (Vous ne voulez pas d'une interface parallèle avec beaucoup plus de broches étiquetées D0, D1, D2 …)

Celui que j'ai acheté est: https://www.ebay.co.uk/itm/132138390168 Ou vous pouvez rechercher sur eBay "12864 LCD COG".

Choisissez-en un qui a une queue assez large avec des broches espacées de 1,27 mm - les broches plus fines seront difficiles à souder. Assurez-vous qu'il a une puce UC1701. Remarquez comment dans la sixième image de la page ebay, il est écrit "CONNECTEUR: COG/UC1701".

L'écran est transparent et il est difficile de savoir quel est l'avant et l'arrière. Étudiez attentivement mes photos. Remarquez où se trouvent les broches 1 et 14 - elles sont marquées sur la queue.

La queue flexible est assez facile à souder mais elle nécessite un adaptateur pour que vous puissiez la brancher sur une planche à pain. J'ai acheté: https://www.ebay.co.uk/itm/132166865767 Ou vous pouvez rechercher sur eBay "Adapter Smd SSOP28 DIP28".

L'adaptateur accepte une puce SOP à 28 broches d'un côté ou une puce SSOP à 28 broches de l'autre côté. Une puce SOP a un espacement des broches de 0,05 (1,27 mm) qui est le même que la queue de l'écran LCD.

Vous aurez également besoin de quelques broches d'en-tête. Chaque fois que j'achète un Arduino ou un autre module, il est livré avec plus de broches d'en-tête que nécessaire, vous en avez donc probablement déjà. Sinon, recherchez sur eBay des "broches d'en-tête de 2,54 mm".

Soudez 14 des broches d'en-tête sur l'adaptateur. Ne les poussez pas complètement - c'est mieux si l'arrière de l'adaptateur est plat. Mettez-le à plat sur votre banc afin que les broches ne puissent pas être enfoncées trop loin dans les trous. Assurez-vous que les broches sont du côté SOP de la carte (c'est-à-dire la plus grosse puce).

Les coussinets de la queue sont dans une sorte de fenêtre. Étamez les deux côtés avec de la soudure. Etamez les pastilles de l'adaptateur. Tenez la queue de l'adaptateur en place puis touchez chaque pastille avec le fer à souder (vous aurez besoin d'une pointe assez fine).

Attachez du fil à travers les trous de l'adaptateur pour agir comme un réducteur de tension. (J'ai utilisé "fil de transformateur").

Si vous la soudez à l'envers, n'essayez pas de dessouder la queue. Retirez les épingles une à une et déplacez-les de l'autre côté du tableau. (Oui, j'ai fait cette erreur et j'ai re-soudé la queue, c'est pourquoi c'est un peu le bordel sur la photo.)

Étape 2: connexion à l'Arduino

Connexion à l'Arduino
Connexion à l'Arduino
Connexion à l'Arduino
Connexion à l'Arduino

Cette section explique comment se connecter à un Arduino Nano. Ce sera très similaire pour un Mini ou Uno mais je ne l'ai pas encore essayé.

Étudiez le schéma du circuit.

Un Arduino Nano connecté à un port USB fonctionne à 5V. L'écran LCD fonctionne à 3,3V. Il faut donc alimenter le LCD à partir de la broche 3V3 du Nano et réduire la tension sur chaque broche de commande de 5V à 3,3V.

Le brochage de l'écran LCD est:

  • 1 CS
  • 2 TVD
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDJ
  • 7 3V3
  • 8 0V Terre
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS est Chip-Select. Il est tiré vers le bas pour sélectionner (activer) la puce UC1701. (CS peut être appelé CS0 ou En ou similaire.)

RST est Réinitialiser. Il est tiré vers le bas pour réinitialiser la puce. (RST peut être appelé Réinitialiser.)

CD est commande/données. Il est tiré vers le bas lors de l'envoi de commandes à la puce via SPI. Il est élevé lors de l'envoi de données. (Le CD pourrait s'appeler A0.)

CLK et SDA sont les broches du bus SPI. (SDA peut être appelé SPI-Data. CLK peut être SCL ou SPI-Clock.)

VB0+ et VB0- sont utilisés par la pompe de charge interne de l'UC1701. La pompe de charge génère les tensions impaires nécessaires à l'écran LCD. Connectez un condensateur de 100n entre VB0+ et VB0-. La documentation UC1701 recommande 2uF mais je n'ai pas pu voir de différence avec cet écran LCD particulier.

Si votre écran LCD a des broches VB1+ et VB1-, connectez également un condensateur de 100n entre elles. (Si votre écran LCD a une broche VLCD, vous pouvez essayer de connecter un condensateur de 100n entre VLCD et Gnd. Cela n'a fait aucune différence avec mon écran LCD.)

Connectez l'écran LCD au Nano comme suit:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Terre

("*" signifie utiliser un diviseur de potentiel pour réduire la tension. Si l'Arduino fonctionne à 3V3 à partir d'une alimentation indépendante, vous n'aurez pas besoin des résistances.)

3.3V est fourni par le Nano et peut fournir un courant suffisant pour l'écran LCD. (L'affichage consomme environ 250 uA.)

5V est également émis par le Nano et peut être utilisé pour alimenter le rétroéclairage. Limitez le courant au rétroéclairage avec une résistance de 100 ohms.

Si vous manquez de broches sur le Nano, vous pouvez connecter RST à 3V3 - vous pouvez ensuite utiliser D6 pour autre chose. Le U1701 peut être réinitialisé par logiciel par une commande sur le SPI. Je n'ai jamais eu de problème avec cela, mais si vous utilisez votre propre circuit dans un environnement bruyant, il peut être préférable d'utiliser une réinitialisation matérielle.

Étape 3: Logiciel

Logiciel
Logiciel

En théorie, vous pouvez piloter l'UC1701 depuis la librairie U8g2 (ou Ucglib ou les autres librairies disponibles). J'ai lutté pendant des jours pour le faire fonctionner et j'ai échoué. La bibliothèque U8g2 est un monstre car elle peut piloter une grande variété de puces et il est très difficile de suivre le code. J'ai donc abandonné et j'ai écrit ma propre petite bibliothèque. Il prend beaucoup moins de place dans l'Arduino (environ 3400 octets plus les polices).

Vous pouvez télécharger ma bibliothèque à partir d'ici (le bouton Télécharger sur cette page). Un exemple de croquis et un guide de l'utilisateur sont inclus. La page Web https://www.arduino.cc/en/Guide/Libraries décrit comment importer une bibliothèque; allez dans la section "Importer une bibliothèque.zip".

Initialisez l'écran LCD avec

UC1701Begin();

UC1701Begin peut prendre des paramètres pour changer les broches ou ignorer la broche RST. La bibliothèque n'utilise que le SPI matériel (un SPI logiciel n'est pas fourni). L'affichage peut être inversé sur les axes x et y. C'est utile si vous souhaitez monter l'écran LCD dans une orientation différente.

Plusieurs procédures ont été dupliquées à partir de la bibliothèque U8g2:

  • Dessiner une ligne
  • DessinerPixel
  • DrawHLigne
  • DessinerVLine
  • DrawBox
  • DessinerCadre
  • DessinerCercle
  • Dessiner un disque
  • DessinerRempliEllipse
  • DessinEllipse
  • DessinerTriangle
  • UC1701SetCursor
  • UC1701ClearAfficher

Certaines procédures sont légèrement différentes:

  • void DrawChar(uint8_t c, word Font);
  • void DrawString(char * s, word Font);
  • void DrawInt(int i, word Font);

Les procédures de dessin de chaîne reçoivent l'index d'une police. Les polices sont déclarées dans la mémoire flash de l'Arduino afin qu'elles n'occupent pas la précieuse SRAM. Trois polices sont fournies (petite, moyenne et grande). Ils ne sont liés et occupent la mémoire flash que si vous les utilisez (environ 500 à 2000 octets chacun).

"Couleur" est géré différemment de la bibliothèque U8g2. Lorsque l'écran LCD est effacé, l'arrière-plan est sombre. Si MakeMark (une variable globale) est vrai, le dessin est fait en blanc. Si MakeMark est faux, le dessin est fait dans l'obscurité.

Certaines procédures sont propres à l'UC1701:

SetInverted dessine en noir sur blanc plutôt qu'en blanc sur noir.

void SetInverted(bool inv);

La luminosité et le contraste de l'UC1701 sont définis par:

  • void SetContrast (valeur uint8_t); // suggéré est 14
  • void SetResistor (valeur uint8_t); // suggéré est 7

Ils travaillent ensemble d'une manière plutôt insatisfaisante.

SetEnabled éteint l'écran LCD:

void SetEnabled(bool fr);

L'affichage prend 4uA en dormant. Vous devez également éteindre le rétro-éclairage - le piloter à partir d'une broche du Nano. Après la réactivation, l'UC1701 aura été réinitialisé; l'affichage est effacé et le contraste et la résistance ont été réinitialisés à leurs valeurs par défaut.

Donc, en conclusion, les écrans COG sont bon marché et de bonne taille. Ils sont faciles à connecter à un Arduino.

Conseillé: