#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED显示器的宽度
#define SCREEN_HEIGHT 64 // OLED显示器的高度
#define OLED_RESET -1 // 如果使用SPI接口,将OLED_RESET设置为-1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define BUTTON_UP 27 // 上按钮
#define BUTTON_DOWN 26 // 下按钮
String lists[] = {"list1","list2","list3","list4","list5","list6","list7","list8","list9","list10"};
int x=0,y=1,selected=0,selected_x=0,selected_y=0;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_UP, INPUT_PULLUP);
pinMode(BUTTON_DOWN, INPUT_PULLUP);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.display();
display.setTextSize(2);
}
void loop() {
if(!digitalRead(27)){
delay(50);
if(selected<6){
y-=16;
selected++;
}
else if(selected>=6 && selected<9){
selected++;
selected_y+=16;
}
}
else if(!digitalRead(26)){
delay(50);
if(selected>6 && selected<=9){
selected--;
selected_y-=16;
}
else if(selected>0){
y+=16;
selected--;
}
}
display.clearDisplay();
display.fillRect(selected_x,selected_y,lists[selected].length()*12+3,16,1);
for(int i=0;i<10;i++){
if(selected==i)
text(x+3,y+i*16,lists[i],0);
else
text(x+3,y+i*16,lists[i],1);
}
display.display();
delay(10);
}
void text(int x,int y,String arr,uint16_t color){
display.setTextColor(color);
display.setCursor(x, y);
display.print(arr);
}