Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Créez des animations personnalisées sur des écrans LCD 16x2

Composants et fournitures

Arduino UNO
Toute carte Arduino.
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
Tout écran LCD au format 16x2 compatible avec le Hitachi HD44780 fonctionnera ici.
× 1
Résistance 220 ohm
Toute résistance comprise entre 220 et 1k Ohm. Une valeur plus élevée assombrira davantage l'écran.
× 1

Applications et services en ligne

Arduino IDE
Générateur de glyphes personnalisé

À propos de ce projet

La bibliothèque LiquidCrystal facilite l'utilisation des écrans LCD avec Arduino. Une fonction particulièrement intéressante de cette bibliothèque est la fonction createChar() :vous pouvez créer des glyphes (caractères) personnalisés, chacun décrit par un tableau de huit octets, un pour chaque ligne. Les cinq bits les moins significatifs de chaque octet déterminent les pixels de cette ligne. Écrire des octets à la main pour créer de l'art n'est pas exactement le processus idéal d'un artiste, alors j'ai fait un outil Web dans lequel vous pouvez dessiner les glyphes, et le code est généré pour vous .

Dans cet article, je vais montrer comment créer des animations personnalisées n'ayant qu'une carte Arduino et un écran LCD - que vous pouvez utiliser pour créer tout un tas de projets :vous pouvez créer un jeu, ou une histoire courte, ou un clip, ou décorer un panneau d'état.

Connexion de l'écran LCD à l'Arduino

Connectez l'écran LCD à l'Arduino - selon le modèle de votre écran, différentes connexions peuvent mieux fonctionner. Pour l'un de mes écrans, le schéma ci-dessous fonctionnait bien - mais pour un autre, j'ai dû utiliser un potentiomètre (comme dans le tutoriel sous ce lien) et ajuster la valeur de la résistance pour obtenir le meilleur contraste.

Voir la simulation sur TinkerCad sous ce lien.

Création artistique

Accédez à l'outil sur https://tusindfryd.github.io/screenduino/ et créez votre art. Jusqu'à 8 sections peuvent être utilisées à la fois, donc si vous ne pouvez pas sélectionner un nouveau carré, assurez-vous que vous n'utilisez pas déjà 8 sections.

Génération du code

Lorsque vous avez terminé avec votre première image, décochez le boîte "juste le fonction" . Copiez le code dans le presse-papiers et téléchargez-le sur votre Arduino. À ce stade, vous devriez voir votre image sur l'écran LCD.

Faire plus de cadres

Assurez-vous que votre code est enregistré. Vous pouvez maintenant créer le deuxième cadre. Dessinez simplement une autre image. Lorsque vous avez terminé, vérifiez le boîte "juste le fonction" . Copiez la fonction et collez-la à la fin de votre code. Renommez la nouvelle fonction en quelque chose d'autre - comme image01() , afin que vous puissiez garder une trace. Vous devrez maintenant déplacer l'appel vers image() depuis le setup() fonction à la boucle() fonction, ajoutez un délai, appelez image01() , et ajoutez à nouveau un délai. Pensez à renommer image() à image00() pour la cohérence. Votre boucle() la fonction devrait ressembler à ceci :

boucle vide(){ image00(); retard (250); image01(); retard (250);} 

Téléchargez le croquis sur votre Arduino. Essayez d'ajouter plus d'images ou de modifier le temps de retard.

Code

  • Animation de la métamorphose des papillons
Animation de métamorphose de papillonArduino
Ceci est un exemple de code (le code derrière l'animation de métamorphose de papillon du gif).
/* animation de métamorphose de papillon 2021 ~ par tusindfryd ce code est dans le domaine public*/#include LiquidCrystal lcd(12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup(){ lcd.begin(16, 2);}void loop(){ image00(); retard (250); image01(); retard (250); image02(); retard (250); image03(); retard (700); image04(); retard (250); image05(); retard (250); image06(); retard (700); image07(); délai (1250);}void image00(){ lcd.clear(); octet image22[8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111} ; octet image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111} ; octet image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000} ; octet image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100} ; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.write(byte(0)); lcd.setCursor (6, 1); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image01(){ lcd.clear(); octet image22[8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111} ; octet image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111} ; octet image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000} ; octet image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100} ; octet image06[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011} ; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image06); lcd.setCursor(5, 1); lcd.write(byte(0)); lcd.setCursor (6, 1); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(octet(4)); lcd.setCursor(5, 0); lcd.write(byte(5));}void image02(){ lcd.clear(); octet image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111} ; octet image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111} ; octet image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000} ; octet image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100} ; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.write(byte(0)); lcd.setCursor (6, 1); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image03(){ lcd.clear(); octet image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111} ; octet image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111} ; octet image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010} ; octet image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100} ; octet image24[8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000} ; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image24); lcd.setCursor(5, 1); lcd.write(byte(0)); lcd.setCursor (6, 1); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(octet(4)); lcd.setCursor(7, 1); lcd.write(byte(5));}void image04(){ lcd.clear(); octet image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111} ; octet image23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111} ; octet image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010} ; octet image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100} ; octet image24[8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110} ; octet image25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000} ; lcd.createChar(0, image22); lcd.createChar(1, image23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image24); lcd.createChar(6, image25); lcd.setCursor(5, 1); lcd.write(byte(0)); lcd.setCursor (6, 1); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(7, 0); lcd.write(byte(3)); lcd.setCursor(8, 0); lcd.write(octet(4)); lcd.setCursor(7, 1); lcd.write(byte(5)); lcd.setCursor(8, 1); lcd.write(byte(6));}void image05(){ lcd.clear(); octet image24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110} ; octet image25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000} ; octet image23[8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011} ; octet image08[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000} ; lcd.createChar(0, image24); lcd.createChar(1, image25); lcd.createChar(2, image23); lcd.createChar(3, image07); lcd.createChar(4, image08); lcd.setCursor(7, 1); lcd.write(byte(0)); lcd.setCursor(8, 1); lcd.write(octet(1)); lcd.setCursor (6, 1); lcd.write(byte(2)); lcd.setCursor (6, 0); lcd.write(byte(3)); lcd.setCursor(7, 0); lcd.write(byte(4));}void image06(){ lcd.clear(); octet image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001} ; octet image09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100} ; octet image24[8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000} ; octet image25[8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000} ; lcd.createChar(0, image08); lcd.createChar(1, image07); lcd.createChar(2, image09); lcd.createChar(3, image24); lcd.createChar(4, image25); lcd.setCursor(7, 0); lcd.write(byte(0)); lcd.setCursor (6, 0); lcd.write(octet(1)); lcd.setCursor(8, 0); lcd.write(byte(2)); lcd.setCursor(7, 1); lcd.write(byte(3)); lcd.setCursor(8, 1); lcd.write(byte(4));}void image07(){ lcd.clear(); octet image24[8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111} ; octet image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100} ; octet image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001} ; octet image09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000} ; lcd.createChar(0, image24); lcd.createChar(1, image08); lcd.createChar(2, image07); lcd.createChar(3, image09); lcd.setCursor(7, 1); lcd.write(byte(0)); lcd.setCursor(7, 0); lcd.write(octet(1)); lcd.setCursor (6, 0); lcd.write(byte(2)); lcd.setCursor(8, 0); lcd.write(byte(3));}

Schémas


Processus de fabrication

  1. CDS :écrans LCD transparents 3D
  2. Panneau LCD avec Arduino pour Flight Simulator
  3. Animation LCD et jeux
  4. Afficher une image sur un écran LCD TFT avec Arduino UNO !
  5. Oscilloscope DIY 10Hz-50kHz sur écran LCD 128x64
  6. Comment créer un site web communiquant Arduino en utilisant PHP
  7. Moniteur de fréquence cardiaque MAX 30102 sur écran LCD 16x2
  8. Réveil simple avec DS1302 RTC
  9. Processus de prototype de PCB :5 étapes pour créer un PCB personnalisé