Arduin-ST7735
需要用到2个库,分别是:Adafruit的GFX库和Adafruit的ST7735
本文实现了,矩形,复杂多边形,文字,颜色等,绘制于显示
下面是历程graphicstest
调试的时候需要注意:我估计,库文件,开发者可能是色盲,分不清楚颜色。部分颜色倍反相了。
注意,历程中的,CS和RESET的链接方法不对,请根据实际链接方法修改。
#include <Adafruit_GFX.h> //核心图形库
#include <Adafruit_ST7735.h> //为ST7735硬件专用库
#include <Adafruit_ST7789.h> //为ST7789硬件专用库
#include <SPI.h>#ifdef ADAFRUIT_HALLOWING#define TFT_CS 39 // Hallowing显示控制引脚:芯片选择#define TFT_RST 37 //显示复位#define TFT_DC 38 //显示数据/命令选择#define TFT_BACKLIGHT 7 //显示屏背光销
#elif defined(ESP8266)#define TFT_CS 4#define TFT_RST 16 #define TFT_DC 5
#else
//对于分线板,您可以使用任何2或3个引脚。//这些引脚也适用于1.8“TFT屏蔽。#define TFT_CS 10#define TFT_RST 8 //或者设置为-1,并连接到Arduino的RESET引脚#define TFT_DC 9
#endif//选项1(推荐)是使用独特的HARDWARE SPI引脚
//对每个棋盘而不是可重新分配。对于Arduino Uno:MOSI =引脚11和
// SCLK =引脚13.这是最快的操作模式,如果是,则需要
//使用分线板的microSD卡。//对于1.44“和1.8”TFT与ST7735(包括HalloWing)使用:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);//适用于带ST7789的1.54英寸TFT:
// Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS,TFT_DC,TFT_RST);//选项2允许您使用任意两个或三个PIN来连接显示器,
//权衡是性能不如上面的硬件SPI快。
// #define TFT_MOSI 11 //数据输出
// #define TFT_SCLK 13 //时钟输出
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,TFT_DC,TFT_MOSI,TFT_SCLK,TFT_RST);
float p = 3.1415926;void setup(void) {Serial.begin(9600);Serial.print(F("Hello! ST77xx TFT Test"));#ifdef ADAFRUIT_HALLOWING// HalloWing是一个特例。它使用的是ST7735R显示器//分线板,但方向和背光控制是不同的。tft.initR(INITR_HALLOWING); //初始化面向HalloWing的屏幕pinMode(TFT_BACKLIGHT, OUTPUT);digitalWrite(TFT_BACKLIGHT, HIGH);//背光
#else//如果使用1.8英寸TFT屏幕,请使用此初始化程序:tft.initR(INITR_BLACKTAB); //初始化ST7735S芯片,黑色标签//如果使用1.44“TFT,请使用此初始化程序(取消注释):// tft.initR(INITR_144GREENTAB); //初始化ST7735R芯片,绿色标签//如果使用0.96“180x60 TFT,请使用此初始值设定项(取消注释):// tft.initR(INITR_MINI160x80); // Init ST7735S迷你显示器//如果使用1.54“240x240 TFT,请使用此初始化程序(取消注释):// tft.init(240,240); //初始化ST7789 240x240
#endifSerial.println(F("Initialized"));uint16_t time = millis();tft.fillScreen(ST77XX_BLACK);time = millis() - time;Serial.println(time, DEC);delay(500);//大块文字tft.fillScreen(ST77XX_BLACK);testdrawtext("123456", ST77XX_WHITE); //其中WHITE,定义字体为白色delay(1000);// tft打印功能!tftPrintTest();delay(4000);//一个像素tft.drawPixel(tft.width()/2, tft.height()/2, ST77XX_GREEN); //就只是在,屏幕正中间画了一个点delay(500);//线条绘制测试testlines(ST77XX_YELLOW);delay(500);//优化的线条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("完成");delay(1000);
}void loop() {tft.invertDisplay(true);delay(500);tft.invertDisplay(false);delay(500);
}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);int 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);int 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); //设置游标初始位置,x轴为0,Y轴为30tft.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); //设置字体大小为,0tft.println("Hello World!");tft.setTextSize(1);tft.setTextColor(ST77XX_GREEN);tft.print(p, 6); //显示,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() {// playtft.fillScreen(ST77XX_BLACK);tft.fillRoundRect(25, 10, 78, 60, 8, ST77XX_WHITE);tft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_RED);delay(500);// pausetft.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 colortft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_BLUE);delay(50);// pause colortft.fillRoundRect(39, 98, 20, 45, 5, ST77XX_RED);tft.fillRoundRect(69, 98, 20, 45, 5, ST77XX_RED);// play colortft.fillTriangle(42, 20, 42, 60, 90, 40, ST77XX_GREEN);
}
Arduin-ST7735相关推荐
- 【华为云技术分享】40多元成本制作基于Arduin的随动四轴机械臂,机械臂实现步骤记录、复现等功能
[摘要] Arduin随动四轴机械臂,机械臂实现步骤记录.复现等功能:主要原材料元器件有:电位器 * 4.9g舵机 * 4.轻触开关 * 1.Arduin UNO * 1.热熔胶.杜邦线多根(建议用质 ...
- Arduino ESP32 TFTLCD ST7735 代码和原理
目录 前言 一.3线SPI 二.使用 1.命令 2.对应引脚调整 总结 前言 驱动芯片是ST7735,之前在Arduino上找库,没几个能用的(我FW不能用肯定是我的错),最后还是自己从STM32移植 ...
- esp32 Micropython驱动ST7735 1.8寸TFT屏幕 中文显示;时间显示、网络network实时时间获取utptime;urequests、upip等包安装
参考: https://blog.csdn.net/weixin_57604547/article/details/122274614 0.线连接 IO就是GPIO引脚 ESP32 ---- TFT ...
- STM32F1案例 ST7735 TFT液晶显示屏综合库使用
STM32F1案例 ST7735 TFT液晶显示屏综合库使用 硬件平台 野火STM32F103ZET6 霸道V2开发板 正点原子F1系列开发板 STM32F103ZET6核心板 ST7735 TFT液 ...
- ESP32 ESP-IDF TFT-LCD(ST7735 128x160) LVGL演示
陈拓 2022/08/30-2022/09/01 1. 开发板和显示屏 上网看看你就会发现在同等尺寸的情况下彩色显示屏的价格已经低于单色屏.用彩色屏代替单色屏可以提高产品的档次,并降低成本. 彩色屏的 ...
- RK3399使用微雪电子ST7735显示屏
配置 1.1 在内核中, make ARCH=arm64 menuconfig -> Device Drivers [*] Staging drivers[*] Support for smal ...
- 合宙 ESP32C3 使用micropython 驱动配套0.96寸 TFT ST7735 屏幕显示色块和文字
合宙的esp32c3 开发板配套了0.96寸屏幕驱动板,可直接使用如下链接的代码.注意替换对应的pin脚和st7735.py文件 1. 想显示色块参考如下链接: 链接: 合宙esp32c3+合宙air ...
- NodeMCU-ESP8266使用TFT_eSPI库驱动IC为ST7735的1.44寸TFT屏幕(TFT_eSPI详解)
文章目录 1. TFT_eSPI 驱动TFT屏幕 2. TFT_eSPI详解 2.1 文件配置 2.2 类.常用函数 2.1.1 TFT_eSPI类 2.1.2 Sprite 类 3. OVERLAP ...
- 【MicroPython ESP32】1.8“tft ST7735驱动3Dcube图形显示示例
[MicroPython ESP32]1.8"tft ST7735驱动3Dcube图形显示示例 本实例基于Thonny平台开发 效果演示(Gif录制,帧率上不来,有重影,实际效果没有,很流畅 ...
- ESP8266-Arduino编程实例-1.44寸LCD(ST7735)驱动
1.44寸LCD(ST7735)驱动 1.LCD介绍 液晶显示器 (LCD) 是一种平板显示器或其他电子调制光学设备,它利用液晶与偏振器的光调制特性.液晶不直接发光,而是使用背光或反射器来产生彩色或单 ...
最新文章
- 四川大学线下编程比赛第一题:数字填充
- 深度学习如何入门?怎么入门机器/深度学习?
- nacative mysql_MySQL索引优化
- 类的继承定义一个computer类在此基础上派生出两个子类(继承与多态绑定)
- 二维gabor滤波器matlab,matlab中实现Gabor滤波器 | 学步园
- HBase 的存储结构
- python lock_python多线程Lock和RLock的区别
- 定时器和promise_手写Promise核心原理,再也不怕面试官问我Promise原理
- 第1次作业:阅读优秀博文谈感想
- [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?
- 最佳圆角字体,设计师的最爱
- 随想录(B+树的实现)
- 软件测试工程师怎么样面试上好的公司?
- golang fatal error: all goroutines are asleep - deadlock!
- java list随机取_java list随机抽取元素的案例
- 转载 戴仁光:给专职站长的网络创业建议
- 关于cocos2d引擎写的手游加速
- 动态规划_数字的划分
- 架设NOD32升级服务器
- 支持向量机用于多分类