#include <GyverOLED.h>
#include <EncButton.h>
#define EB_DEB_TIME 50
Button btn1(5);
Button btn2(4);
GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
void setup() {
oled.init();
oled.setContrast(100);
}
void loop () {
btn1.tick();
btn2.tick();
oled.clear();
static uint8_t hours = 9;
static uint8_t minutes = 1;
static uint8_t h0;
static uint8_t h1;
static uint8_t m0;
static uint8_t m1;
if (hours < 10) h0 = 0;
else h0 = hours / 10;
h1 = hours % 10;
if (minutes < 10) m0 = 0;
else m0 = minutes / 10;
m1 = minutes % 10;
if (btn1.click() or btn1.holding()) {
if (hours == 23) hours = 0;
else hours += 1;
}
if (btn2.click() or btn2.holding()) {
if (minutes == 59) minutes = 0;
else minutes += 1;
}
switch (h0) {
case 0: zero(0); break;
case 1: one(0); break;
case 2: two(0); break;
case 3: three(0); break;
case 4: four(0); break;
case 5: five(0); break;
case 6: six(0); break;
case 7: seven(0); break;
case 8: eight(0); break;
case 9: nine(0); break;
}
switch (h1) {
case 0: zero(1); break;
case 1: one(1); break;
case 2: two(1); break;
case 3: three(1); break;
case 4: four(1); break;
case 5: five(1); break;
case 6: six(1); break;
case 7: seven(1); break;
case 8: eight(1); break;
case 9: nine(1); break;
}
switch (m0) {
case 0: zero(2); break;
case 1: one(2); break;
case 2: two(2); break;
case 3: three(2); break;
case 4: four(2); break;
case 5: five(2); break;
case 6: six(2); break;
case 7: seven(2); break;
case 8: eight(2); break;
case 9: nine(2); break;
}
switch (m1) {
case 0: zero(3); break;
case 1: one(3); break;
case 2: two(3); break;
case 3: three(3); break;
case 4: four(3); break;
case 5: five(3); break;
case 6: six(3); break;
case 7: seven(3); break;
case 8: eight(3); break;
case 9: nine(3); break;
}
oled.roundRect(62, 10, 65, 13, OLED_FILL);
oled.roundRect(62, 35, 65, 38, OLED_FILL);
oled.setScale(1);
oled.setCursorXY(0, 56);
oled.print("ПН 12.03.2023");
oled.rect(85, 56, 127, 62, OLED_STROKE);
oled.rect(86, 57, 110, 61, OLED_FILL);
oled.update();
}
void createRect(byte x, byte y, byte n) {
byte shift;
if (n == 2 or n == 3) shift = 6;
else shift = 0;
oled.rect(n * 32 + shift + (x * 9), 0 + (y * 10), n * 32 + shift + 7 + (x * 9), 0 + 8 + (y * 10), OLED_FILL);
}
void zero(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(2, 2, razr);
createRect(0, 3, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void one(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(1, 1, razr);
createRect(1, 2, razr);
createRect(1, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void two(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(0, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void three(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void four(byte razr) {
createRect(0, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(2, 3, razr);
createRect(2, 4, razr);
}
void five(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void six(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(0, 3, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void seven(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(2, 1, razr);
createRect(2, 2, razr);
createRect(2, 3, razr);
createRect(2, 4, razr);
}
void eight(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(0, 3, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}
void nine(byte razr) {
createRect(0, 0, razr);
createRect(1, 0, razr);
createRect(2, 0, razr);
createRect(0, 1, razr);
createRect(2, 1, razr);
createRect(0, 2, razr);
createRect(1, 2, razr);
createRect(2, 2, razr);
createRect(2, 3, razr);
createRect(0, 4, razr);
createRect(1, 4, razr);
createRect(2, 4, razr);
}