Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Maak aangepaste animaties op 16x2 lcd-schermen

Componenten en benodigdheden

Arduino UNO
Elk Arduino-bord.
× 1
Adafruit Standaard LCD - 16x2 Wit op Blauw
Elk LCD-scherm van 16x2 dat compatibel is met de Hitachi HD44780 zal hier werken.
× 1
Weerstand 220 ohm
Elke weerstand in het bereik van 220 - 1k Ohm. Een grotere waarde zal het scherm meer dimmen.
× 1

Apps en online services

Arduino IDE
Aangepaste glyph-generator

Over dit project

De LiquidCrystal-bibliotheek maakt het gemakkelijk om LCD's te gebruiken met Arduino. Een bijzonder interessante functie uit die bibliotheek is de functie createChar():u kunt aangepaste glyphs (tekens) maken, elk beschreven door een array van acht bytes, één voor elke rij. De vijf minst significante bits van elke byte bepalen de pixels in die rij. Met de hand bytes schrijven om kunst te maken is niet bepaald het ideale proces van een kunstenaar, dus Ik heb een webtool waarin je de glyphs kunt tekenen, en de code wordt voor je gegenereerd .

In dit artikel laat ik zien hoe je aangepaste animaties kunt maken met alleen een Arduino-bord en een LCD - waarmee je een heleboel projecten kunt maken:je kunt een spel maken, of een kort verhaal, of een muziekvideo, of versier een statuspaneel.

Het LCD-scherm aansluiten op de Arduino

Sluit het LCD-scherm aan op de Arduino - afhankelijk van het model van uw scherm werken verschillende verbindingen mogelijk beter. Voor een van mijn schermen werkte het onderstaande schema goed - maar voor een ander moest ik een potentiometer gebruiken (zoals in de tutorial onder deze link) en de waarde van de weerstand aanpassen om het beste contrast te krijgen.

Zie de simulatie op TinkerCad onder deze link.

Kunst maken

Ga naar de tool op https://tusindfryd.github.io/screenduino/ en maak je kunst. Er kunnen maximaal 8 secties tegelijk worden gebruikt, dus als je geen nieuw vierkant kunt selecteren, zorg er dan voor dat je niet al 8 secties gebruikt.

De code genereren

Wanneer je klaar bent met je eerste afbeelding, deselecteer je de doos "gewoon de functie" . Kopieer de code naar het klembord en upload deze naar je Arduino. Op dit punt zou u uw afbeelding op het LCD-scherm moeten zien.

Meer frames maken

Zorg ervoor dat uw code is opgeslagen. U kunt nu het tweede frame maken. Teken gewoon een andere afbeelding. Als je klaar bent, controleer de doos "gewoon de functie" . Kopieer de functie en plak deze aan het einde van je code. Hernoem de nieuwe functie naar iets anders - zoals image01() , zodat u kunt volgen. Nu moet je de aanroep verplaatsen naar image() van de setup() functie naar de loop() functie, voeg een vertraging toe, bel image01() en voeg opnieuw een vertraging toe. Overweeg om image() te hernoemen naar image00() voor consistentie. Uw loop() functie zou er ongeveer zo uit moeten zien:

void loop(){ image00(); vertraging (250); afbeelding01(); vertraging(250);} 

Upload de schets naar je Arduino. Probeer meer frames toe te voegen of de vertragingstijd te wijzigen.

Code

  • Animatie van vlindermetamorfose
