驴友花雕 发表于 2025-3-20 16:15:17

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

最近在研究一种非常酷炫的显示方案,灵感来源于摩托车上使用的“9号恶魔之眼”。这种屏幕不仅视觉效果惊艳,还非常适合用作机器人眼睛的显示模块。它的动态效果和细腻的显示能力,能够为机器人增添更多的生命力和表现力。目前,我正在收集各种尺寸的TFT LCD屏幕,计划为机器人设计一对灵动且富有表现力的“眼睛”。



驴友花雕 发表于 2025-3-20 16:16:40

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛






驴友花雕 发表于 2025-3-20 16:18:32

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

目前手头已经收集了几款不同尺寸的TFT LCD屏幕,包括1.28寸、1.3寸、1.44寸和1.54寸的型号。这些屏幕各有特点:

1.28寸屏幕:小巧精致,适合小型机器人或需要紧凑设计的场景。

1.3寸屏幕:分辨率和色彩表现不错,适合中等尺寸的机器人头部设计。

1.44寸屏幕:显示面积更大,适合需要更醒目效果的机器人眼睛。

1.54寸屏幕:显示效果更加细腻,适合高端机器人或需要复杂表情的设计。



接下来,我计划对这些屏幕进行测试与实验,评估它们的显示效果、驱动难度以及与机器人硬件的兼容性。最终目标是选择多款最适合的屏幕,结合“9号恶魔之眼”的设计理念,打造出各种既实用又炫酷的机器人眼睛。

如果有朋友对这方面感兴趣,或者有相关的经验分享,欢迎一起交流探讨!

驴友花雕 发表于 2025-3-20 16:57:40

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

第一种,准备先尝试这块1.44寸的TFT 屏幕(分辨率128x128)




驴友花雕 发表于 2025-3-20 17:20:20

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

这屏幕以前没有用过,背面的型号是:MD144_SPI_V04,网上查到,是深圳市尚视界科技有限公司(https://www.sun-lcm.com/)的产品,相关资料如下:
1、基本规格



驴友花雕 发表于 2025-3-20 17:22:19

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

2、电原理图


驴友花雕 发表于 2025-3-20 17:23:36

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

3、接口定义



驴友花雕 发表于 2025-3-20 17:28:29

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

4、外观规格


驴友花雕 发表于 2025-3-20 17:33:26

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

本帖最后由 驴友花雕 于 2025-3-20 17:42 编辑

实验开发板选择Arduino UNO和ESP32






驴友花雕 发表于 2025-3-20 18:01:37

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

先安装 Adafruit-ST7735-Library 驱动库 (https://github.com/adafruit/Adafruit-ST7735-Library)



驴友花雕 发表于 2025-3-20 18:04:23

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

点亮屏幕的实验接线示意图

SCK toDigitalpin 13
SDA toDigitalpin 11
DC   toDigitalpin9
Reset toDigital pin 8
CStoDigital   pin 10
GND to Arduino GND
VCCto Arduino 3.3V



驴友花雕 发表于 2025-3-20 18:41:50

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

【花雕动手做】炫酷与实用的结合:基于“9号恶魔之眼”的 ESP32 机器人眼睛测试实践
实验项目之一:点亮1.44寸TFT彩屏128*128分辩率 spi接口屏幕(Arduino UNO)
实验开源代码

/*
【花雕动手做】炫酷与实用的结合:基于“9号恶魔之眼”的 ESP32 机器人眼睛测试实践
   实验项目之一:点亮1.44寸TFT彩屏128*128分辩率 spi接口屏幕
*/

#include <SPI.h>                   // 包含SPI库,用于处理Arduino与ST7735显示屏之间的SPI通信
#include <Adafruit_GFX.h>          // 包含Adafruit GFX核心图形库,用于绘制形状、文本等
#include <Adafruit_ST7735.h>       // 包含针对ST7735显示屏的硬件特定库

// 定义显示屏的控制引脚
#define TFT_CS 10                  // 片选(CS)引脚,连接到显示屏
#define TFT_RST 8                  // 重置(RST)引脚,连接到显示屏;如果连接到Arduino的RESET引脚,可以设置为-1
#define TFT_DC9                   // 数据/命令控制(DC)引脚,连接到显示屏

// 创建ST7735显示屏对象,使用上述定义的引脚
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// Arduino的setup函数,初始化设置
void setup(void) {
tft.initR(INITR_144GREENTAB);    // 初始化ST7735R芯片,指定“绿色标签”类型的显示屏
tft.fillScreen(ST77XX_BLACK); // 可选:初始化时填充屏幕为黑色
tft.setRotation(0);            // 设置屏幕方向(0表示默认方向,纵向)
}

// Arduino的loop函数,包含循环运行的代码
void loop() {
tft.fillScreen(ST77XX_BLACK);         // 将整个屏幕填充为青色
print_text(18, 50, "HELLO", 3, ST77XX_RED); // 在屏幕上显示红色的文字"HELLO",位置(18, 50),字体大小3
print_text(12, 90, "WORLD!", 3, ST77XX_WHITE);// 在屏幕上显示白色的文字"WORLD!",位置(12, 90),字体大小3
delay(5000);                        // 延迟5秒

tft.fillScreen(ST77XX_BLACK);         // 将整个屏幕填充为黑色
tft.fillRoundRect(25, 10, 78, 60, 8, ST77XX_WHITE); // 绘制一个白色圆角矩形,左上角位置(25, 50),宽78像素,高60像素,圆角半径8像素
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_RED); // 绘制一个红色实心三角形,顶点为(42, 20)、(42, 60)、(90, 40)
delay(5000);                        // 延迟5秒

tft.fillScreen(ST77XX_CYAN);          // 再次将屏幕填充为青色
tft.drawRect(5, 5, 120, 120, ST77XX_RED);      // 绘制一个红色矩形,左上角(5, 5),宽120像素,高120像素
tft.drawFastHLine(5, 60, 120, ST77XX_RED);   // 绘制一条水平红线,起点(5, 60),长度120像素
tft.drawFastVLine(60, 5, 120, ST77XX_RED);   // 绘制一条垂直红线,起点(60, 5),长度120像素
delay(5000);                        // 延迟5秒
}

// 自定义的辅助函数,用于在屏幕上绘制文字
// 参数:x_pos - X坐标, y_pos - Y坐标, text - 显示的文字, text_size - 字体大小, color - 文字颜色
void print_text(byte x_pos, byte y_pos, char *text, byte text_size, uint16_t color) {
tft.setCursor(x_pos, y_pos);          // 设置文字的起始光标位置
tft.setTextSize(text_size);         // 设置文字大小
tft.setTextColor(color);            // 设置文字颜色
tft.setTextWrap(true);                // 启用文字换行(超出屏幕宽度时自动换行)
tft.print(text);                      // 在屏幕上打印文字
}

驴友花雕 发表于 2025-3-20 18:44:47

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

代码解读

1、包含的库:

SPI.h:处理Arduino与显示屏之间的SPI通信协议。

Adafruit_GFX.h:提供核心图形功能,例如绘制形状、显示文字等。

Adafruit_ST7735.h:专门针对ST7735显示屏的库。

2、引脚定义:

TFT_CS, TFT_RST, TFT_DC:定义了显示屏控制的引脚。

3、显示屏初始化:

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);:通过指定的引脚创建显示屏对象。

