#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
#define RESET_BUTTON 5
U8G2_SSD1309_128X64_NONAME0_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);
// 'resettingCounter', 128x64px
const unsigned char epd_bitmap_resettingCounter [] 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,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff,
0xff, 0x03, 0x7c, 0x38, 0xcf, 0x78, 0x1c, 0x03, 0x20, 0x00, 0xc6, 0xf1, 0xe7, 0xe3, 0xf8, 0xff,
0xff, 0xe7, 0xf8, 0xfc, 0xe7, 0x7b, 0x7e, 0x3b, 0xaf, 0xe3, 0xce, 0xe3, 0xef, 0xf9, 0xfb, 0xff,
0xff, 0xe7, 0xf9, 0xfc, 0xe7, 0x7b, 0xfe, 0x3f, 0xff, 0xf7, 0xcf, 0xc7, 0xef, 0xf9, 0xfb, 0xff,
0xff, 0xe7, 0xf9, 0xfc, 0xc7, 0x7f, 0xfe, 0x3f, 0xff, 0xe7, 0xcf, 0x87, 0xef, 0xfc, 0xff, 0xff,
0xff, 0xe7, 0xf8, 0xfc, 0x8f, 0x7f, 0xfe, 0x3f, 0xff, 0xf7, 0xcf, 0x1f, 0xef, 0xfc, 0xff, 0xff,
0xff, 0x67, 0xfc, 0x9c, 0x0f, 0x7e, 0x9c, 0x3f, 0xff, 0xf3, 0xcf, 0x37, 0x6f, 0xfc, 0xff, 0xff,
0xff, 0x07, 0xff, 0x9c, 0x3f, 0x7c, 0x9c, 0x3f, 0xff, 0xf3, 0xcf, 0x77, 0x6e, 0xfc, 0xf1, 0xff,
0xff, 0x27, 0xfe, 0xfc, 0xff, 0x78, 0xfe, 0x3f, 0xff, 0xf7, 0xcf, 0x77, 0x6c, 0xfc, 0xf9, 0xff,
0xff, 0x67, 0xfe, 0xfc, 0xff, 0x71, 0xfe, 0x3f, 0xff, 0xf3, 0xcf, 0xff, 0xe0, 0xfc, 0xf9, 0xff,
0xff, 0xe7, 0xfc, 0xfc, 0xf7, 0x73, 0xfe, 0x3f, 0xff, 0xf3, 0xcf, 0xf7, 0xe1, 0xfc, 0xf9, 0xff,
0xff, 0xe7, 0xf9, 0xfc, 0xf6, 0x73, 0xfe, 0x3f, 0xff, 0xe3, 0xcf, 0xf7, 0xe3, 0xf9, 0xf9, 0xff,
0xff, 0xe3, 0xf1, 0xfc, 0xe6, 0x7b, 0x7e, 0x3f, 0xff, 0xe3, 0xcf, 0xf3, 0xe7, 0xf1, 0xf9, 0xff,
0xff, 0xe3, 0x63, 0x00, 0x07, 0x3c, 0x00, 0x3f, 0xfe, 0xe3, 0x87, 0xf3, 0xff, 0x07, 0xfc, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xf8, 0xfc, 0xf1, 0xe7, 0xf8, 0x7c, 0x3c, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xce, 0xfb, 0xfc, 0xe7, 0xef, 0xf9, 0x7e, 0x3c, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xdf, 0xff, 0xf8, 0xc7, 0xef, 0x79, 0xff, 0x3c, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xcf, 0x7f, 0xf9, 0x87, 0xef, 0xb9, 0xff, 0x3e, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xcf, 0x7f, 0xf9, 0x17, 0xef, 0xd9, 0xff, 0x3e, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xdf, 0xbf, 0xf3, 0x37, 0xee, 0xe1, 0xff, 0x7e, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xdf, 0xbf, 0xf3, 0x77, 0xee, 0xc1, 0xff, 0x7e, 0xdf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xdf, 0x9f, 0xe3, 0xf7, 0xec, 0x89, 0xff, 0x7e, 0xdf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xcf, 0x1f, 0xe0, 0xf7, 0xe8, 0x19, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xcf, 0xdf, 0xc7, 0xf7, 0xe1, 0x39, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xcf, 0xef, 0xcf, 0xf7, 0xe3, 0x79, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x8f, 0xef, 0x8f, 0xf7, 0xe7, 0xf9, 0xf8, 0x3e, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x8f, 0xe7, 0x8f, 0xf3, 0xef, 0xf0, 0xe0, 0x3e, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int epd_bitmap_allArray_LEN = 1;
const unsigned char* epd_bitmap_allArray[1] = {
epd_bitmap_resettingCounter
};
//initialize counter
int counter = 0;
//initialize progress
int progress = 0;
void setup() {
Serial.begin(9600);
pinMode(RESET_BUTTON, INPUT_PULLUP);
oled.begin();
oled.setFont(u8g2_font_7x14_mf);
}
void loop() {
static long startTime = 0;
long currentTime;
buttonPress();
// Get current time
currentTime = millis();
// Checks 1 second passed
if ((currentTime - startTime) > 1000) {
increase();
startTime = currentTime;
//Serial.println(counter);
}
oled.firstPage();
do {
oled.clearBuffer();
//rectangle around the screen
oled.drawFrame(0,0,128,64);
// solid vertical bar
//oled.drawBox(10, 15, 10, progress);
//vertical rectangle
oled.drawFrame(3, 3, 15, 58);
//draw line between the vertical frame
oled.drawLine(4,progress,15,progress);
/*oled.drawLine(4,5,15,5);
oled.drawLine(4,6,15,6);
oled.drawLine(4,7,15,7);*/
oled.drawStr(30,20,"COUNTER: ");
oled.setCursor(100,20);
oled.print(counter);
oled.sendBuffer();
} while ( oled.nextPage() );
if (progress < 50) {
progress++;
} else {
progress = 0;
}
}
void increase() {
counter++;
//delay(1000);
}
//RESET button
int lastState = HIGH;
void buttonPress(){
int buttonState = digitalRead(RESET_BUTTON);
if(lastState != buttonState){
lastState = buttonState;
if (buttonState == LOW) {
Serial.println("Button is pressed");
resetMessage();
counter = 0;
}
if (buttonState == HIGH){
Serial.println("Button is not pressed");
}
}
}
void resetMessage(){
//Display "RESET" message
oled.firstPage();
do {
oled.clearBuffer();
oled.drawXBMP(0, 0, 128, 64, epd_bitmap_resettingCounter);
oled.sendBuffer();
} while ( oled.nextPage() );
delay(2000);
}