NodeMCU_esp8266 12F连接1.8寸TFT128*160屏幕

NodeMCU_esp8266 12F连接1.8寸TFT128*160屏幕

一、接线

ESP8266—1.8寸TFT显示屏
GND—GND
3V3—VCC
D5(IO14)—SCL
D7(IO13)—SDA
D1(IO5)—RES
D2(IO4)—DC
D8(IO15)—CS
D6(IO12)—BK (可变更)
*/

二、库引用

adafruit/Adafruit ST7735 and ST7789 Library@^1.9.3

三、代码

#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>

#define TFT_CS 15
#define TFT_RST 5
#define TFT_DC 4

// For 1.44" and 1.8" TFT with ST7735 use:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// For 1.14", 1.3", 1.54", 1.69", and 2.0" TFT with ST7789:
// Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

// For ST7735-based displays, we will use this call
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

// OR for the ST7789-based displays, we will use this call
// Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

float p = 3.1415926;

void testlines(uint16_t color)
{
tft.fillScreen(ST77XX_BLACK);
for (int16_t x = 0; x < tft.width(); x += 6)
{
tft.drawLine(0, 0, x, tft.height() - 1, color);
delay(0);
}
for (int16_t y = 0; y < tft.height(); y += 6)
{
tft.drawLine(0, 0, tft.width() - 1, y, color);
delay(0);
}

tft.fillScreen(ST77XX_BLACK);
for (int16_t x = 0; x < tft.width(); x += 6)
{
tft.drawLine(tft.width() - 1, 0, x, tft.height() - 1, color);
delay(0);
}
for (int16_t y = 0; y < tft.height(); y += 6)
{
tft.drawLine(tft.width() - 1, 0, 0, y, color);
delay(0);
}

tft.fillScreen(ST77XX_BLACK);
for (int16_t x = 0; x < tft.width(); x += 6)
{
tft.drawLine(0, tft.height() - 1, x, 0, color);
delay(0);
}
for (int16_t y = 0; y < tft.height(); y += 6)
{
tft.drawLine(0, tft.height() - 1, tft.width() - 1, y, color);
delay(0);
}

tft.fillScreen(ST77XX_BLACK);
for (int16_t x = 0; x < tft.width(); x += 6)
{
tft.drawLine(tft.width() - 1, tft.height() - 1, x, 0, color);
delay(0);
}
for (int16_t y = 0; y < tft.height(); y += 6)
{
tft.drawLine(tft.width() - 1, tft.height() - 1, 0, y, color);
delay(0);
}
}

void testdrawtext(char *text, uint16_t color)
{
tft.setCursor(0, 0);
tft.setTextColor(color);
tft.setTextWrap(true);
tft.print(text);
}

void testfastlines(uint16_t color1, uint16_t color2)
{
tft.fillScreen(ST77XX_BLACK);
for (int16_t y = 0; y < tft.height(); y += 5)
{
tft.drawFastHLine(0, y, tft.width(), color1);
}
for (int16_t x = 0; x < tft.width(); x += 5)
{
tft.drawFastVLine(x, 0, tft.height(), color2);
}
}

void testdrawrects(uint16_t color)
{
tft.fillScreen(ST77XX_BLACK);
for (int16_t x = 0; x < tft.width(); x += 6)
{
tft.drawRect(tft.width() / 2 - x / 2, tft.height() / 2 - x / 2, x, x, color);
}
}

void testfillrects(uint16_t color1, uint16_t color2)
{
tft.fillScreen(ST77XX_BLACK);
for (int16_t x = tft.width() - 1; x > 6; x -= 6)
{
tft.fillRect(tft.width() / 2 - x / 2, tft.height() / 2 - x / 2, x, x, color1);
tft.drawRect(tft.width() / 2 - x / 2, tft.height() / 2 - x / 2, x, x, color2);
}
}

void testfillcircles(uint8_t radius, uint16_t color)
{
for (int16_t x = radius; x < tft.width(); x += radius * 2)
{
for (int16_t y = radius; y < tft.height(); y += radius * 2)
{
tft.fillCircle(x, y, radius, color);
}
}
}

void testdrawcircles(uint8_t radius, uint16_t color)
{
for (int16_t x = 0; x < tft.width() + radius; x += radius * 2)
{
for (int16_t y = 0; y < tft.height() + radius; y += radius * 2)
{
tft.drawCircle(x, y, radius, color);
}
}
}

void testtriangles()
{
tft.fillScreen(ST77XX_BLACK);
uint16_t color = 0xF800;
int t;
int w = tft.width() / 2;
int x = tft.height() - 1;
int y = 0;
int z = tft.width();
for (t = 0; t <= 15; t++)
{
tft.drawTriangle(w, y, y, x, z, x, color);
x -= 4;
y += 4;
z -= 4;
color += 100;
}
}

