亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

在 16x2 LCD 显示器上创建自定义动画

组件和用品

Arduino UNO
任何 Arduino 板。
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
任何与 Hitachi HD44780 兼容的 16x2 尺寸 LCD 显示器都可以在这里工作。
× 1
电阻 220 ohm
220 - 1k 欧姆范围内的任何电阻器。更大的值会使屏幕更暗。
× 1

应用和在线服务

Arduino IDE
自定义字形生成器

关于这个项目

LiquidCrystal 库使在 Arduino 中使用 LCD 变得容易。该库中一个特别有趣的函数是 createChar() 函数:您可以创建自定义字形(字符),每个字形由一个包含 8 个字节的数组描述,每行一个。每个字节的五个最低有效位确定该行中的像素。手工编写字节来创作艺术并不是艺术家理想的过程,所以我做了 一个网络工具 你可以在其中绘制字形,并为你生成代码 .

在本文中,我将展示如何创建只有一个 Arduino 板和一个 LCD 的自定义动画——您可以使用它来创建大量项目:您可以制作游戏、短篇小说或音乐视频,或者装饰一个状态面板。

将 LCD 连接到 Arduino

将 LCD 连接到 Arduino - 根据您的屏幕型号,不同的连接可能效果更好。对于我的一个屏幕,下面的原理图效果很好 - 但对于另一个,我必须使用电位计(如本链接下的教程)并调整电阻值以获得最佳对比度。

请参阅此链接下的 TinkerCad 模拟。

创作艺术

转到 https://tusindfryd.github.io/screenduino/ 上的工具并创建您的艺术作品。一次最多可以使用 8 个部分,因此如果您无法选择新方块,请确保您没有使用 8 个部分。

生成代码

完成第一张图片后,取消选中 盒子 “只是 函数” .将代码复制到剪贴板并将其上传到您的 Arduino。此时,您应该会在 LCD 上看到您的图像。

制作更多帧

确保您的代码已保存。您现在可以创建第二个框架。只需绘制另一个图像。完成后,检查 盒子 “只是 函数” .复制该函数并将其粘贴到代码的末尾。将新函数重命名为其他名称 - 例如 image01() ,以便您可以跟踪。现在您需要将调用移动到 image()setup() loop() 的函数 函数,添加延迟,调用 image01() ,并再次添加延迟。考虑重命名 image()image00() 为了一致性。你的 loop() 函数应如下所示:

void loop(){ image00();延迟(250); image01();延迟(250);} 

将草图上传到您的 Arduino。尝试添加更多帧或更改延迟时间。

代码

  • 蝴蝶变形动画
蝴蝶变形动画Arduino
这是示例代码(来自 gif 的蝴蝶变形动画背后的代码)。
/* 蝴蝶变形动画 2021 ~ by tusindfryd 此代码在公共领域*/#include LiquidCrystal lcd(12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup(){ lcd.begin(16, 2);}void loop(){ image00();延迟(250); image01();延迟(250); image02();延迟(250); image03();延迟(700); image04();延迟(250); image05();延迟(250); image06();延迟(700); image07();延迟(1250);}void image00(){ lcd.clear();字节 image22[8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111};字节 image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111};字节 image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 1);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(7, 0);液晶显示器(字节(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image01(){ lcd.clear();字节 image22[8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111};字节 image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111};字节 image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000};字节 image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 1);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(7, 0);液晶显示器(字节(3)); lcd.setCursor(8, 0);液晶显示器(字节(4)); lcd.setCursor(5, 0); lcd.write(byte(5));}void image02(){lcd.clear();字节 image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111};字节 image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111};字节 image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 1);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(7, 0);液晶显示器(字节(3)); lcd.setCursor(8, 0); lcd.write(byte(4));}void image03(){lcd.clear();字节 image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111};字节 image23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111};字节 image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010};字节 image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 1);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(7, 0);液晶显示器(字节(3)); lcd.setCursor(8, 0);液晶显示器(字节(4)); lcd.setCursor(7, 1); lcd.write(byte(5));}void image04(){lcd.clear();字节 image22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111};字节 image23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111};字节 image08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010};字节 image09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100};字节 image24[8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 1);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(7, 0);液晶显示器(字节(3)); lcd.setCursor(8, 0);液晶显示器(字节(4)); lcd.setCursor(7, 1);液晶显示器(字节(5)); lcd.setCursor(8, 1); lcd.write(byte(6));}void image05(){lcd.clear();字节 image24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110};字节 image25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000};字节 image23[8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000};字节 image07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011};字节 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);液晶显示器(字节(0)); lcd.setCursor(8, 1);液晶显示器(字节(1)); lcd.setCursor(6, 1);液晶显示器(字节(2)); lcd.setCursor(6, 0);液晶显示器(字节(3)); lcd.setCursor(7, 0); lcd.write(byte(4));}void image06(){lcd.clear();字节 image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100};字节 image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001};字节 image09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100};字节 image24[8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000};字节 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);液晶显示器(字节(0)); lcd.setCursor(6, 0);液晶显示器(字节(1)); lcd.setCursor(8, 0);液晶显示器(字节(2)); lcd.setCursor(7, 1);液晶显示器(字节(3)); lcd.setCursor(8, 1); lcd.write(byte(4));}void image07(){lcd.clear();字节 image24[8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111};字节 image08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100};字节 image07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001};字节 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);液晶显示器(字节(0)); lcd.setCursor(7, 0);液晶显示器(字节(1)); lcd.setCursor(6, 0);液晶显示器(字节(2)); lcd.setCursor(8, 0); lcd.write(byte(3));}

示意图


制造工艺

  1. CDS:3D 透明液晶显示器
  2. 带有 Arduino 的用于飞行模拟器的 LCD 面板
  3. LCD 动画和游戏
  4. 使用 Arduino UNO 在 LCD TFT 屏幕上显示图像!
  5. DIY 10Hz-50kHz 示波器在 128x64 LCD 显示器上
  6. 如何使用 PHP 创建一个与 Arduino 通信的网站
  7. MAX 30102 16x2 LCD 心率监测器
  8. Arduino 气象站
  9. 使用旋转编码器的诺基亚 5110 Lcd 上的 Arduino 菜单
  10. Arduino Nano LCD 秒表无电位器
  11. 带 DS1302 RTC 的简单闹钟
  12. PCB 原型制作流程:创建定制 PCB 的 5 个步骤