实现逻辑为,按下按钮屏幕提示按钮被按下。
〇、前置步骤,安装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了解的不多,没想到这么不好用。非常不友好。
我要赚赏金
