#include "U8glib.h"
#include "config.h"
#include "controls.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
int slider = 0;
int sliderVal;
char menu_items [ITEM_NUM + 1] [MAX_ITEM_LENGTH] = {
{ "Speed" },
{ "Engine RPM" },
{ "Turbo Gauge" },
{ "Brightness" }
};
void setup() {
u8g.setFont(u8g_font_tpssb);
u8g.setColorIndex(1);
pinMode(SELECT_PIN, INPUT_PULLUP);
pinMode(UP_PIN, INPUT_PULLUP);
pinMode(DOWN_PIN, INPUT_PULLUP);
pinMode(BACK_PIN, INPUT_PULLUP);
}
void loop() {
controlButtons();
options();
display();
useSlider();
}
void useSlider() {
sliderVal = analogRead(slider);
if (item_selected == 0) {
sliderVal = map(sliderVal, 0, 1023, 0, 210);
} else if (item_selected == 1) {
sliderVal = map(sliderVal, 0, 1023, 0, 7500);
} else if (item_selected == 2) {
sliderVal = map(sliderVal, 0, 1023, 0, 4);
} else if (item_selected == 3) {
sliderVal = map(sliderVal, 0, 1023, 0, 100);
}
}
void display() {
if (showItem) {
displayItem();
} else {
displayMenu();
}
}
void displayMenu() {
u8g.firstPage();
do {
u8g.drawFrame(1, 22, 120, 20);
u8g.drawStr(4, 15, menu_items[prev_item]);
u8g.drawStr(4, 35, menu_items[current_item]);
u8g.drawStr(4, 55, menu_items[next_item]);
} while (u8g.nextPage());
}
void displaySpeed() {
char sp[3];
sprintf (sp, "%d km/h", sliderVal);
u8g.drawStr(20, 35, "Speed: ");
u8g.drawStr(20 + u8g.getStrWidth("Speed: "), 35, sp);
}
void displayRpm() {
char rp[4];
sprintf (rp, "%d rpm", sliderVal);
u8g.drawStr(20, 35, "RPM: ");
u8g.drawStr(20 + u8g.getStrWidth("RPM: "), 35, rp);
}
void displayTurbo() {
char tg[1];
sprintf (tg, "%d bar", sliderVal);
u8g.drawStr(20, 35, "Turbo: ");
u8g.drawStr(20 + u8g.getStrWidth("Turbo: "), 35, tg);
}
void displayBrightness() {
char br[3];
sprintf (br, "%d %", sliderVal);
u8g.drawStr(20, 20, "Brightness: ");
u8g.drawStr(20 + u8g.getStrWidth("Brightness: "), 20, br);
u8g.drawFrame(14, 30, 100, 20);
u8g.drawBox(14, 30, sliderVal, 20);
}
void displayItem() {
u8g.firstPage();
do {
if (item_selected == 0) {
displaySpeed();
} else if (item_selected == 1) {
displayRpm();
} else if (item_selected == 2) {
displayTurbo();
} else if (item_selected == 3) {
displayBrightness();
}
} while (u8g.nextPage());
}