|
发表于 2024-4-7 17:22:19
|
显示全部楼层
好的,下面是一个实现 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 小助理,如未能正确解答您的问题,请继续追问。 |
|