准备工作:
装备:
- ESP 8266 D1 MINI
- 1.3寸 TFT 屏幕
- 分光棱镜25.4mm
- 面包板、杜邦线、数据线等配件
软件:
Arduino(本人使用1.8.16)---驱动ch341
初始arduino简单程序,对esp8266上传代码,能正常运行。正式开始
坑1:无法读取到com口的esp8266. 最终是数据线的问题。很多usb线读取不了。一定要换根有用的。
开始接线
这个不需要参考我的,接的比较乱。网上随便搜索,esp8266和tft屏如何接线
第一集代码
先让esp对tft屏能进行显示,并且屏幕内容为镜像显示。分光棱镜的效果就达到了。
首先要加载库 TFT_eSPI-2.4.72.zip
#include<TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI(240,240); //实例化
void setup() {
Serial.begin(115200);
tft.init();
tft.setSwapBytes(true);
tft.setRotation(4); //0,0°, 1-3(90°-270°) ,4镜像
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE, TFT_BLACK, true);
tft.setTextSize(2);
tft.println("Hello World!!");
tft.println("Holocube!!");
}
void loop() {
}
运行效果:
坑2:
tft.setRotation(4); //4镜像。镜像这个正常是不会直接来的,需要改库文件的。
这个屏幕大小是240*240.可以改下。
ST7789_Defines.h
// Change the width and height if required (defined in portrait mode)
// or use the constructor to over-ride defaults
#ifndef TFT_WIDTH
#define TFT_WIDTH 240
#endif
#ifndef TFT_HEIGHT
#define TFT_HEIGHT 240
#endif
ST7789_Rotation.h
writecommand(TFT_MADCTL);
rotation = m % 5;//需要修改
writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER);
_width = _init_height;
_height = _init_width;
break;
case 4: //需要增加的代码
#ifdef CGRAM_OFFSET
if (_init_width == 135)
{
colstart = 53;
rowstart = 40;
}
else if(_init_height == 280)
{
colstart = 0;
rowstart = 20;
}
else if(_init_width == 172)
{
colstart = 34;
rowstart = 0;
}
else if(_init_width == 170)
{
colstart = 35;
rowstart = 0;
}
else
{
colstart = 0;
rowstart = 80;
}
#endif
writedata(0x90);
_width = _init_height;
_height = _init_width;
break;
case 4 需要增加。
writedata(0x90);//这句最关键。 1001 0000
详细了解TFT显示的相关知识。