4、setup()函数:

初始化显示屏,并设置显示方向为纵向或横向。

5、loop()函数:

创建各种图形和文字动画:

填充屏幕为纯色。

在特定位置显示文字,支持自定义大小和颜色。

绘制形状,例如圆角矩形、三角形和分割画面。

6、辅助函数:

print_text:一个自定义函数,用于在屏幕上渲染指定位置、大小和颜色的文字。


显示动画解释
文字显示:"HELLO" 和 "WORLD!" 分别以不同颜色出现在不同的位置,停留5秒。

图形显示:

显示一个白色的圆角矩形和一个红色的三角形。

显示一个带有红色矩形和十字线的青色背景,将屏幕分成四个区域。

这个代码展示了如何在ST7735屏幕上创建基础图形和动画效果。



驴友花雕 发表于 2025-3-20 18:50:59

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

实验场景图


驴友花雕 发表于 2025-3-20 19:32:42

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

Adafruit-ST7735-Library 驱动库的基本命令,大多数 TFT 库都已编程为支持以下命令:

tft.fillScreen();此功能用于更改屏幕的颜色。
tft.setCursor(x,y);用于使用屏幕的 x 和 y 坐标设置光标位置。
tft.setTextColor(t);用于设置文本的颜色。
tft.setTextColor(t,b);设置文本的颜色及其背景。
tft.setTextSize();用于设置文本大小。这应该是 1 到 5。
tft.setRotation();旋转屏幕。可以取 0 表示 0 度、1 表示 90 度、2 表示 180 度和 3 表示 270 度。
tft.print();用于显示字符串。
tft.println() 的;显示字符串并将光标移动到下一行。
tft.drawFastVLine(x,y,h,t);此函数绘制一条从 x、y 位置开始的垂直线,其长度为 h 像素,其颜色为 t。
tft.drawFastHLine(x,y,w,t);此函数绘制一条从 x、y 位置开始的水平线,其长度为 w 像素,其颜色为 t。
tft.drawLine(习,yi,xj,yj,t);此函数绘制一条以 习 和 yi 开头的线条,位置以 xj 和 yj 结束,颜色为 t。
tft.drawRect(x,y,w,h,t);函数在 x 和 y 位置绘制一个矩形,宽度为 w,高度为 h,颜色为 t。
tft.fillRect(x,y,w,h,t);函数在 x 和 y 位置绘制一个填充矩形。w 是宽度,h 是高度,t 是矩形的颜色
tft.drawCircle(x,y,r,t);函数在 x 和 y 位置以及 r 半径和 t 颜色中绘制一个圆。
tft.fillCircle(x,y,r,t);函数在 x 和 y 位置以及 r 半径和 t 颜色中绘制一个实心圆。
tft.drawTriangle(x1,y1,x2,y2,x3,y3,t);函数绘制一个具有三个角位置 x、y 和 z 以及 t 颜色的三角形。
tft.fillTriangle(x1,y1,x2,y2,x3,y3,t);函数绘制一个填充三角形,其中包含三个角位置 X、Y 和 Z,以及 T 颜色。
tft.drawRoundRect(x,y,w,h,r,t);函数绘制一个 Rectangle,半径为 r,x 和 y 位置为圆角,w 宽度和 h 高度以及 t 颜色。
tft.fillRoundRect(x,y,w,h,r,t);函数绘制一个填充的 Rectangle,半径为 r,在 x 和 y 位置为圆角,w 宽度为 h,高度为 t,颜色为 t。

还有许多其他函数和命令可用于对 TFT 彩色显示进行编程,但以上是最常见的。


驴友花雕 发表于 2025-3-21 05:53:01

【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛

实验待续.......
页: [1]
查看完整版本: 【花雕动手做】尝试基于“9号恶魔之眼”的机器人眼睛