风筝
发表于: 2020-10-21 11:40:01 | 显示全部楼层

显示屏是向特定设备或项目的用户提供反馈的最佳方法之一,通常显示屏越大越好。在本篇文章中,我们将介绍如何在Arduino开发板上使用相对较大、低成本的基于ILI9481的3.5寸彩色TFT显示屏。

pl19872858-remark.jpg


如上所述,该3.5寸彩色TFT显示屏是基于TFT显示驱动器ILI9481。该模块的分辨率为480×320像素,并带有SD卡插槽,通过该插槽可以将存有图形和UI的SD卡连接到显示屏。该模块还预焊接了插头,​​以便于在Arduino Mega和Arduino Uno上轻松安装,这很好,因为与Arduino Uno配合使用的TFT显示屏非常少。为了展示如何在基于Arduino的项目中使用该显示屏,我们将运行简单的演示在显示屏上显示图形和文本。


所需的组件

●    3.5寸彩色TFT显示屏

●    Arduino UNO开发板

●    Arduino Mega开发板


原理图

该模块的其中一个优点是可以轻松连接到Arduino Mega或Arduino Uno。在本文中,我们将使用Arduino Uno,因为该模块是一个扩展板,其引脚焊接与Uno的引脚排布相匹配。我们需要做的就是将其插入Arduino Uno的顶部,如下图所示,因此无需布线。

Plug-the-display.jpg


然而,上述模块的这种易用性是显示屏的少数缺点之一。如果我们不使用连接的SD卡插槽,则将剩下6个数字引脚和1个模拟引脚,因为该模块使用了大多数Arduino引脚。当我们使用显示器的SD卡部分时,将只剩下2个数字引脚和1个模拟引脚。显示屏与Arduino Mega的引脚兼容,而Mega开发板提供了更多的数字和模拟引脚供您使用,因此当您需要额外的引脚时,尺寸就不成问题了,使用Mega。连接模块后,我们现在可以开始编写代码了。


代码

为了轻松编写代码以使用该显示屏,我们将使用Adafruit提供的GFX和TFT LCD库,可在此处下载。安装了库之后,我们可以轻松地浏览随附的示例,并将其上传到我们的设置中以查看实际显示。通过研究这些示例,可以轻松地学习如何使用此显示屏。但是,在本文中,我将一些最重要的用于显示文本和图形的功能编译到了Arduino草图中。


和平常一样,我们将快速浏览一下代码,首先包含用于项目的库,在本例中为Adafruit GFX和TFT LCD库。

  1. //Written by Nick Koumaris
  2. //info@educ8s.tv
  3. #include <Adafruit_GFX.h>   
  4. #include <Adafruit_TFTLCD.h>
复制代码

接下来,我们声明LCD连接到的Arduino的引脚,并使用匹配的十六进制值创建字体和颜色的变量。

  1. #define LCD_CS A3
  2. #define LCD_CD A2
  3. #define LCD_WR A1
  4. #define LCD_RD A0
  5. #define LCD_RESET A4

  6. #define BLACK   0x0000
  7. #define BLUE    0x001F
  8. #define RED     0xF800
  9. #define GREEN   0x07E0
  10. #define CYAN    0x07FF
  11. #define MAGENTA 0xF81F
  12. #define YELLOW  0xFFE0
  13. #define WHITE   0xFFFF
复制代码

接下来,我们将LCD连接到的Arduino引脚作为参数创建TFTLCD库的对象。

  1. Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
复制代码

完成上述操作后,接下来是void setup()函数。首先,我们通过使用tft.reset()命令将LCD重置为默认配置。接下来,LCD.begin函数指定要使用的LCD类型,并根据需要设置TFT的旋转角度。我们用不同的颜色填充屏幕,并使用不同的颜色(通过tft.SetTextColor()函数)和字体大小(通过tft.setTextSize()函数)显示不同种类的文本。

  1. void setup() {

  2.   tft.reset();
  3.   tft.begin(0x9481);
  4.   tft.setRotation(1);
  5.   tft.fillScreen(RED);
  6.   tft.fillScreen(GREEN);
  7.   tft.fillScreen(BLUE);
  8.   tft.fillScreen(BLACK);
  9.   delay(1000);
  10.   tft.setCursor(80,100);
  11.   tft.setTextColor(WHITE);
  12.   tft.setTextSize(4);
  13.   tft.print("Hello");

  14.   tft.setCursor(220,100);
  15.   tft.setTextColor(RED);
  16.   tft.setTextSize(4);
  17.   tft.print("YouTUBE!");

  18.   tft.fillRect(80,200, 321, 60, RED);

  19.   tft.setCursor(135,215);
  20.   tft.setTextColor(WHITE);
  21.   tft.setTextSize(4);
  22.   tft.print("Subscribe");

  23.   tft.drawRect(0,0,480,320,WHITE);
  24.   delay(1000);
复制代码

接下来是void loop()数。 在这里,我们基本上使用与void setup()函数相同的函数创建一个UI,显示一个订阅按钮。

  1. void loop()
  2. {
  3.   tft.fillRect(80,200,321,60,BLACK);
  4.   delay(1000);
  5.   tft.fillRect(80,200,321,60,RED);
  6.   tft.setCursor(135,215);
  7.   tft.setTextColor(WHITE);
  8.   tft.setTextSize(4);
  9.   tft.print("Subscribe");
  10.   delay(1000);
  11. }
复制代码

Adafruit库有助于减少为该显示屏开发代码时需要做的工作,而使用户界面的质量不受编写代码的人的创造力和想象力的限制。


效果演示

复制上面的代码,然后在安装库之后,上传到您的设置。 您应该看到如下图所示的显示。

Demo-3.5.jpg


以上就是本文的全部内容,感谢您的阅读。 如果您以此为基础制作了一些很棒的项目,或者有任何关于本文的疑问,请随时在本帖下面进行回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-22 04:48 , Processed in 0.047697 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表