void testroundrects()
{
tft.fillScreen(ST77XX_BLACK);
uint16_t color = 100;
int i;
int t;
for (t = 0; t <= 4; t += 1)
{
int x = 0;
int y = 0;
int w = tft.width() - 2;
int h = tft.height() - 2;
for (i = 0; i <= 16; i += 1)
{
tft.drawRoundRect(x, y, w, h, 5, color);
x += 2;
y += 3;
w -= 4;
h -= 6;
color += 1100;
}
color += 100;
}
}

void tftPrintTest()
{
tft.setTextWrap(false);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST77XX_RED);
tft.setTextSize(1);
tft.println(“Hello World!”);
tft.setTextColor(ST77XX_YELLOW);
tft.setTextSize(2);
tft.println(“Hello World!”);
tft.setTextColor(ST77XX_GREEN);
tft.setTextSize(3);
tft.println(“Hello World!”);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(4);
tft.print(1234.567);
delay(1500);
tft.setCursor(0, 0);
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(0);
tft.println(“Hello World!”);
tft.setTextSize(1);
tft.setTextColor(ST77XX_GREEN);
tft.print(p, 6);
tft.println(" Want pi?“);
tft.println(” “);
tft.print(8675309, HEX); // print 8,675,309 out in HEX!
tft.println(” Print HEX!“);
tft.println(” ");
tft.setTextColor(ST77XX_WHITE);
tft.println(“Sketch has been”);
tft.println(“running for: “);
tft.setTextColor(ST77XX_MAGENTA);
tft.print(millis() / 1000);
tft.setTextColor(ST77XX_WHITE);
tft.print(” seconds.”);
}

void mediabuttons()
{
// play
tft.fillScreen(ST77XX_BLACK);
tft.fillRoundRect(25, 10, 78, 60, 8, ST77XX_WHITE);
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_RED);
delay(500);
// pause
tft.fillRoundRect(25, 90, 78, 60, 8, ST77XX_WHITE);
tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_GREEN);
tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_GREEN);
delay(500);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_BLUE);
delay(50);
// pause color
tft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_RED);
tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_RED);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_GREEN);
}

void setup(void)
{
Serial.begin(9600);
Serial.print(F(“Hello! ST77xx TFT Test”));

// Use this initializer if using a 1.8" TFT screen:
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab

// OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare:
// tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab

// OR use this initializer (uncomment) if using a 1.44" TFT:
// tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

// OR use this initializer (uncomment) if using a 0.96" 160x80 TFT:
// tft.initR(INITR_MINI160x80); // Init ST7735S mini display

// OR use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
// tft.init(240, 240); // Init ST7789 240x240

// OR use this initializer (uncomment) if using a 1.69" 280x240 TFT:
// tft.init(240, 280); // Init ST7789 280x240

// OR use this initializer (uncomment) if using a 2.0" 320x240 TFT:
// tft.init(240, 320); // Init ST7789 320x240

// OR use this initializer (uncomment) if using a 1.14" 240x135 TFT:
// tft.init(135, 240); // Init ST7789 240x135

// OR use this initializer (uncomment) if using a 1.47" 172x320 TFT:
// tft.init(172, 320); // Init ST7789 172x320

// SPI speed defaults to SPI_DEFAULT_FREQ defined in the library, you can override it here
// Note that speed allowable depends on chip and quality of wiring, if you go too fast, you
// may end up with a black screen some times, or all the time.
// tft.setSPISpeed(40000000);

Serial.println(F(“Initialized”));

uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;

Serial.println(time, DEC);
delay(500);

// large block of text
tft.fillScreen(ST77XX_BLACK);
testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST77XX_WHITE);
delay(1000);

// tft print function!
tftPrintTest();
delay(4000);

// a single pixel
tft.drawPixel(tft.width() / 2, tft.height() / 2, ST77XX_GREEN);
delay(500);

// line draw test
testlines(ST77XX_YELLOW);
delay(500);

// optimized lines
testfastlines(ST77XX_RED, ST77XX_BLUE);
delay(500);

testdrawrects(ST77XX_GREEN);
delay(500);

testfillrects(ST77XX_YELLOW, ST77XX_MAGENTA);
delay(500);

tft.fillScreen(ST77XX_BLACK);
testfillcircles(10, ST77XX_BLUE);
testdrawcircles(10, ST77XX_WHITE);
delay(500);

testroundrects();
delay(500);

testtriangles();
delay(500);

mediabuttons();
delay(500);

Serial.println(“done”);
delay(1000);
tft.drawBitmap(0, 0, , , , );
}

void loop()
{
tft.invertDisplay(true);
delay(500);
tft.invertDisplay(false);
delay(500);
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值