Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Erstellen Sie benutzerdefinierte Animationen auf 16x2-LCD-Displays

Komponenten und Verbrauchsmaterialien

Arduino UNO
Jedes Arduino-Board.
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
Jedes LCD-Display in der Größe 16x2, das mit dem Hitachi HD44780 kompatibel ist, funktioniert hier.
× 1
Widerstand 220 Ohm
Jeder Widerstand im Bereich von 220 - 1k Ohm. Ein größerer Wert verdunkelt den Bildschirm stärker.
× 1

Apps und Onlinedienste

Arduino-IDE
Benutzerdefinierter Glyphengenerator

Über dieses Projekt

Die LiquidCrystal-Bibliothek erleichtert die Verwendung von LCDs mit Arduino. Eine besonders interessante Funktion aus dieser Bibliothek ist die Funktion createChar():Sie können benutzerdefinierte Glyphen (Zeichen) erstellen, die jeweils durch ein Array von acht Bytes beschrieben werden, eines für jede Zeile. Die fünf niedrigstwertigen Bits jedes Bytes bestimmen die Pixel in dieser Reihe. Bytes von Hand zu schreiben, um Kunst zu schaffen, ist nicht gerade der ideale Prozess eines Künstlers, also habe ich gemacht ein Webtool in dem Sie die Glyphen zeichnen können und der Code wird für Sie generiert .

In diesem Artikel zeige ich, wie man benutzerdefinierte Animationen mit nur einem Arduino-Board und einem LCD erstellt - mit denen Sie viele Projekte erstellen können:Sie können ein Spiel, eine Kurzgeschichte oder ein Musikvideo erstellen oder ein Statusfeld dekorieren.

Anschließen des LCD an den Arduino

Verbinden Sie das LCD mit dem Arduino - je nach Modell Ihres Bildschirms können verschiedene Verbindungen besser funktionieren. Für einen meiner Bildschirme funktionierte das folgende Schema gut - aber für einen anderen musste ich ein Potentiometer verwenden (wie im Tutorial unter diesem Link) und den Wert des Widerstands optimieren, um den besten Kontrast zu erzielen.

Sehen Sie sich die Simulation auf TinkerCad unter diesem Link an.

Kunst schaffen

Gehen Sie zum Tool unter https://tusindfryd.github.io/screenduino/ und erstellen Sie Ihre Kunst. Es können bis zu 8 Abschnitte gleichzeitig verwendet werden. Wenn Sie also kein neues Quadrat auswählen können, stellen Sie sicher, dass Sie nicht bereits 8 Abschnitte verwenden.

Generieren des Codes

Wenn Sie mit Ihrem ersten Bild fertig sind, deaktivieren Sie die Box "nur die Funktion" . Kopieren Sie den Code in die Zwischenablage und laden Sie ihn auf Ihr Arduino hoch. An diesem Punkt sollten Sie Ihr Bild auf dem LCD sehen.

Mehr Frames erstellen

Stellen Sie sicher, dass Ihr Code gespeichert ist. Sie können nun den zweiten Rahmen erstellen. Zeichnen Sie einfach ein anderes Bild. Wenn Sie fertig sind, überprüfen die Box "nur die Funktion" . Kopieren Sie die Funktion und fügen Sie sie am Ende Ihres Codes ein. Benennen Sie die neue Funktion in etwas anderes um - wie image01() , damit Sie den Überblick behalten. Jetzt müssen Sie den Aufruf nach image() . verschieben aus dem setup() Funktion zum loop() Funktion, füge eine Verzögerung hinzu, rufe image01() . auf , und fügen Sie erneut eine Verzögerung hinzu. Ziehen Sie in Erwägung, image() umzubenennen zu image00() für Konsistenz. Ihre Schleife() Funktion sollte ungefähr so ​​aussehen:

void loop(){ image00(); Verzögerung (250); Bild01(); Verzögerung(250);} 

Laden Sie die Skizze auf Ihren Arduino hoch. Versuchen Sie, weitere Frames hinzuzufügen oder die Verzögerungszeit zu ändern.

Code

  • Animation der Schmetterlingsmetamorphose
