#include <U8g2lib.h>
#include <Wire.h>
#include <OneButton.h>
String mylist[]={"Menu 1", "Menu 2", "Menu 3"};
volatile int x_pos;
volatile int y_pos;
volatile int y_target;
String text;
volatile int selecteditem;
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
OneButton button2(2,true);
OneButton button4(4,true);
void ScrollFrame() {
u8g2.firstPage();
do
{
menuDisplay();
if (y_pos <= y_target) {
y_pos = y_pos + 1;
} else {
y_pos = y_pos - 1;
}
u8g2.drawRFrame(5,y_pos-2,115,20,3);
}while(u8g2.nextPage());
}
void attachClick2() {
selecteditem = (selecteditem+1)%3;
y_target = selecteditem*20+5;
}
void menuDisplay() {
u8g2.setFont(u8g2_font_timR12_tf);
u8g2.setFontPosTop();
for (int i = (0); i <= (sizeof(mylist)/sizeof(mylist[0])); i = i + (1)) {
u8g2.setCursor(10,20*i+5);
u8g2.print(mylist[i]);
}
}
void attachClick4() {
selecteditem = (selecteditem-1)%3;
y_target = selecteditem*20+5;
}
void setup(){
x_pos = 0;
y_pos = 5;
y_target = 5;
text = "thien90";
selecteditem = 0;
u8g2.setI2CAddress(0x3C*2);
u8g2.begin();
button2.attachClick(attachClick2);
u8g2.enableUTF8Print();
button4.attachClick(attachClick4);
}
void loop(){
ScrollFrame();
button2.tick();
button4.tick();
}