Components and supplies
JustPi - Connection cables 65x
Breadboard (generic)
Arduino UNO
Tact Switch 6x6mm/4,3mm DIP 5x
Waveshare 9709 - DS1302 RTC clock
128x64 OLED I2C display
Apps and platforms
Arduino IDE
Project description
Code
Example code - EN
h
Import it to your Arduino.
1#include <Wire.h> 2#include <virtuabotixRTC.h> 3#include <Adafruit_GFX.h> 4#include <Adafruit_SH1106.h> 5 6virtuabotixRTC clock(3, 4, 2); 7Adafruit_SH1106 display(-1); 8int state = 1; 9 10void setup() { 11 pinMode(5, INPUT_PULLUP); 12 display.begin(SH1106_SWITCHCAPVCC, 0x3C); 13 display.setTextColor(WHITE); 14 drawUI(); 15 display.display(); 16} 17 18void loop() { 19 if (digitalRead(5) == LOW) { 20 if (state == 0) { 21 delay(500); 22 drawUI(); 23 state = 1; 24 }else{ 25 delay(500); 26 display.drawRect(4, 7, 120, 50, WHITE); 27 display.fillRect(5, 8, 118, 48, BLACK); 28 display.setTextSize(1); 29 display.setCursor(6, 12); 30 display.println("Clock will turn"); 31 display.println(" off in a moment."); 32 display.println(""); 33 display.println(" To turn back on,"); 34 display.println(" press the button."); 35 display.display(); 36 delay(3000); 37 display.clearDisplay(); 38 display.display(); 39 state = 0; 40 } 41 } 42 43 if (state == 1) { 44 clock.updateTime(); 45 drawUI(); 46 display.setTextColor(WHITE); 47 display.setTextSize(3); 48 display.setCursor(1, 19); 49 if (clock.hours < 10) { 50 display.print("0"); 51 } 52 display.print(clock.hours); 53 display.print(":"); 54 if (clock.minutes < 10) { 55 display.print("0"); 56 } 57 display.print(clock.minutes); 58 display.setTextSize(2); 59 display.print(":"); 60 if (clock.seconds < 10) { 61 display.print("0"); 62 } 63 display.print(clock.seconds); 64 display.setTextSize(1); 65 display.setCursor(26, 48); 66 if (clock.dayofweek == 1) { 67 display.print("Monday,"); 68 } 69 if (clock.dayofweek == 2) { 70 display.print("Tuesday,"); 71 } 72 if (clock.dayofweek == 3) { 73 display.print("Wednesday,"); 74 } 75 if (clock.dayofweek == 4) { 76 display.print("Thursday,"); 77 } 78 if (clock.dayofweek == 5) { 79 display.print("Friday,"); 80 } 81 if (clock.dayofweek == 6) { 82 display.print("Saturday,"); 83 } 84 if (clock.dayofweek == 7) { 85 display.print("Sunday,"); 86 } 87 display.setCursor(26, 56); 88 if (clock.dayofmonth < 10) { 89 display.print("0"); 90 } 91 display.print(clock.dayofmonth); 92 display.print("."); 93 if (clock.month < 10) { 94 display.print("0"); 95 } 96 display.print(clock.month); 97 display.print("."); 98 display.print(clock.year); 99 display.display(); 100 delay(999); 101 } 102} 103 104void drawUI() { 105 display.clearDisplay(); 106 display.setTextSize(1); 107 display.setCursor(2, 2); 108 display.println(" Adam's Clock Sleep"); 109 display.drawLine(0, 11, 128, 11, WHITE); 110 display.drawLine(94, 0, 94, 10, WHITE); 111 display.drawLine(26, 44, 102, 44, WHITE); 112} 113
Example code - EN
h
Import it to your Arduino.
1#include <Wire.h> 2#include <virtuabotixRTC.h> 3#include <Adafruit_GFX.h> 4#include 5 <Adafruit_SH1106.h> 6 7virtuabotixRTC clock(3, 4, 2); 8Adafruit_SH1106 display(-1); 9int 10 state = 1; 11 12void setup() { 13 pinMode(5, INPUT_PULLUP); 14 display.begin(SH1106_SWITCHCAPVCC, 15 0x3C); 16 display.setTextColor(WHITE); 17 drawUI(); 18 display.display(); 19} 20 21void 22 loop() { 23 if (digitalRead(5) == LOW) { 24 if (state == 0) { 25 delay(500); 26 27 drawUI(); 28 state = 1; 29 }else{ 30 delay(500); 31 display.drawRect(4, 32 7, 120, 50, WHITE); 33 display.fillRect(5, 8, 118, 48, BLACK); 34 display.setTextSize(1); 35 36 display.setCursor(6, 12); 37 display.println("Clock will turn"); 38 39 display.println(" off in a moment."); 40 display.println(""); 41 42 display.println(" To turn back on,"); 43 display.println(" press 44 the button."); 45 display.display(); 46 delay(3000); 47 display.clearDisplay(); 48 49 display.display(); 50 state = 0; 51 } 52 } 53 54 if (state 55 == 1) { 56 clock.updateTime(); 57 drawUI(); 58 display.setTextColor(WHITE); 59 60 display.setTextSize(3); 61 display.setCursor(1, 19); 62 if (clock.hours 63 < 10) { 64 display.print("0"); 65 } 66 display.print(clock.hours); 67 68 display.print(":"); 69 if (clock.minutes < 10) { 70 display.print("0"); 71 72 } 73 display.print(clock.minutes); 74 display.setTextSize(2); 75 display.print(":"); 76 77 if (clock.seconds < 10) { 78 display.print("0"); 79 } 80 display.print(clock.seconds); 81 82 display.setTextSize(1); 83 display.setCursor(26, 48); 84 if (clock.dayofweek 85 == 1) { 86 display.print("Monday,"); 87 } 88 if (clock.dayofweek 89 == 2) { 90 display.print("Tuesday,"); 91 } 92 if (clock.dayofweek 93 == 3) { 94 display.print("Wednesday,"); 95 } 96 if (clock.dayofweek 97 == 4) { 98 display.print("Thursday,"); 99 } 100 if (clock.dayofweek 101 == 5) { 102 display.print("Friday,"); 103 } 104 if (clock.dayofweek 105 == 6) { 106 display.print("Saturday,"); 107 } 108 if (clock.dayofweek 109 == 7) { 110 display.print("Sunday,"); 111 } 112 display.setCursor(26, 113 56); 114 if (clock.dayofmonth < 10) { 115 display.print("0"); 116 } 117 118 display.print(clock.dayofmonth); 119 display.print("."); 120 if (clock.month 121 < 10) { 122 display.print("0"); 123 } 124 display.print(clock.month); 125 126 display.print("."); 127 display.print(clock.year); 128 display.display(); 129 130 delay(999); 131 } 132} 133 134void drawUI() { 135 display.clearDisplay(); 136 137 display.setTextSize(1); 138 display.setCursor(2, 2); 139 display.println(" 140 Adam's Clock Sleep"); 141 display.drawLine(0, 11, 128, 11, WHITE); 142 display.drawLine(94, 143 0, 94, 10, WHITE); 144 display.drawLine(26, 44, 102, 44, WHITE); 145} 146
Example code for the Polish
h
Zainstaluj se na Arduino.
1#include <Wire.h> 2#include <virtuabotixRTC.h> 3#include <Adafruit_GFX.h> 4#include <Adafruit_SH1106.h> 5 6virtuabotixRTC clock(3, 4, 2); 7Adafruit_SH1106 display(-1); 8int state = 1; 9 10void setup() { 11 pinMode(5, INPUT_PULLUP); 12 display.begin(SH1106_SWITCHCAPVCC, 0x3C); 13 display.setTextColor(WHITE); 14 drawUI(); 15 display.display(); 16} 17 18void loop() { 19 if (digitalRead(5) == LOW) { 20 if (state == 0) { 21 delay(500); 22 drawUI(); 23 state = 1; 24 }else{ 25 delay(500); 26 display.drawRect(4, 7, 120, 50, WHITE); 27 display.fillRect(5, 8, 118, 48, BLACK); 28 display.setTextSize(1); 29 display.setCursor(6, 12); 30 display.println("Zegarek przechodzi"); 31 display.println(" w tryb uspienia."); 32 display.println(""); 33 display.println(" Aby przywrocic,"); 34 display.println(" nacisnij przycisk."); 35 display.display(); 36 delay(3000); 37 display.clearDisplay(); 38 display.display(); 39 state = 0; 40 } 41 } 42 43 if (state == 1) { 44 clock.updateTime(); 45 drawUI(); 46 display.setTextColor(WHITE); 47 display.setTextSize(3); 48 display.setCursor(1, 19); 49 if (clock.hours < 10) { 50 display.print("0"); 51 } 52 display.print(clock.hours); 53 display.print(":"); 54 if (clock.minutes < 10) { 55 display.print("0"); 56 } 57 display.print(clock.minutes); 58 display.setTextSize(2); 59 display.print(":"); 60 if (clock.seconds < 10) { 61 display.print("0"); 62 } 63 display.print(clock.seconds); 64 display.setTextSize(1); 65 display.setCursor(26, 48); 66 if (clock.dayofweek == 1) { 67 display.print("Poniedzialek,"); 68 } 69 if (clock.dayofweek == 2) { 70 display.print("Wtorek,"); 71 } 72 if (clock.dayofweek == 3) { 73 display.print("Sroda,"); 74 } 75 if (clock.dayofweek == 4) { 76 display.print("Czwartek,"); 77 } 78 if (clock.dayofweek == 5) { 79 display.print("Piatek,"); 80 } 81 if (clock.dayofweek == 6) { 82 display.print("Sobota,"); 83 } 84 if (clock.dayofweek == 7) { 85 display.print("Niedziela,"); 86 } 87 display.setCursor(26, 56); 88 if (clock.dayofmonth < 10) { 89 display.print("0"); 90 } 91 display.print(clock.dayofmonth); 92 display.print("."); 93 if (clock.month < 10) { 94 display.print("0"); 95 } 96 display.print(clock.month); 97 display.print("."); 98 display.print(clock.year); 99 display.display(); 100 delay(999); 101 } 102} 103 104void drawUI() { 105 display.clearDisplay(); 106 display.setTextSize(1); 107 display.setCursor(2, 2); 108 display.println(" Zegarek Adama Uspij"); 109 display.drawLine(0, 11, 128, 11, WHITE); 110 display.drawLine(94, 0, 94, 10, WHITE); 111 display.drawLine(26, 44, 102, 44, WHITE); 112} 113
Downloadable files
Pinout
Pinout
Pinout
Pinout
Pinout
Pinout
Comments
Only logged in users can leave comments