Animation der SchmetterlingsmetamorphoseArduino
Dies ist ein Beispielcode (der Code hinter der Schmetterlings-Metamorphose-Animation aus dem Gif).
/* Schmetterlings-Metamorphose-Animation 2021 ~ von tusindfryd Dieser Code ist gemeinfrei*/#include LiquidCrystal lcd(12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup () { lcd.begin (16, 2);}void loop () { image00 (); Verzögerung (250); Bild01(); Verzögerung (250); Bild02(); Verzögerung (250); Bild03(); Verzögerung (700); Bild04(); Verzögerung (250); Bild05(); Verzögerung (250); Bild06(); Verzögerung (700); Bild07(); Verzögerung (1250);}void image00(){lcd.clear(); Byte-Bild22[8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; Byte-Bild23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; Byte-Bild08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; Byte-Bild09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, Bild22); lcd.createChar(1, Bild23); lcd.createChar(2, Bild07); lcd.createChar(3, Bild08); lcd.createChar(4, Bild09); lcd.setCursor(5, 1); lcd.write (byte (0)); lcd.setCursor(6, 1); lcd.write(byte(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(); Byte-Bild22[8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; Byte-Bild23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; Byte-Bild08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; Byte-Bild09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; Byte-Bild06[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; lcd.createChar(0, Bild22); lcd.createChar(1, Bild23); lcd.createChar(2, Bild07); lcd.createChar(3, Bild08); lcd.createChar(4, Bild09); lcd.createChar(5, Bild06); lcd.setCursor(5, 1); lcd.write (byte (0)); lcd.setCursor(6, 1); lcd.write(byte(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)); lcd.setCursor(5, 0); lcd.write(byte(5));}void image02(){lcd.clear(); Byte-Bild22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; Byte-Bild23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; Byte-Bild08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; Byte-Bild09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, Bild22); lcd.createChar(1, Bild23); lcd.createChar(2, Bild07); lcd.createChar(3, Bild08); lcd.createChar(4, Bild09); lcd.setCursor(5, 1); lcd.write (byte (0)); lcd.setCursor(6, 1); lcd.write(byte(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(); Byte-Bild22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; Byte-Bild23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; Byte-Bild08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; Byte-Bild09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; Byte-Bild24[8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; lcd.createChar(0, Bild22); lcd.createChar(1, Bild23); lcd.createChar(2, Bild07); lcd.createChar(3, Bild08); lcd.createChar(4, Bild09); lcd.createChar(5, Bild24); lcd.setCursor(5, 1); lcd.write (byte (0)); lcd.setCursor(6, 1); lcd.write(byte(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)); lcd.setCursor(7, 1); lcd.write(byte(5));}void image04(){lcd.clear(); Byte-Bild22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; Byte-Bild23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; Byte-Bild08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; Byte-Bild09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; Byte-Bild24[8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; Byte-Bild25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar(0, Bild22); lcd.createChar(1, Bild23); lcd.createChar(2, Bild07); lcd.createChar(3, Bild08); lcd.createChar(4, Bild09); lcd.createChar(5, Bild24); lcd.createChar(6, Bild25); lcd.setCursor(5, 1); lcd.write (byte (0)); lcd.setCursor(6, 1); lcd.write(byte(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)); lcd.setCursor(7, 1); lcd.write (byte (5)); lcd.setCursor(8, 1); lcd.write(byte(6));}void image05(){lcd.clear(); Byte-Bild24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; Byte-Bild25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; Byte-Bild23[8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; Byte Bild08[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; lcd.createChar(0, Bild24); lcd.createChar(1, Bild25); lcd.createChar(2, Bild23); lcd.createChar(3, Bild07); lcd.createChar(4, Bild08); lcd.setCursor(7, 1); lcd.write (byte (0)); lcd.setCursor(8, 1); lcd.write(byte(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(); Byte-Bild08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; Byte-Bild09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; Byte-Bild24[8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; Byte-Bild25[8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar(0, Bild08); lcd.createChar(1, Bild07); lcd.createChar(2, Bild09); lcd.createChar(3, Bild24); lcd.createChar(4, Bild25); lcd.setCursor(7, 0); lcd.write (byte (0)); lcd.setCursor(6, 0); lcd.write(byte(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(); Byte-Bild24[8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; Byte-Bild08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; Byte Bild07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; Byte Bild09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; lcd.createChar(0, Bild24); lcd.createChar(1, Bild08); lcd.createChar(2, Bild07); lcd.createChar(3, Bild09); lcd.setCursor(7, 1); lcd.write (byte (0)); lcd.setCursor(7, 0); lcd.write(byte(1)); lcd.setCursor(6, 0); lcd.write (byte (2)); lcd.setCursor(8, 0); lcd.write(byte(3));}

Schaltpläne


Herstellungsprozess

  1. CDS:transparente 3D-LCD-Displays
  2. LCD-Panel mit Arduino für Flugsimulator
  3. LCD-Animation und -Spiele
  4. Anzeige eines Bildes auf einem LCD-TFT-Bildschirm mit Arduino UNO!
  5. DIY 10Hz-50kHz Oszilloskop auf 128x64 LCD-Display
  6. So erstellen Sie eine Website, die Arduino mithilfe von PHP kommuniziert
  7. MAX 30102 Herzfrequenzmesser auf 16x2-LCD
  8. Arduino-Wetterstation
  9. Einfacher Wecker mit DS1302 RTC
  10. PCB-Prototypprozess:5 Schritte zum Erstellen einer benutzerdefinierten PCB