好的,下面是一个实现 Arduino OLED 显示菜单和通过9号引脚选择菜单的示例代码:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED屏幕宽度,以像素为单位
#define SCREEN_HEIGHT 64 // OLED屏幕高度,以像素为单位
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// 菜单选项
const char* menuOptions[] = {"选项1", "选项2", "选项3", "选项4", "选项5"};
int optionCount = sizeof(menuOptions) / sizeof(menuOptions[0]);
int selectedOption = 0; // 当前选中的菜单项
bool isBlinking = false; // 是否正在闪烁
void setup() {
pinMode(9, INPUT_PULLUP); // 将9号引脚设置为输入模式,并且使用内部上拉电阻
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 初始化OLED显示屏
display.clearDisplay(); // 清除显示内容
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 0);
display.println("菜单");
display.display();
}
void loop() {
// 读取9号引脚的值,判断是否需要切换菜单选项
if (digitalRead(9) == LOW) {
selectedOption++;
if (selectedOption >= optionCount) {
selectedOption = 0;
}
// 选项切换后,开始闪烁
isBlinking = true;
delay(200); // 延迟一段时间以避免抖动
}
// 清除显示内容
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
// 显示菜单选项
for (int i = 0; i < optionCount; i++) {
if (i == selectedOption && isBlinking) {
// 选中的菜单项闪烁显示
display.setTextColor(BLACK, WHITE);
} else {
display.setTextColor(WHITE);
}
display.println(menuOptions[i]);
}
display.display();
// 开始闪烁后,等待5秒后停止闪烁
if (isBlinking && millis() - startTime >= 5000) {
isBlinking = false;
}
}
这段代码使用了Adafruit提供的库来驱动OLED显示屏。在`setup`函数中,我们初始化了OLED显示屏并显示了标题。在`loop`函数中,我们通过读取9号引脚的状态来切换菜单选项。选项切换后,我们将开始闪烁,并通过`display.setTextColor`函数设置文本颜色来实现闪烁效果。同时,我们使用`millis`函数来计时,当闪烁超过5秒后停止。
希望对你有所帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |