实现逻辑为,按下按钮屏幕提示按钮被按下。
〇、前置步骤,安装Arduino IDE,直接下载绿色版。下载ST7789屏幕驱动库。
一、驱动屏幕亮起
二、链接按钮,监控按钮状态。
三、直接看代码
#include <Adafruit_GFX.h> #include <Adafruit_ST7789.h> #define TFT_CS 7 // CS 引脚 #define TFT_DC 39 // DC 引脚 #define TFT_RST 40 // RESET 引脚 #define TFT_BACKLIGHT 45 // 背光控制引脚 Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // 按钮引脚 const int buttonA_PIN = 12; // 按钮 A 引脚 const int buttonB_PIN = 13; // 按钮 B 引脚 void setup() { pinMode(TFT_BACKLIGHT, OUTPUT); digitalWrite(TFT_BACKLIGHT, HIGH); // 打开背光 tft.init(135, 240); // 根据屏幕分辨率初始化 tft.setRotation(0); // 根据需要调整屏幕方向 tft.fillScreen(ST77XX_BLACK); // 设置背景色为黑色 // 按钮引脚设置为输入 pinMode(buttonA_PIN, INPUT_PULLUP); // 使用上拉电阻 pinMode(buttonB_PIN, INPUT_PULLUP); // 使用上拉电阻 } void loop() { // 读取按钮状态 int buttonA_state = digitalRead(buttonA_PIN); int buttonB_state = digitalRead(buttonB_PIN); // 清空屏幕 tft.fillScreen(ST77XX_BLACK); // 显示按钮状态 if (buttonA_state == LOW && buttonB_state == LOW) { // 同时按下 tft.setTextColor(ST77XX_WHITE); tft.setCursor(10, 10); tft.setTextSize(2); tft.print("Button 1 & 2 Pressed"); } else if (buttonA_state == LOW) { // 按下按钮 A tft.setTextColor(ST77XX_WHITE); tft.setCursor(10, 10); tft.setTextSize(2); tft.print("Button 1 Pressed"); } else if (buttonB_state == LOW) { // 按下按钮 B tft.setTextColor(ST77XX_WHITE); tft.setCursor(10, 10); tft.setTextSize(2); tft.print("Button 2 Pressed"); } else { // 没有按下 tft.setTextColor(ST77XX_WHITE); tft.setCursor(10, 10); tft.setTextSize(2); tft.print("No Button Pressed"); } delay(50); // 短暂延迟以避免过于频繁的更新 }
四、效果照片
五、注意事项
这个板子要进入烧录模式才可以下载,在我的电脑上会认出COM7、COM8,只有识别为COM8的时候才可以烧录。
貌似官方是希望用户买了这个板子使用CircuitPython,板子上的两个按钮随便按几下就进入Python的烧录程序去了,这一点非常不好,本身对S3了解的不多,没想到这么不好用。非常不友好。