Butterfly Metamorphosis AnimationArduino
Dit is een voorbeeldcode (de code achter de vlindermetamorfose-animatie van de gif).
/* vlindermetamorfose-animatie 2021 ~ door tusindfryd deze code bevindt zich in het publieke domein*/#include LiquidCrystal lcd(12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup(){ lcd.begin(16, 2);}void loop(){ image00(); vertraging (250); afbeelding01(); vertraging (250); afbeelding02(); vertraging (250); afbeelding03(); vertraging (700); afbeelding04(); vertraging (250); afbeelding05(); vertraging (250); afbeelding06(); vertraging (700); afbeelding07(); vertraging (1250);}void image00(){ lcd.clear(); byte afbeelding22 [8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; byte afbeelding23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, afbeelding22); lcd.createChar (1, afbeelding23); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding08); lcd.createChar(4, afbeelding09); lcd.setCursor (5, 1); lcd.schrijven(byte(0)); lcd.setCursor(6, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 0); lcd.schrijven (byte (3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image01(){ lcd.clear(); byte afbeelding22 [8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; byte afbeelding23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image06[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; lcd.createChar(0, afbeelding22); lcd.createChar (1, afbeelding23); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding08); lcd.createChar(4, afbeelding09); lcd.createChar (5, afbeelding06); lcd.setCursor (5, 1); lcd.schrijven(byte(0)); lcd.setCursor(6, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 0); lcd.schrijven (byte (3)); lcd.setCursor(8, 0); lcd.write(byte(4)); lcd.setCursor (5, 0); lcd.write(byte(5));}void image02(){ lcd.clear(); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte afbeelding23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, afbeelding22); lcd.createChar (1, afbeelding23); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding08); lcd.createChar(4, afbeelding09); lcd.setCursor (5, 1); lcd.schrijven(byte(0)); lcd.setCursor(6, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 0); lcd.schrijven (byte (3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image03(){ lcd.clear(); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte afbeelding23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte afbeelding08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24 [8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; lcd.createChar(0, afbeelding22); lcd.createChar (1, afbeelding23); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding08); lcd.createChar(4, afbeelding09); lcd.createChar (5, afbeelding24); lcd.setCursor (5, 1); lcd.schrijven(byte(0)); lcd.setCursor(6, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 0); lcd.schrijven (byte (3)); lcd.setCursor(8, 0); lcd.write(byte(4)); lcd.setCursor(7, 1); lcd.write(byte(5));}void image04(){ lcd.clear(); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte afbeelding23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte afbeelding08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24 [8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; byte afbeelding25 [8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar(0, afbeelding22); lcd.createChar (1, afbeelding23); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding08); lcd.createChar(4, afbeelding09); lcd.createChar (5, afbeelding24); lcd.createChar (6, afbeelding25); lcd.setCursor (5, 1); lcd.schrijven(byte(0)); lcd.setCursor(6, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 0); lcd.schrijven (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 afbeelding24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; byte afbeelding25 [8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; byte afbeelding23 [8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; byte image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; byte image08 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; lcd.createChar(0, afbeelding24); lcd.createChar(1, afbeelding25); lcd.createChar(2, afbeelding23); lcd.createChar (3, afbeelding07); lcd.createChar(4, afbeelding08); lcd.setCursor(7, 1); lcd.schrijven(byte(0)); lcd.setCursor(8, 1); lcd.schrijven(byte(1)); lcd.setCursor(6, 1); lcd.schrijven(byte(2)); lcd.setCursor(6, 0); lcd.schrijven (byte (3)); lcd.setCursor(7, 0); lcd.write(byte(4));}void image06(){ lcd.clear(); byte afbeelding08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09 [8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; byte image24 [8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; byte afbeelding25 [8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar(0, afbeelding08); lcd.createChar (1, afbeelding07); lcd.createChar(2, afbeelding09); lcd.createChar (3, afbeelding24); lcd.createChar(4, afbeelding25); lcd.setCursor(7, 0); lcd.schrijven(byte(0)); lcd.setCursor(6, 0); lcd.schrijven(byte(1)); lcd.setCursor(8, 0); lcd.schrijven(byte(2)); lcd.setCursor(7, 1); lcd.schrijven (byte (3)); lcd.setCursor(8, 1); lcd.write(byte(4));}void image07(){ lcd.clear(); byte image24 [8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; byte afbeelding08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09 [8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; lcd.createChar(0, afbeelding24); lcd.createChar (1, afbeelding08); lcd.createChar(2, afbeelding07); lcd.createChar (3, afbeelding09); lcd.setCursor(7, 1); lcd.schrijven(byte(0)); lcd.setCursor(7, 0); lcd.schrijven(byte(1)); lcd.setCursor(6, 0); lcd.schrijven(byte(2)); lcd.setCursor(8, 0); lcd.write(byte(3));}

Schema's


Productieproces

  1. CDS:3D transparante LCD-schermen
  2. LCD-paneel met Arduino voor Flight Simulator
  3. LCD-animatie en gaming
  4. Een afbeelding weergeven op een LCD TFT-scherm met Arduino UNO!
  5. DIY 10Hz-50kHz Oscilloscoop op 128x64 LCD-scherm
  6. Een website maken die Arduino communiceert met PHP
  7. MAX 30102 hartslagmeter op 16x2 LCD
  8. Arduino-weerstation
  9. Arduino-menu op een Nokia 5110 LCD met een roterende encoder
  10. Eenvoudige wekker met DS1302 RTC
  11. PCB-prototypeproces:5 stappen om een ​​aangepaste PCB te maken