#include <U8g2lib.h>
#define analogtest A0 //Löschen
float distanz = 0; //Löschen
U8G2_SSD1306_128X64_NONAME_F_HW_I2C front(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
static const unsigned char image_FaceConfused_29x14_bits[] U8X8_PROGMEM = {0x80,0x00,0x80,0x0f,0x38,0x01,0x40,0x10,0x44,0x01,0x20,0x07,0x52,0x01,0xa0,0x08,0x4a,0x01,0xa0,0x0a,0x32,0x91,0x24,0x09,0x84,0x48,0x42,0x04,0x78,0x24,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x0f,0x00,0x00,0xfe,0x1f,0x00,0x00,0x0e,0x18,0x00,0x00,0xfe,0x1f,0x00};
static const unsigned char image_car[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0x01,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,0xff,0x01,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,0xc7,0xff,0x1f,0xc0,0xf1,0xff,0x3f,0x00,0x00,0xc7,0xff,0x1f,0xc0,0xf1,0xff,0x3f,0x00,0x00,0xc7,0xff,0x1f,0xc0,0xf1,0xff,0x3f,0x00,0x00,0xff,0x71,0x1c,0xc0,0xf1,0xe3,0xf8,0x0f,0x00,0xff,0x71,0x1c,0xc0,0xf1,0xe3,0xf8,0x0f,0x00,0xff,0x71,0x1c,0xc0,0xf1,0xe3,0xf8,0x0f,0x00,0xc7,0x71,0x1c,0x00,0xf0,0x03,0x38,0x0e,0x00,0xc7,0x71,0x1c,0x00,0xf0,0x03,0x38,0x0e,0x00,0xc7,0x71,0x1c,0x00,0xf0,0x03,0x38,0x0e,0x00,0xff,0x71,0xfc,0xff,0x8f,0xe3,0x38,0x0e,0x00,0xff,0x71,0xfc,0xff,0x8f,0xe3,0x38,0x0e,0x00,0xff,0x71,0xfc,0xff,0x8f,0xe3,0x38,0x0e,0x00,0xc7,0x81,0xff,0xf8,0x7f,0x00,0x38,0x0e,0x00,0xc7,0x81,0xff,0xf8,0x7f,0x00,0x38,0x0e,0x00,0xc7,0x81,0xff,0xf8,0x7f,0x00,0x38,0x0e,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x38,0x0e,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x38,0x0e,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x38,0x0e,0x00,0x38,0xf0,0x1f,0xc7,0x8f,0xff,0x00,0x0e,0x00,0x38,0xf0,0x1f,0xc7,0x8f,0xff,0x00,0x0e,0x00,0x38,0xf0,0x1f,0xc7,0x8f,0xff,0x00,0x0e,0x00,0xf8,0x71,0x1c,0x00,0x80,0xe3,0x00,0x0e,0x00,0xf8,0x71,0x1c,0x00,0x80,0xe3,0x00,0x0e,0x00,0xf8,0x71,0x1c,0x00,0x80,0xe3,0x00,0x0e,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_Pin_arrow_right_9x7_bits[] U8X8_PROGMEM = {0x20,0x00,0x60,0x00,0xff,0x00,0xff,0x01,0xff,0x00,0x60,0x00,0x20,0x00};
static const unsigned char image_Pin_arrow_left_9x7_bits[] U8X8_PROGMEM = {0x08,0x00,0x0c,0x00,0xfe,0x01,0xff,0x01,0xfe,0x01,0x0c,0x00,0x08,0x00};
static const unsigned char image_Smile_18x18_bits[] U8X8_PROGMEM = {0xc0,0x0f,0x00,0xf0,0x3f,0x00,0xf8,0x7f,0x00,0xfc,0xff,0x00,0xfe,0xff,0x01,0xfe,0xff,0x01,0xff,0xff,0x03,0xcf,0xcf,0x03,0x87,0x87,0x03,0x87,0x87,0x03,0xcf,0xcf,0x03,0xff,0xff,0x03,0xfe,0xff,0x01,0xbe,0xf7,0x01,0x7c,0xf8,0x00,0xf8,0x7f,0x00,0xf0,0x3f,0x00,0xc0,0x0f,0x00};
static const unsigned char image_Pin_back_arrow_10x8_bits[] U8X8_PROGMEM = {0x04,0x00,0x06,0x00,0xff,0x00,0x06,0x01,0x04,0x02,0x00,0x02,0x00,0x01,0xf8,0x00};
static const unsigned char image_FaceNopower_29x14_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0xc0,0x00,0x60,0x00,0xc0,0x00,0x60,0x00,0xe0,0x00,0xe0,0x00,0x7e,0x00,0xc0,0x0f,0x3e,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x0c,0x06,0x00,0x00,0xfe,0x0f,0x00,0x00,0xfe,0x0f,0x00,0x00,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_EviSmile1_18x21_bits[] U8X8_PROGMEM = {0x0c,0xc0,0x00,0x06,0x80,0x01,0x07,0x80,0x03,0xcf,0xcf,0x03,0xff,0xff,0x03,0xff,0xff,0x03,0xfe,0xff,0x01,0xfe,0xff,0x01,0xfe,0xff,0x01,0xf7,0xbf,0x03,0xe7,0x9f,0x03,0xc7,0x8f,0x03,0x87,0x87,0x03,0x8f,0xc7,0x03,0xff,0xff,0x03,0xfe,0xff,0x01,0xde,0xef,0x01,0xbc,0xf4,0x00,0x78,0x78,0x00,0xf0,0x3f,0x00,0xc0,0x0f,0x00};
static const unsigned char image_Button_18x18_bits[] U8X8_PROGMEM = {0xf8,0xff,0x00,0x06,0x00,0x01,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x07,0x00,0x03,0xfe,0xff,0x01,0xfc,0xff,0x00};
class Display{
private:
float timer1;
float timeout1;
bool timerbit1;
public:
Display(){
timer1 = 0;
timeout1 = 5000;
timerbit1 = false;
}
void showBootScreen(){
uint8_t progressbar = 0;
for(int i = 0; i < 21; i++){
progressbar = progressbar + 5;
front.clearBuffer();
front.setBitmapMode(1);
front.drawFrame(3, 2, 122, 60);
front.drawXBMP( 48, 13, 29, 14, image_FaceConfused_29x14_bits);
front.drawFrame(9, 48, 110, 10);
front.drawBox(11, 50, progressbar, 6);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(10, 44, "LADE...");
front.sendBuffer();
}
}
void showCarPositioningScreen(int distance){
front.clearBuffer();
front.setBitmapMode(1);
front.drawXBMP(distance, 17, 72, 73, image_car);
if(distance <= 40){
front.setBitmapMode(1);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(4, 15, "ANFAHREN!");
front.drawXBMP(distance + 70, 44, 9, 7, image_Pin_arrow_right_9x7_bits);
timerbit1 = false;
timer1 = millis();
}else if(distance <= 50){
front.setBitmapMode(1);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(4, 15, "IN POSITION!");
front.drawXBMP( 16, 37, 18, 18, image_Smile_18x18_bits);
timerbit1 = true;
if(millis() > timer1 + timeout1 && timerbit1 == true){
timer1 = millis();
}
}else{
front.setBitmapMode(1);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(4, 15, "ZURUECK!");
front.drawXBMP(distance - 4, 44, 9, 7, image_Pin_arrow_left_9x7_bits);
timerbit1 = false;
timer1 = millis();
}
front.sendBuffer();
}
void showLeaveScreen(){
float progressbar = 106;
for(int i = 0; i < 106; i++){
progressbar = progressbar - 1;
front.clearBuffer();
front.setBitmapMode(1);
front.drawFrame(3, 3, 122, 58);
front.drawFrame(9, 48, 110, 10);
front.drawXBMP( 98, 22, 10, 8, image_Pin_back_arrow_10x8_bits);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(25, 31, "VERLASSEN");
front.drawBox(11, 50, progressbar, 6);
front.sendBuffer();
}
}
void showChooseScreen(){
front.clearBuffer();
front.setBitmapMode(1);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(13, 13, "PROGRAMM WAHL");
front.drawXBMP( 87, 22, 18, 21, image_EviSmile1_18x21_bits);
front.drawXBMP( 16, 26, 18, 18, image_Smile_18x18_bits);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(13, 57, "PRG1");
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(84, 56, "PRG2");
front.sendBuffer();
}
void showProgram1Screen(){
front.clearBuffer();
front.setBitmapMode(1);
front.drawFrame(2, 3, 124, 59);
front.setFont(u8g2_font_profont22_tr);
front.drawStr(17, 22, "PROGRAMM");
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(63, 39, "1");
front.setFont(u8g2_font_haxrcorp4089_tr);
front.drawStr(44, 55, "im gange.");
front.drawXBMP( 56, 26, 18, 18, image_Button_18x18_bits);
front.sendBuffer();
// delay(2000);
}
void showProgramm2Screen(){
front.clearBuffer();
front.setBitmapMode(1);
front.drawFrame(2, 3, 124, 59);
front.setFont(u8g2_font_profont22_tr);
front.drawStr(17, 22, "PROGRAMM");
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(63, 39, "2");
front.setFont(u8g2_font_haxrcorp4089_tr);
front.drawStr(44, 55, "im gange.");
front.drawXBMP( 56, 26, 18, 18, image_Button_18x18_bits);
front.sendBuffer();
// delay(2000);
}
void showDriveOutScreen(int distance){
front.clearBuffer();
front.setBitmapMode(1);
front.drawXBMP(distance, 17, 72, 73, image_car);
if(distance >= -60){
front.setBitmapMode(1);
front.setFont(u8g2_font_helvB08_tr);
front.drawStr(4, 15, "ZURUECK!");
front.drawXBMP(distance - 4, 44, 9, 7, image_Pin_arrow_left_9x7_bits);
}
front.sendBuffer();
}
};
Display display;
void setup() {
Serial.begin(9600);
front.setI2CAddress(0x3C * 2);
front.begin();
display.showBootScreen();
pinMode(analogtest, INPUT); //Löschen
}
void loop() {
distanz = map(analogRead(analogtest), 0, 1023, -70, 60);
display.showCarPositioningScreen(distanz);
//switch(casenum){
// case 0: sensecar(distanz); break;
// case 1: leave(); break;
// case 3: chooseprgm(); break;
// case 4: prgm1(); break;
// case 5: prgm2(); break;
// case 6: driveout(distanz); break;
//}
}