#include <U8g2lib.h>
#include <Wire.h> // library requires for IIC communication
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // initialization for the used OLED display
String LEDStatus="OFF";
int RV;
int i;
int C=0;
int D=0;
//int dt=5000;
int LEDPin=33;
int BUZPin=26;
int buttonpin=19;
int TIME=60;//Time in Secons x 10
int cntr1=0;
void setup() {
// put your setup code here, to run once:
u8g2.begin(); // start the u8g2 library
Serial.begin(9600);
pinMode(BUZPin, OUTPUT);
pinMode(buttonpin, INPUT);
pinMode(LEDPin, OUTPUT);
//lcd.setCursor(0,0);
// lcd.print ("Welcome Onboard");
// delay(1000);
// lcd.setCursor(3,1);
// lcd.print ("DTE-57055");
// delay(4000);
//lcd.clear();
/* lcd.setCursor(0,0);
lcd.print ("Commissioned On");
delay(1000);
lcd.setCursor(3,1);
lcd.print ("01-03-2022");
delay(4000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print (" Starting");
delay(1000);
lcd.setCursor(0,1);
lcd.print ("DRIVER VIGILANCE");
delay(4000);
*/
}
void loop()
{
// put your main code here, to run repeatedly:
RV=digitalRead(buttonpin);
Serial.println (RV);
if(RV==1){
D=0;
C=C+1 ;
Serial.print ("C=");
Serial.println (C/4.5);
cntr1= (60-C/4.5);
Serial.println (cntr1);
if (cntr1 >= 0)
{ mainscreen();
}
/* lcd.setCursor(0,0);
lcd.clear();
lcd.print ("Alarm in ");
lcd.setCursor(9,0);
lcd.print (60-C/10);
lcd.setCursor(12,0);
lcd.print ("Sec");*/
if (C>TIME)
{
press();
/*lcd.setCursor(0,0);
lcd.clear();
lcd.print("BUZZER ON");
lcd.setCursor(0,1);
lcd.print ("Press Pedal"); */
digitalWrite(BUZPin, HIGH);
blinkled();
}
else {digitalWrite(BUZPin, LOW);}
delay(100);
}
else
{
C=0;
D=D+1;
Serial.print ("D=");
Serial.println (D);
/* lcd.setCursor(0,0);
lcd.clear();
lcd.print ("Release in");
lcd.setCursor(11,0);
lcd.print (15-D/10);
lcd.setCursor(13,0);
lcd.print ("sec");*/
if(D>TIME/4)
{
/*lcd.setCursor(0,0);
lcd.clear();
lcd.print ("BUZZER ON");
lcd.setCursor(0,1);
lcd.print ("Release Pedal"); */
digitalWrite(BUZPin, HIGH);
blinkled();
}
else {
digitalWrite(BUZPin, LOW);
delay(100);
}
}
}
void mainscreen() {
static const unsigned char image_Alert_9x8_bits[] U8X8_PROGMEM = {0x10,0x00,0x38,0x00,0x28,0x00,0x6c,0x00,0x6c,0x00,0xfe,0x00,0xee,0x00,0xff,0x01};
static const unsigned char image_logo_small_bits[] U8X8_PROGMEM = {0x00,0x00,0xc0,0x01,0x30,0x02,0x00,0x04,0x00,0x04,0xf0,0x07,0xd0,0x05,0xf0,0x03,0x00,0x00,0x10,0x00,0x00,0x04,0xf8,0x13};
static const unsigned char image_alrm_icon_small_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xc0,0x03,0xe0,0x07,0xe1,0x07,0xe1,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00};
char timer[10];
u8g2.clearBuffer(); // clear the internal memory
u8g2.setBitmapMode(1);
u8g2.setFontMode(1);
u8g2.drawLine(0, 18, 128, 18);
u8g2.drawFrame(14, 35, 64, 14);
u8g2.drawBox(16, 37, cntr1, 10);
u8g2.setFont(u8g2_font_profont22_tr);
sprintf(timer, "%d", cntr1 );
u8g2.drawStr(92, 41, timer);
u8g2.drawXBMP( 14, 25, 9, 8, image_Alert_9x8_bits);
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(26, 33, "Alarm in");
u8g2.setFont(u8g2_font_5x8_tr);
u8g2.drawStr(88, 50, "Seconds");
u8g2.setFont(u8g2_font_5x8_tr);
u8g2.drawStr(12, 60, "Press Pedal to Reset");
u8g2.setFont(u8g2_font_profont22_tr);
u8g2.drawStr(32, 16, "TMDVS");
u8g2.drawXBMP( 107, 1, 13, 12, image_logo_small_bits);
u8g2.drawPixel(111, 4);
u8g2.drawPixel(111, 5);
u8g2.drawPixel(117, 3);
u8g2.drawPixel(117, 8);
u8g2.drawPixel(111, 11);
u8g2.drawPixel(117, 10);
u8g2.drawPixel(117, 12);
u8g2.drawPixel(118, 12);
u8g2.drawCircle(114, 8, 8);
u8g2.drawPixel(109, 12);
u8g2.drawXBMP( 6, 2, 15, 15, image_alrm_icon_small_bits);
u8g2.drawLine(3, 5, 4, 4);
u8g2.drawLine(3, 12, 4, 13);
u8g2.drawLine(6, 7, 6, 10);
u8g2.drawLine(6, 7, 7, 6);
u8g2.drawPixel(7, 11);
u8g2.drawLine(21, 7, 21, 10);
u8g2.drawLine(2, 6, 2, 11);
u8g2.drawPixel(20, 6);
u8g2.drawPixel(20, 11);
u8g2.drawLine(25, 6, 25, 11);
u8g2.drawLine(24, 5, 23, 4);
u8g2.drawLine(24, 12, 23, 13);
u8g2.drawLine(13, 14, 14, 14);
u8g2.drawPixel(14, 5);
//put your main code here, to run repeatedly:
//delay(1000); // this speeds up the simulation
u8g2.sendBuffer(); // transfer internal memory to the display
}
void press() {
static const unsigned char image_logo_small_bits[] U8X8_PROGMEM = {0x00,0x00,0xc0,0x01,0x30,0x02,0x00,0x04,0x00,0x04,0xf0,0x07,0xd0,0x05,0xf0,0x03,0x00,0x00,0x10,0x00,0x00,0x04,0xf8,0x13};
static const unsigned char image_alrm_icon_small_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xc0,0x03,0xe0,0x07,0xe1,0x07,0xe1,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00};
static const unsigned char image_pedal_icon_bits[] U8X8_PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0xf8,0x07,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0xf8,0x1f,0x00,0x00,0x00,0xe0,0x0f,0x00,0x03,0x00,0x8c,0x0f,0x80,0x3f,0x00,0x13,0x07,0x80,0x7f,0x28,0x67,0x04,0x00,0xff,0xff,0x9f,0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0xf8,0xff,0x7f,0x00,0x80,0xf1,0xff,0x7f,0x00,0x00,0xc3,0xff,0x3f,0x00,0x00,0x0c,0xff,0x3f,0x00,0x00,0x38,0xf8,0x3f,0x00,0x00,0x63,0xf0,0x1f,0x00,0x80,0xc3,0xe0,0x1f,0x00,0x80,0x01,0xc0,0x0f,0x00,0xc0,0x00,0x80,0x07,0x00,0xe0,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00};
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};
u8g2.clearBuffer(); // clear the internal memory
u8g2.setBitmapMode(1);
u8g2.setFontMode(1);
u8g2.drawLine(0, 18, 128, 18);
u8g2.setFont(u8g2_font_profont22_tr);
u8g2.drawStr(32, 16, "TMDVS");
u8g2.drawXBMP( 107, 1, 13, 12, image_logo_small_bits);
u8g2.drawPixel(111, 4);
u8g2.drawPixel(111, 5);
u8g2.drawPixel(117, 3);
u8g2.drawPixel(117, 8);
u8g2.drawPixel(111, 11);
u8g2.drawPixel(117, 10);
u8g2.drawPixel(117, 12);
u8g2.drawPixel(118, 12);
u8g2.drawCircle(114, 8, 8);
u8g2.drawPixel(109, 12);
u8g2.drawXBMP( 6, 2, 15, 15, image_alrm_icon_small_bits);
u8g2.drawLine(3, 5, 4, 4);
u8g2.drawLine(3, 12, 4, 13);
u8g2.drawLine(6, 7, 6, 10);
u8g2.drawLine(6, 7, 7, 6);
u8g2.drawPixel(7, 11);
u8g2.drawLine(21, 7, 21, 10);
u8g2.drawLine(2, 6, 2, 11);
u8g2.drawPixel(20, 6);
u8g2.drawXBMP( 87, 34, 38, 28, image_pedal_icon_bits);
u8g2.drawPixel(20, 11);
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(13, 59, "Press Pedal");
u8g2.drawLine(25, 6, 25, 11);
u8g2.drawXBMP( 4, 26, 29, 14, image_FaceConfused_29x14_bits);
u8g2.drawLine(24, 5, 23, 4);
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(37, 38, "Alarm ON !!!");
u8g2.drawLine(24, 12, 23, 13);
u8g2.drawLine(13, 14, 14, 14);
u8g2.drawPixel(14, 5);
//put your main code here, to run repeatedly:
//delay(1000); // this speeds up the simulation
u8g2.sendBuffer(); // transfer internal memory to the display
}
void blinkled()
{
if (LEDStatus=="ON"){
digitalWrite(LEDPin,LOW);
LEDStatus="OFF";
return;
}
if (LEDStatus=="OFF"){
digitalWrite(LEDPin,HIGH);
LEDStatus="ON";
return;
}
}