Components and supplies
DS1302 RTC
Speaker: 3W, 4 ohms
Nokia 5110 LCD
Arduino Nano
DFPlayer - A Mini MP3 Player
Apps and platforms
Arduino IDE
Project description
Code
Digital Clock face with nightly cuckoo sounds
arduino
Use this code for digital display with cuckoo sounds. Program using Arduino IDE
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include <Ds1302.h> 6#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library 7#include <LowPower.h> 8 9SoftwareSerial mySoftwareSerial(3, 2); // RX, TX 10DFRobotDFPlayerMini myDFPlayer; 11 12// DS1302 RTC instance 13Ds1302 rtc(6,4,5); // 14// Nokia 5110 LCD module connections CLK, DIN, D/C, CS, RST (opposite to the actual pin positions !!) 15Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); 16const static char* WeekDays[] = 17{ 18 " Mon ", 19 " Tues ", 20 " Wed ", 21 " Thurs ", 22 " Fri ", 23 " Sat ", 24 " Sun " 25}; 26 const static char* Months[] = 27 { 28 "Jan ", 29 "Feb ", 30 "Mar ", 31 "Apr ", 32 "May ", 33 "Jun ", 34 "Jul ", 35 "Aug ", 36 "Sep ", 37 "Oct ", 38 "Nov ", 39 "Dec " 40 }; 41 static uint8_t last_second = 0; 42 int hour2; 43void setup() { 44 // Serial.begin(115200); 45 display.begin(); // initialise the Nokia display 46 display.clearDisplay(); // clears the screen and buffer 47 display.setContrast(50); 48 49 mySoftwareSerial.begin(9600); 50 myDFPlayer.begin(mySoftwareSerial); 51 myDFPlayer.volume(15); 52 rtc.init(); // initialize the RTC 53 54 display.drawRect(0, 0, 84, 30, BLACK); 55 display.drawRect(0, 29, 84, 12, BLACK); 56 57} 58 59 60void loop() 61{ 62 63 // get the current time 64 Ds1302::DateTime now; 65 rtc.getDateTime(&now); 66 67 if (last_second != now.second) 68 { 69// Serial.println(hour2); 70 if ((now.minute == 59) && (now.second == 40)) { 71 hour2 = now.hour; 72 hour2++; 73// Serial.println("Go to chime"); 74 chime(); 75 } 76 last_second = now.second; 77 78 display.setTextColor(BLACK); 79 display.setTextSize(2); 80 display.setCursor(6,10); 81 if (now.hour <= 9) { //If Hour is single figures, put a 0 in front 82 display.print("0"); 83 } 84 display.print(now.hour); 85 display.print(":"); 86 if (now.minute <= 9) { //If Minute is single figures, put a 0 in front 87 display.print("0"); 88 } 89 display.print(now.minute); 90 // display.print(":"); 91 display.setTextSize(1); 92 if (now.second <= 9) { //If Seconds is single figures, put a 0 in front 93 display.print("0"); 94 } 95 display.print(now.second); 96 97 98 display.setCursor(0,31); 99 display.print(WeekDays[now.dow -1]); 100 display.print(now.day); 101 display.print(" "); 102 display.print(Months[now.month -1]); 103 104 display.display(); 105 106 107 display.setTextColor(WHITE); 108 display.setCursor(0,31); 109 display.print(WeekDays[now.dow -1]); 110 display.print(now.day); 111 display.print(" "); 112 display.print(Months[now.month -1]); 113 114 115 116 display.setTextSize(2); 117 display.setCursor(6,10); 118 if (now.hour <= 9) { 119 display.print("0"); 120 } 121 display.print(now.hour); 122 display.print(":"); 123 if (now.minute <= 9) { 124 display.print("0"); 125 } 126 display.print(now.minute); 127 // display.print(":"); 128 display.setTextSize(1); 129 if (now.second <= 9) { 130 display.print("0"); 131 } 132 display.print(now.second); 133 134// No need to display the screen again 135 136 } 137 // delay(100); 138 LowPower.powerDown(SLEEP_250MS,ADC_OFF,BOD_OFF); 139} 140 141// Chime Routine 6am - 9pm = Westminster Chime 142// 10pm - 5am = Cuckoo 143 144void chime() { 145 switch (hour2) { 146 147 case 6: 148 myDFPlayer.play(6); 149 break; 150 case 7: 151 myDFPlayer.play(7); 152 break; 153 case 8: 154 myDFPlayer.play(8); 155 break; 156 case 9: 157 myDFPlayer.play(9); 158 break; 159 case 10: 160 myDFPlayer.play(10); 161 break; 162 case 11: 163 myDFPlayer.play(11); 164 break; 165 case 12: 166 myDFPlayer.play(12); 167 break; 168 case 13: 169 myDFPlayer.play(1); 170 break; 171 case 14: 172 myDFPlayer.play(2); 173 break; 174 case 15: 175 myDFPlayer.play(3); 176 break; 177 case 16: 178 myDFPlayer.play(4); 179 break; 180 case 17: 181 myDFPlayer.play(5); 182 break; 183 case 18: 184 myDFPlayer.play(6); 185 break; 186 case 19: 187 myDFPlayer.play(7); 188 break; 189 case 20: 190 myDFPlayer.play(8); 191 break; 192 case 21: 193 myDFPlayer.play(9); 194 break; 195 case 22: 196 myDFPlayer.play(22); 197 break; 198 case 23: 199 myDFPlayer.play(23); 200 break; 201 case 24: 202 myDFPlayer.play(24); 203 break; 204 case 1: 205 myDFPlayer.play(13); 206 break; 207 case 2: 208 myDFPlayer.play(14); 209 break; 210 case 3: 211 myDFPlayer.play(15); 212 break; 213 case 4: 214 myDFPlayer.play(16); 215 break; 216 case 5: 217 myDFPlayer.play(17); 218 break; 219 } 220} 221
Chiming Analogue Clock
arduino
Alternate code for analogue clock face
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include <Ds1302.h> 6#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library 7 8Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); // CLK, DIN, D/C, CS, RST 9SoftwareSerial mySoftwareSerial (3,2); // DFPlayer Mini RX Pin3 -> TX .. TX Pin2 -> RX 10DFRobotDFPlayerMini myDFPlayer; 11 12Ds1302 rtc(6,4,5); 13 14 15 16static const unsigned char PROGMEM Big_Ben_3[] ={ 170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xD1, 0x0F, 0xFF, 0xFE, 0x7F, 0xF9, 0x05, 0x41, 180xFF, 0xFE, 0x63, 0xF0, 0x83, 0x42, 0x2F, 0xC6, 0x63, 0xDA, 0x05, 0x50, 0xBB, 0xC6, 0x6F, 0x8A, 190x51, 0x14, 0x25, 0xF6, 0x7F, 0x2D, 0x3F, 0xF9, 0x6A, 0xFE, 0x7E, 0x05, 0x83, 0x82, 0x50, 0x7E, 200x7C, 0x97, 0x07, 0x80, 0xA4, 0x3E, 0x7C, 0x2F, 0x83, 0x80, 0xE9, 0x5E, 0x78, 0x13, 0x87, 0x81, 210x10, 0x2E, 0x74, 0xA1, 0xC0, 0x02, 0x08, 0x1E, 0x73, 0x41, 0x80, 0x02, 0x05, 0x16, 0x7C, 0x81, 220x00, 0x00, 0x02, 0x6E, 0x47, 0x80, 0x00, 0x00, 0x02, 0xC2, 0x51, 0x80, 0x00, 0x00, 0x07, 0x16, 230x46, 0x60, 0x00, 0x00, 0x0F, 0x46, 0x22, 0x30, 0x00, 0x00, 0x18, 0x88, 0x08, 0x00, 0x00, 0x00, 240x00, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x00, 250x00, 0x00, 0x00, 0x40, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 260xFF, 0x40, 0x00, 0x00, 0x07, 0xFE, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x74, 0x00, 0x00, 0x00, 270x00, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x54, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x20, 280x00, 0x00, 0x00, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x10, 0xA0, 0x23, 0xF0, 0x00, 0x00, 0x1C, 0x88, 290x47, 0xF8, 0x00, 0x00, 0x1F, 0x42, 0x53, 0xF0, 0x00, 0x00, 0x1F, 0x12, 0x47, 0xE0, 0x00, 0x00, 300x07, 0xC6, 0x7C, 0x81, 0x00, 0x00, 0x02, 0x66, 0x73, 0x43, 0x80, 0x02, 0x05, 0x9E, 0x74, 0xA3, 310xC0, 0x03, 0x08, 0x4E, 0x78, 0x17, 0x83, 0x83, 0x10, 0x1E, 0x7C, 0x2F, 0x83, 0x81, 0xE9, 0x3E, 320x7C, 0x97, 0x03, 0x81, 0xA4, 0x7E, 0x7E, 0x15, 0x83, 0x82, 0xD0, 0xFE, 0x7F, 0xAD, 0x3F, 0xFD, 330x49, 0xFE, 0x63, 0xC8, 0x51, 0x14, 0x23, 0xC6, 0x63, 0xF2, 0x05, 0x50, 0xAF, 0xC6, 0x6B, 0xF8, 340x87, 0x42, 0x1F, 0xD6, 0x7F, 0xFE, 0x05, 0x50, 0xFF, 0xFE, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00 35}; 36 37 static uint8_t last_second = 0; 38 static uint8_t last_minute = 0; 39 int hour2; 40 41void setup() 42{ 43 display.begin(); // initialise the Nokia display 44 display.clearDisplay(); // clears the screen and buffer 45 display.setContrast(50); 46 47 mySoftwareSerial.begin(9600); 48 myDFPlayer.begin(mySoftwareSerial); 49 myDFPlayer.volume(15); 50 rtc.init(); // Initialise the Real Time Clock 51 52} 53 54void loop() 55{ 56 57 Ds1302::DateTime now; //Get the current time 58 rtc.getDateTime(&now); 59 if(last_second != now.second) { 60 if ((now.minute == 59) && (now.second == 40)) { 61 hour2 = now.hour +1; 62 chime(); 63 } 64 last_second = now.second; 65 } 66 if (last_minute != now.minute) { 67 last_minute = now.minute; 68 69 float x1, y1, x2, y2, x3, y3, x4, y4,v1 ,v2 ,v3 ,v4 ,w1 ,w2 ,w3 ,w4, Am,Ah; 70 Am = (now.minute * 6); 71 Ah = (now.hour * 30) + (now.minute * 0.5); 72 73 x1=25*sin(Am*0.0175); // Co-ords For Minute Hand 74 y1=25*-cos(Am*0.0175); 75 x2=3*sin(Am*0.0175); 76 y2=3*-cos(Am*0.0175); 77 x3=10*sin((Am+8)*0.0175); 78 y3=10*-cos((Am+8)*0.0175); 79 x4=10*sin((Am-8)*0.0175); 80 y4=10*-cos((Am-8)*0.0175); 81 82 v1=20*sin(Ah*0.0175); // Co-ords For Hour Hand 83 w1=20*-cos(Ah*0.0175); 84 v2=3*sin(Ah*0.0175); 85 w2=3*-cos(Ah*0.0175); 86 v3=8*sin((Ah+14)*0.0175); 87 w3=8*-cos((Ah+14)*0.0175); 88 v4=8*sin((Ah-14)*0.0175); 89 w4=8*-cos((Ah-14)*0.0175); 90 91 display.drawBitmap(18,0,Big_Ben_3,48,48,BLACK); // Display Clock Face Bitmap 92 display.drawCircle(42,24,2,BLACK); // Draw Centre Circle 93 94 display.drawLine(x1+42, y1+24, x3+42, y3+24,BLACK); // Draw Minutes 95 display.drawLine(x3+42, y3+24, x2+42, y2+24,BLACK); 96 display.drawLine(x2+42, y2+24, x4+42, y4+24,BLACK); 97 display.drawLine(x4+42, y4+24, x1+42, y1+24,BLACK); 98 99 100 display.drawLine(v1+42, w1+24, v3+42, w3+24,BLACK); // Draw Hours 101 display.drawLine(v3+42, w3+24, v2+42, w2+24,BLACK); 102 display.drawLine(v2+42, w2+24, v4+42, w4+24,BLACK); 103 display.drawLine(v4+42, w4+24, v1+42, w1+24,BLACK); 104 105 display.display(); 106 107 108 display.drawLine(x1+42, y1+24, x3+42, y3+24,WHITE); // Erase Minutes 109 display.drawLine(x3+42, y3+24, x2+42, y2+24,WHITE); 110 display.drawLine(x2+42, y2+24, x4+42, y4+24,WHITE); 111 display.drawLine(x4+42, y4+24, x1+42, y1+24,WHITE); 112 113 display.drawLine(v1+42, w1+24, v3+42, w3+24,WHITE); // Erase Hours 114 display.drawLine(v3+42, w3+24, v2+42, w2+24,WHITE); 115 display.drawLine(v2+42, w2+24, v4+42, w4+24,WHITE); 116 display.drawLine(v4+42, w4+24, v1+42, w1+24,WHITE); 117 118 119 //delay(800); 120 } 121 122} 123 124 125void chime() { 126 switch (hour2) { 127 128 case 6: 129 myDFPlayer.play(6); 130 break; 131 case 7: 132 myDFPlayer.play(7); 133 break; 134 case 8: 135 myDFPlayer.play(8); 136 break; 137 case 9: 138 myDFPlayer.play(9); 139 break; 140 case 10: 141 myDFPlayer.play(10); 142 break; 143 case 11: 144 myDFPlayer.play(11); 145 break; 146 case 12: 147 myDFPlayer.play(12); 148 break; 149 case 13: 150 myDFPlayer.play(1); 151 break; 152 case 14: 153 myDFPlayer.play(2); 154 break; 155 case 15: 156 myDFPlayer.play(3); 157 break; 158 case 16: 159 myDFPlayer.play(4); 160 break; 161 case 17: 162 myDFPlayer.play(5); 163 break; 164 case 18: 165 myDFPlayer.play(6); 166 break; 167 case 19: 168 myDFPlayer.play(7); 169 break; 170 case 20: 171 myDFPlayer.play(8); 172 break; 173 case 21: 174 myDFPlayer.play(9); 175 break; 176 case 22: 177 myDFPlayer.play(10); 178 break; 179 } 180} 181
Digital Display
arduino
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include <Ds1302.h> 6#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library 7#include <LowPower.h> 8 9SoftwareSerial mySoftwareSerial(3, 2); // RX, TX 10DFRobotDFPlayerMini myDFPlayer; 11 12// DS1302 RTC instance 13Ds1302 rtc(6,4,5); // 14// Nokia 5110 LCD module connections CLK, DIN, D/C, CS, RST (opposite to the actual pin positions !!) 15Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); 16const static char* WeekDays[] = 17{ 18 " Mon ", 19 " Tues ", 20 " Wed ", 21 " Thurs ", 22 " Fri ", 23 " Sat ", 24 " Sun " 25}; 26 const static char* Months[] = 27 { 28 "Jan ", 29 "Feb ", 30 "Mar ", 31 "Apr ", 32 "May ", 33 "Jun ", 34 "Jul ", 35 "Aug ", 36 "Sep ", 37 "Oct ", 38 "Nov ", 39 "Dec " 40 }; 41 static uint8_t last_second = 0; 42 int hour2; 43void setup() { 44 // Serial.begin(115200); 45 display.begin(); // initialise the Nokia display 46 display.clearDisplay(); // clears the screen and buffer 47 display.setContrast(50); 48 49 mySoftwareSerial.begin(9600); 50 myDFPlayer.begin(mySoftwareSerial); 51 myDFPlayer.volume(15); 52 rtc.init(); // initialize the RTC 53 54 display.drawRect(0, 0, 84, 30, BLACK); 55 display.drawRect(0, 29, 84, 12, BLACK); 56 57} 58 59 60void loop() 61{ 62 63 // get the current time 64 Ds1302::DateTime now; 65 rtc.getDateTime(&now); 66 67 if (last_second != now.second) 68 { 69// Serial.println(hour2); 70 if ((now.minute == 59) && (now.second == 40)) { 71 hour2 = now.hour; 72 hour2++; 73// Serial.println("Go to chime"); 74 chime(); 75 } 76 last_second = now.second; 77 78 display.setTextColor(BLACK); 79 display.setTextSize(2); 80 display.setCursor(6,10); 81 if (now.hour <= 9) { //If Hour is single figures, put a 0 in front 82 display.print("0"); 83 } 84 display.print(now.hour); 85 display.print(":"); 86 if (now.minute <= 9) { //If Minute is single figures, put a 0 in front 87 display.print("0"); 88 } 89 display.print(now.minute); 90 // display.print(":"); 91 display.setTextSize(1); 92 if (now.second <= 9) { //If Seconds is single figures, put a 0 in front 93 display.print("0"); 94 } 95 display.print(now.second); 96 97 98 display.setCursor(0,31); 99 display.print(WeekDays[now.dow -1]); 100 display.print(now.day); 101 display.print(" "); 102 display.print(Months[now.month -1]); 103 104 display.display(); 105 106 107 display.setTextColor(WHITE); 108 display.setCursor(0,31); 109 display.print(WeekDays[now.dow -1]); 110 display.print(now.day); 111 display.print(" "); 112 display.print(Months[now.month -1]); 113 114 115 116 display.setTextSize(2); 117 display.setCursor(6,10); 118 if (now.hour <= 9) { 119 display.print("0"); 120 } 121 display.print(now.hour); 122 display.print(":"); 123 if (now.minute <= 9) { 124 display.print("0"); 125 } 126 display.print(now.minute); 127 // display.print(":"); 128 display.setTextSize(1); 129 if (now.second <= 9) { 130 display.print("0"); 131 } 132 display.print(now.second); 133 134// No need to display the screen again 135 136 } 137 // delay(100); 138 LowPower.powerDown(SLEEP_250MS,ADC_OFF,BOD_OFF); 139} 140 141void chime() { 142 switch (hour2) { 143 144 case 6: 145 myDFPlayer.play(6); 146 break; 147 case 7: 148 myDFPlayer.play(7); 149 break; 150 case 8: 151 myDFPlayer.play(8); 152 break; 153 case 9: 154 myDFPlayer.play(9); 155 break; 156 case 10: 157 myDFPlayer.play(10); 158 break; 159 case 11: 160 myDFPlayer.play(11); 161 break; 162 case 12: 163 myDFPlayer.play(12); 164 break; 165 case 13: 166 myDFPlayer.play(1); 167 break; 168 case 14: 169 myDFPlayer.play(2); 170 break; 171 case 15: 172 myDFPlayer.play(3); 173 break; 174 case 16: 175 myDFPlayer.play(4); 176 break; 177 case 17: 178 myDFPlayer.play(5); 179 break; 180 case 18: 181 myDFPlayer.play(6); 182 break; 183 case 19: 184 myDFPlayer.play(7); 185 break; 186 case 20: 187 myDFPlayer.play(8); 188 break; 189 case 21: 190 myDFPlayer.play(9); 191 break; 192 case 22: 193 myDFPlayer.play(10); 194 break; 195 } 196} 197
Digital Clock face with nightly cuckoo sounds
arduino
Use this code for digital display with cuckoo sounds. Program using Arduino IDE
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include 6 <Ds1302.h> 7#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 8 5110) library 9#include <LowPower.h> 10 11SoftwareSerial mySoftwareSerial(3, 12 2); // RX, TX 13DFRobotDFPlayerMini myDFPlayer; 14 15// DS1302 RTC instance 16Ds1302 17 rtc(6,4,5); // 18// Nokia 5110 LCD module connections CLK, DIN, D/C, CS, RST (opposite 19 to the actual pin positions !!) 20Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); 21const 22 static char* WeekDays[] = 23{ 24 " Mon ", 25 " Tues ", 26 " 27 Wed ", 28 " Thurs ", 29 " Fri ", 30 " Sat ", 31 " 32 Sun " 33}; 34 const static char* Months[] = 35 { 36 "Jan ", 37 "Feb 38 ", 39 "Mar ", 40 "Apr ", 41 "May ", 42 "Jun ", 43 "Jul ", 44 45 "Aug ", 46 "Sep ", 47 "Oct ", 48 "Nov ", 49 "Dec " 50 }; 51 52 static uint8_t last_second = 0; 53 int hour2; 54void setup() { 55 // Serial.begin(115200); 56 57 display.begin(); // initialise the Nokia display 58 display.clearDisplay(); 59 // clears the screen and buffer 60 display.setContrast(50); 61 62 63 mySoftwareSerial.begin(9600); 64 myDFPlayer.begin(mySoftwareSerial); 65 66 myDFPlayer.volume(15); 67 rtc.init(); // initialize the RTC 68 69 70 display.drawRect(0, 0, 84, 30, BLACK); 71 display.drawRect(0, 29, 84, 72 12, BLACK); 73 74} 75 76 77void loop() 78{ 79 80 // get the current 81 time 82 Ds1302::DateTime now; 83 rtc.getDateTime(&now); 84 85 if (last_second 86 != now.second) 87 { 88// Serial.println(hour2); 89 if ((now.minute 90 == 59) && (now.second == 40)) { 91 hour2 = now.hour; 92 hour2++; 93// 94 Serial.println("Go to chime"); 95 chime(); 96 } 97 last_second 98 = now.second; 99 100 display.setTextColor(BLACK); 101 display.setTextSize(2); 102 103 display.setCursor(6,10); 104 if (now.hour <= 9) { //If Hour is single 105 figures, put a 0 in front 106 display.print("0"); 107 } 108 display.print(now.hour); 109 110 display.print(":"); 111 if (now.minute <= 9) { //If Minute is single 112 figures, put a 0 in front 113 display.print("0"); 114 } 115 display.print(now.minute); 116 117 // display.print(":"); 118 display.setTextSize(1); 119 if 120 (now.second <= 9) { //If Seconds is single figures, put a 0 in front 121 display.print("0"); 122 123 } 124 display.print(now.second); 125 126 127 display.setCursor(0,31); 128 129 display.print(WeekDays[now.dow -1]); 130 display.print(now.day); 131 132 display.print(" "); 133 display.print(Months[now.month -1]); 134 135 136 display.display(); 137 138 139 display.setTextColor(WHITE); 140 141 display.setCursor(0,31); 142 display.print(WeekDays[now.dow -1]); 143 144 display.print(now.day); 145 display.print(" "); 146 display.print(Months[now.month 147 -1]); 148 149 150 151 display.setTextSize(2); 152 153 display.setCursor(6,10); 154 if (now.hour <= 9) { 155 display.print("0"); 156 157 } 158 display.print(now.hour); 159 display.print(":"); 160 if 161 (now.minute <= 9) { 162 display.print("0"); 163 } 164 display.print(now.minute); 165 166 // display.print(":"); 167 display.setTextSize(1); 168 if (now.second 169 <= 9) { 170 display.print("0"); 171 } 172 display.print(now.second); 173 174 175// No need to display the screen again 176 177 } 178 // delay(100); 179 180 LowPower.powerDown(SLEEP_250MS,ADC_OFF,BOD_OFF); 181} 182 183// Chime Routine 184 6am - 9pm = Westminster Chime 185// 10pm - 5am = Cuckoo 186 187void 188 chime() { 189 switch (hour2) { 190 191 case 6: 192 myDFPlayer.play(6); 193 194 break; 195 case 7: 196 myDFPlayer.play(7); 197 break; 198 case 8: 199 200 myDFPlayer.play(8); 201 break; 202 case 9: 203 myDFPlayer.play(9); 204 205 break; 206 case 10: 207 myDFPlayer.play(10); 208 break; 209 case 210 11: 211 myDFPlayer.play(11); 212 break; 213 case 12: 214 myDFPlayer.play(12); 215 216 break; 217 case 13: 218 myDFPlayer.play(1); 219 break; 220 case 221 14: 222 myDFPlayer.play(2); 223 break; 224 case 15: 225 myDFPlayer.play(3); 226 227 break; 228 case 16: 229 myDFPlayer.play(4); 230 break; 231 case 232 17: 233 myDFPlayer.play(5); 234 break; 235 case 18: 236 myDFPlayer.play(6); 237 238 break; 239 case 19: 240 myDFPlayer.play(7); 241 break; 242 case 243 20: 244 myDFPlayer.play(8); 245 break; 246 case 21: 247 myDFPlayer.play(9); 248 249 break; 250 case 22: 251 myDFPlayer.play(22); 252 break; 253 case 254 23: 255 myDFPlayer.play(23); 256 break; 257 case 24: 258 myDFPlayer.play(24); 259 260 break; 261 case 1: 262 myDFPlayer.play(13); 263 break; 264 case 265 2: 266 myDFPlayer.play(14); 267 break; 268 case 3: 269 myDFPlayer.play(15); 270 271 break; 272 case 4: 273 myDFPlayer.play(16); 274 break; 275 276 case 5: 277 myDFPlayer.play(17); 278 break; 279 } 280} 281
Chiming Analogue Clock
arduino
Alternate code for analogue clock face
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include 6 <Ds1302.h> 7#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 8 5110) library 9 10Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); // 11 CLK, DIN, D/C, CS, RST 12SoftwareSerial mySoftwareSerial (3,2); // DFPlayer Mini 13 RX Pin3 -> TX .. TX Pin2 -> RX 14DFRobotDFPlayerMini myDFPlayer; 15 16Ds1302 17 rtc(6,4,5); 18 19 20 21static const unsigned char PROGMEM Big_Ben_3[] ={ 220x00, 23 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xD1, 0x0F, 0xFF, 0xFE, 0x7F, 0xF9, 0x05, 24 0x41, 250xFF, 0xFE, 0x63, 0xF0, 0x83, 0x42, 0x2F, 0xC6, 0x63, 0xDA, 0x05, 0x50, 26 0xBB, 0xC6, 0x6F, 0x8A, 270x51, 0x14, 0x25, 0xF6, 0x7F, 0x2D, 0x3F, 0xF9, 0x6A, 28 0xFE, 0x7E, 0x05, 0x83, 0x82, 0x50, 0x7E, 290x7C, 0x97, 0x07, 0x80, 0xA4, 0x3E, 30 0x7C, 0x2F, 0x83, 0x80, 0xE9, 0x5E, 0x78, 0x13, 0x87, 0x81, 310x10, 0x2E, 0x74, 32 0xA1, 0xC0, 0x02, 0x08, 0x1E, 0x73, 0x41, 0x80, 0x02, 0x05, 0x16, 0x7C, 0x81, 330x00, 34 0x00, 0x02, 0x6E, 0x47, 0x80, 0x00, 0x00, 0x02, 0xC2, 0x51, 0x80, 0x00, 0x00, 0x07, 35 0x16, 360x46, 0x60, 0x00, 0x00, 0x0F, 0x46, 0x22, 0x30, 0x00, 0x00, 0x18, 0x88, 37 0x08, 0x00, 0x00, 0x00, 380x00, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 39 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x00, 400x00, 0x00, 0x00, 0x40, 0x74, 0x00, 41 0x00, 0x00, 0x00, 0x5C, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 420xFF, 0x40, 0x00, 43 0x00, 0x07, 0xFE, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x74, 0x00, 0x00, 0x00, 440x00, 45 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x54, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 46 0x20, 470x00, 0x00, 0x00, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x10, 0xA0, 0x23, 0xF0, 48 0x00, 0x00, 0x1C, 0x88, 490x47, 0xF8, 0x00, 0x00, 0x1F, 0x42, 0x53, 0xF0, 0x00, 50 0x00, 0x1F, 0x12, 0x47, 0xE0, 0x00, 0x00, 510x07, 0xC6, 0x7C, 0x81, 0x00, 0x00, 52 0x02, 0x66, 0x73, 0x43, 0x80, 0x02, 0x05, 0x9E, 0x74, 0xA3, 530xC0, 0x03, 0x08, 54 0x4E, 0x78, 0x17, 0x83, 0x83, 0x10, 0x1E, 0x7C, 0x2F, 0x83, 0x81, 0xE9, 0x3E, 550x7C, 56 0x97, 0x03, 0x81, 0xA4, 0x7E, 0x7E, 0x15, 0x83, 0x82, 0xD0, 0xFE, 0x7F, 0xAD, 0x3F, 57 0xFD, 580x49, 0xFE, 0x63, 0xC8, 0x51, 0x14, 0x23, 0xC6, 0x63, 0xF2, 0x05, 0x50, 59 0xAF, 0xC6, 0x6B, 0xF8, 600x87, 0x42, 0x1F, 0xD6, 0x7F, 0xFE, 0x05, 0x50, 0xFF, 61 0xFE, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00 62}; 63 64 static uint8_t last_second 65 = 0; 66 static uint8_t last_minute = 0; 67 int hour2; 68 69void setup() 70{ 71 72 display.begin(); // initialise the Nokia display 73 display.clearDisplay(); 74 // clears the screen and buffer 75 display.setContrast(50); 76 77 mySoftwareSerial.begin(9600); 78 79 myDFPlayer.begin(mySoftwareSerial); 80 myDFPlayer.volume(15); 81 rtc.init(); 82 // Initialise the Real Time Clock 83 84} 85 86void loop() 87{ 88 89 Ds1302::DateTime 90 now; //Get the current time 91 rtc.getDateTime(&now); 92 if(last_second 93 != now.second) { 94 if ((now.minute == 59) && (now.second == 40)) { 95 hour2 96 = now.hour +1; 97 chime(); 98 } 99 last_second = now.second; 100 101 } 102 if (last_minute != now.minute) { 103 last_minute = now.minute; 104 105 106 float x1, y1, x2, y2, x3, y3, x4, y4,v1 ,v2 ,v3 ,v4 ,w1 ,w2 ,w3 ,w4, 107 Am,Ah; 108 Am = (now.minute * 6); 109 Ah = (now.hour * 30) + (now.minute 110 * 0.5); 111 112 x1=25*sin(Am*0.0175); // Co-ords For Minute Hand 113 y1=25*-cos(Am*0.0175); 114 115 x2=3*sin(Am*0.0175); 116 y2=3*-cos(Am*0.0175); 117 x3=10*sin((Am+8)*0.0175); 118 119 y3=10*-cos((Am+8)*0.0175); 120 x4=10*sin((Am-8)*0.0175); 121 y4=10*-cos((Am-8)*0.0175); 122 123 124 v1=20*sin(Ah*0.0175); // Co-ords For Hour Hand 125 w1=20*-cos(Ah*0.0175); 126 127 v2=3*sin(Ah*0.0175); 128 w2=3*-cos(Ah*0.0175); 129 v3=8*sin((Ah+14)*0.0175); 130 131 w3=8*-cos((Ah+14)*0.0175); 132 v4=8*sin((Ah-14)*0.0175); 133 w4=8*-cos((Ah-14)*0.0175); 134 135 136 display.drawBitmap(18,0,Big_Ben_3,48,48,BLACK); // Display Clock Face Bitmap 137 138 display.drawCircle(42,24,2,BLACK); // Draw Centre Circle 139 140 display.drawLine(x1+42, 141 y1+24, x3+42, y3+24,BLACK); // Draw Minutes 142 display.drawLine(x3+42, y3+24, 143 x2+42, y2+24,BLACK); 144 display.drawLine(x2+42, y2+24, x4+42, y4+24,BLACK); 145 146 display.drawLine(x4+42, y4+24, x1+42, y1+24,BLACK); 147 148 149 display.drawLine(v1+42, 150 w1+24, v3+42, w3+24,BLACK); // Draw Hours 151 display.drawLine(v3+42, w3+24, v2+42, 152 w2+24,BLACK); 153 display.drawLine(v2+42, w2+24, v4+42, w4+24,BLACK); 154 display.drawLine(v4+42, 155 w4+24, v1+42, w1+24,BLACK); 156 157 display.display(); 158 159 160 display.drawLine(x1+42, 161 y1+24, x3+42, y3+24,WHITE); // Erase Minutes 162 display.drawLine(x3+42, y3+24, 163 x2+42, y2+24,WHITE); 164 display.drawLine(x2+42, y2+24, x4+42, y4+24,WHITE); 165 166 display.drawLine(x4+42, y4+24, x1+42, y1+24,WHITE); 167 168 display.drawLine(v1+42, 169 w1+24, v3+42, w3+24,WHITE); // Erase Hours 170 display.drawLine(v3+42, w3+24, v2+42, 171 w2+24,WHITE); 172 display.drawLine(v2+42, w2+24, v4+42, w4+24,WHITE); 173 display.drawLine(v4+42, 174 w4+24, v1+42, w1+24,WHITE); 175 176 177 //delay(800); 178 } 179 180} 181 182 183void 184 chime() { 185 switch (hour2) { 186 187 case 6: 188 myDFPlayer.play(6); 189 190 break; 191 case 7: 192 myDFPlayer.play(7); 193 break; 194 case 8: 195 196 myDFPlayer.play(8); 197 break; 198 case 9: 199 myDFPlayer.play(9); 200 201 break; 202 case 10: 203 myDFPlayer.play(10); 204 break; 205 case 206 11: 207 myDFPlayer.play(11); 208 break; 209 case 12: 210 myDFPlayer.play(12); 211 212 break; 213 case 13: 214 myDFPlayer.play(1); 215 break; 216 case 217 14: 218 myDFPlayer.play(2); 219 break; 220 case 15: 221 myDFPlayer.play(3); 222 223 break; 224 case 16: 225 myDFPlayer.play(4); 226 break; 227 case 228 17: 229 myDFPlayer.play(5); 230 break; 231 case 18: 232 myDFPlayer.play(6); 233 234 break; 235 case 19: 236 myDFPlayer.play(7); 237 break; 238 case 239 20: 240 myDFPlayer.play(8); 241 break; 242 case 21: 243 myDFPlayer.play(9); 244 245 break; 246 case 22: 247 myDFPlayer.play(10); 248 break; 249 } 250} 251
Digital Display
arduino
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include <Ds1302.h> 6#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library 7#include <LowPower.h> 8 9SoftwareSerial mySoftwareSerial(3, 2); // RX, TX 10DFRobotDFPlayerMini myDFPlayer; 11 12// DS1302 RTC instance 13Ds1302 rtc(6,4,5); // 14// Nokia 5110 LCD module connections CLK, DIN, D/C, CS, RST (opposite to the actual pin positions !!) 15Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); 16const static char* WeekDays[] = 17{ 18 " Mon ", 19 " Tues ", 20 " Wed ", 21 " Thurs ", 22 " Fri ", 23 " Sat ", 24 " Sun " 25}; 26 const static char* Months[] = 27 { 28 "Jan ", 29 "Feb ", 30 "Mar ", 31 "Apr ", 32 "May ", 33 "Jun ", 34 "Jul ", 35 "Aug ", 36 "Sep ", 37 "Oct ", 38 "Nov ", 39 "Dec " 40 }; 41 static uint8_t last_second = 0; 42 int hour2; 43void setup() { 44 // Serial.begin(115200); 45 display.begin(); // initialise the Nokia display 46 display.clearDisplay(); // clears the screen and buffer 47 display.setContrast(50); 48 49 mySoftwareSerial.begin(9600); 50 myDFPlayer.begin(mySoftwareSerial); 51 myDFPlayer.volume(15); 52 rtc.init(); // initialize the RTC 53 54 display.drawRect(0, 0, 84, 30, BLACK); 55 display.drawRect(0, 29, 84, 12, BLACK); 56 57} 58 59 60void loop() 61{ 62 63 // get the current time 64 Ds1302::DateTime now; 65 rtc.getDateTime(&now); 66 67 if (last_second != now.second) 68 { 69// Serial.println(hour2); 70 if ((now.minute == 59) && (now.second == 40)) { 71 hour2 = now.hour; 72 hour2++; 73// Serial.println("Go to chime"); 74 chime(); 75 } 76 last_second = now.second; 77 78 display.setTextColor(BLACK); 79 display.setTextSize(2); 80 display.setCursor(6,10); 81 if (now.hour <= 9) { //If Hour is single figures, put a 0 in front 82 display.print("0"); 83 } 84 display.print(now.hour); 85 display.print(":"); 86 if (now.minute <= 9) { //If Minute is single figures, put a 0 in front 87 display.print("0"); 88 } 89 display.print(now.minute); 90 // display.print(":"); 91 display.setTextSize(1); 92 if (now.second <= 9) { //If Seconds is single figures, put a 0 in front 93 display.print("0"); 94 } 95 display.print(now.second); 96 97 98 display.setCursor(0,31); 99 display.print(WeekDays[now.dow -1]); 100 display.print(now.day); 101 display.print(" "); 102 display.print(Months[now.month -1]); 103 104 display.display(); 105 106 107 display.setTextColor(WHITE); 108 display.setCursor(0,31); 109 display.print(WeekDays[now.dow -1]); 110 display.print(now.day); 111 display.print(" "); 112 display.print(Months[now.month -1]); 113 114 115 116 display.setTextSize(2); 117 display.setCursor(6,10); 118 if (now.hour <= 9) { 119 display.print("0"); 120 } 121 display.print(now.hour); 122 display.print(":"); 123 if (now.minute <= 9) { 124 display.print("0"); 125 } 126 display.print(now.minute); 127 // display.print(":"); 128 display.setTextSize(1); 129 if (now.second <= 9) { 130 display.print("0"); 131 } 132 display.print(now.second); 133 134// No need to display the screen again 135 136 } 137 // delay(100); 138 LowPower.powerDown(SLEEP_250MS,ADC_OFF,BOD_OFF); 139} 140 141void chime() { 142 switch (hour2) { 143 144 case 6: 145 myDFPlayer.play(6); 146 break; 147 case 7: 148 myDFPlayer.play(7); 149 break; 150 case 8: 151 myDFPlayer.play(8); 152 break; 153 case 9: 154 myDFPlayer.play(9); 155 break; 156 case 10: 157 myDFPlayer.play(10); 158 break; 159 case 11: 160 myDFPlayer.play(11); 161 break; 162 case 12: 163 myDFPlayer.play(12); 164 break; 165 case 13: 166 myDFPlayer.play(1); 167 break; 168 case 14: 169 myDFPlayer.play(2); 170 break; 171 case 15: 172 myDFPlayer.play(3); 173 break; 174 case 16: 175 myDFPlayer.play(4); 176 break; 177 case 17: 178 myDFPlayer.play(5); 179 break; 180 case 18: 181 myDFPlayer.play(6); 182 break; 183 case 19: 184 myDFPlayer.play(7); 185 break; 186 case 20: 187 myDFPlayer.play(8); 188 break; 189 case 21: 190 myDFPlayer.play(9); 191 break; 192 case 22: 193 myDFPlayer.play(10); 194 break; 195 } 196} 197
Analogue Clock face with nightly cuckoo
arduino
Use arduino IDE to program your Nano
1 2#include <Arduino.h> 3#include <SoftwareSerial.h> 4#include <DFRobotDFPlayerMini.h> 5#include <Ds1302.h> 6#include <Adafruit_PCD8544.h> // include adafruit PCD8544 (Nokia 5110) library 7 8Adafruit_PCD8544 display = Adafruit_PCD8544(7,8,9,10,11); // CLK, DIN, D/C, CS, RST 9SoftwareSerial mySoftwareSerial (3,2); // DFPlayer Mini RX Pin3 -> TX .. TX Pin2 -> RX 10DFRobotDFPlayerMini myDFPlayer; 11 12Ds1302 rtc(6,4,5); 13 14 15 16static const unsigned char PROGMEM Big_Ben_3[] ={ 170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0xD1, 0x0F, 0xFF, 0xFE, 0x7F, 0xF9, 0x05, 0x41, 180xFF, 0xFE, 0x63, 0xF0, 0x83, 0x42, 0x2F, 0xC6, 0x63, 0xDA, 0x05, 0x50, 0xBB, 0xC6, 0x6F, 0x8A, 190x51, 0x14, 0x25, 0xF6, 0x7F, 0x2D, 0x3F, 0xF9, 0x6A, 0xFE, 0x7E, 0x05, 0x83, 0x82, 0x50, 0x7E, 200x7C, 0x97, 0x07, 0x80, 0xA4, 0x3E, 0x7C, 0x2F, 0x83, 0x80, 0xE9, 0x5E, 0x78, 0x13, 0x87, 0x81, 210x10, 0x2E, 0x74, 0xA1, 0xC0, 0x02, 0x08, 0x1E, 0x73, 0x41, 0x80, 0x02, 0x05, 0x16, 0x7C, 0x81, 220x00, 0x00, 0x02, 0x6E, 0x47, 0x80, 0x00, 0x00, 0x02, 0xC2, 0x51, 0x80, 0x00, 0x00, 0x07, 0x16, 230x46, 0x60, 0x00, 0x00, 0x0F, 0x46, 0x22, 0x30, 0x00, 0x00, 0x18, 0x88, 0x08, 0x00, 0x00, 0x00, 240x00, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x00, 250x00, 0x00, 0x00, 0x40, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 260xFF, 0x40, 0x00, 0x00, 0x07, 0xFE, 0x27, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x74, 0x00, 0x00, 0x00, 270x00, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x54, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x20, 280x00, 0x00, 0x00, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x10, 0xA0, 0x23, 0xF0, 0x00, 0x00, 0x1C, 0x88, 290x47, 0xF8, 0x00, 0x00, 0x1F, 0x42, 0x53, 0xF0, 0x00, 0x00, 0x1F, 0x12, 0x47, 0xE0, 0x00, 0x00, 300x07, 0xC6, 0x7C, 0x81, 0x00, 0x00, 0x02, 0x66, 0x73, 0x43, 0x80, 0x02, 0x05, 0x9E, 0x74, 0xA3, 310xC0, 0x03, 0x08, 0x4E, 0x78, 0x17, 0x83, 0x83, 0x10, 0x1E, 0x7C, 0x2F, 0x83, 0x81, 0xE9, 0x3E, 320x7C, 0x97, 0x03, 0x81, 0xA4, 0x7E, 0x7E, 0x15, 0x83, 0x82, 0xD0, 0xFE, 0x7F, 0xAD, 0x3F, 0xFD, 330x49, 0xFE, 0x63, 0xC8, 0x51, 0x14, 0x23, 0xC6, 0x63, 0xF2, 0x05, 0x50, 0xAF, 0xC6, 0x6B, 0xF8, 340x87, 0x42, 0x1F, 0xD6, 0x7F, 0xFE, 0x05, 0x50, 0xFF, 0xFE, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00 35}; 36 37 static uint8_t last_second = 0; 38 static uint8_t last_minute = 0; 39 int hour2; 40 41void setup() 42{ 43 display.begin(); // initialise the Nokia display 44 display.clearDisplay(); // clears the screen and buffer 45 display.setContrast(50); 46 47 mySoftwareSerial.begin(9600); 48 myDFPlayer.begin(mySoftwareSerial); 49 myDFPlayer.volume(15); 50 rtc.init(); // Initialise the Real Time Clock 51 52} 53 54void loop() 55{ 56 57 Ds1302::DateTime now; //Get the current time 58 rtc.getDateTime(&now); 59 if(last_second != now.second) { 60 if ((now.minute == 59) && (now.second == 40)) { 61 hour2 = now.hour +1; 62 chime(); 63 } 64 last_second = now.second; 65 } 66 if (last_minute != now.minute) { 67 last_minute = now.minute; 68 69 float x1, y1, x2, y2, x3, y3, x4, y4,v1 ,v2 ,v3 ,v4 ,w1 ,w2 ,w3 ,w4, Am,Ah; 70 Am = (now.minute * 6); 71 Ah = (now.hour * 30) + (now.minute * 0.5); 72 73 x1=25*sin(Am*0.0175); // Co-ords For Minute Hand 74 y1=25*-cos(Am*0.0175); 75 x2=3*sin(Am*0.0175); 76 y2=3*-cos(Am*0.0175); 77 x3=10*sin((Am+8)*0.0175); 78 y3=10*-cos((Am+8)*0.0175); 79 x4=10*sin((Am-8)*0.0175); 80 y4=10*-cos((Am-8)*0.0175); 81 82 v1=20*sin(Ah*0.0175); // Co-ords For Hour Hand 83 w1=20*-cos(Ah*0.0175); 84 v2=3*sin(Ah*0.0175); 85 w2=3*-cos(Ah*0.0175); 86 v3=8*sin((Ah+14)*0.0175); 87 w3=8*-cos((Ah+14)*0.0175); 88 v4=8*sin((Ah-14)*0.0175); 89 w4=8*-cos((Ah-14)*0.0175); 90 91 display.drawBitmap(18,0,Big_Ben_3,48,48,BLACK); // Display Clock Face Bitmap 92 display.drawCircle(42,24,2,BLACK); // Draw Centre Circle 93 94 display.drawLine(x1+42, y1+24, x3+42, y3+24,BLACK); // Draw Minutes 95 display.drawLine(x3+42, y3+24, x2+42, y2+24,BLACK); 96 display.drawLine(x2+42, y2+24, x4+42, y4+24,BLACK); 97 display.drawLine(x4+42, y4+24, x1+42, y1+24,BLACK); 98 99 100 display.drawLine(v1+42, w1+24, v3+42, w3+24,BLACK); // Draw Hours 101 display.drawLine(v3+42, w3+24, v2+42, w2+24,BLACK); 102 display.drawLine(v2+42, w2+24, v4+42, w4+24,BLACK); 103 display.drawLine(v4+42, w4+24, v1+42, w1+24,BLACK); 104 105 display.display(); 106 107 108 display.drawLine(x1+42, y1+24, x3+42, y3+24,WHITE); // Erase Minutes 109 display.drawLine(x3+42, y3+24, x2+42, y2+24,WHITE); 110 display.drawLine(x2+42, y2+24, x4+42, y4+24,WHITE); 111 display.drawLine(x4+42, y4+24, x1+42, y1+24,WHITE); 112 113 display.drawLine(v1+42, w1+24, v3+42, w3+24,WHITE); // Erase Hours 114 display.drawLine(v3+42, w3+24, v2+42, w2+24,WHITE); 115 display.drawLine(v2+42, w2+24, v4+42, w4+24,WHITE); 116 display.drawLine(v4+42, w4+24, v1+42, w1+24,WHITE); 117 118 119 //delay(800); 120 } 121 122} 123 124 125void chime() { 126 switch (hour2) { 127 128 case 6: 129 myDFPlayer.play(6); 130 break; 131 case 7: 132 myDFPlayer.play(7); 133 break; 134 case 8: 135 myDFPlayer.play(8); 136 break; 137 case 9: 138 myDFPlayer.play(9); 139 break; 140 case 10: 141 myDFPlayer.play(10); 142 break; 143 case 11: 144 myDFPlayer.play(11); 145 break; 146 case 12: 147 myDFPlayer.play(12); 148 break; 149 case 13: 150 myDFPlayer.play(1); 151 break; 152 case 14: 153 myDFPlayer.play(2); 154 break; 155 case 15: 156 myDFPlayer.play(3); 157 break; 158 case 16: 159 myDFPlayer.play(4); 160 break; 161 case 17: 162 myDFPlayer.play(5); 163 break; 164 case 18: 165 myDFPlayer.play(6); 166 break; 167 case 19: 168 myDFPlayer.play(7); 169 break; 170 case 20: 171 myDFPlayer.play(8); 172 break; 173 case 21: 174 myDFPlayer.play(9); 175 break; 176 case 22: 177 myDFPlayer.play(22); 178 break; 179 case 23: 180 myDFPlayer.play(23); 181 break; 182 case 24: 183 myDFPlayer.play(24); 184 break; 185 case 1: 186 myDFPlayer.play(13); 187 break; 188 case 2: 189 myDFPlayer.play(14); 190 break; 191 case 3: 192 myDFPlayer.play(15); 193 break; 194 case 4: 195 myDFPlayer.play(16); 196 break; 197 case 5: 198 myDFPlayer.play(17); 199 break; 200 } 201} 202
Downloadable files
Chiming Clock Scheme
Circuit diagram
Chiming Clock Scheme
Westminster Chimes and Cuckoo sounds
Chimes 0001 - 0012 Cuckoo 0013 - 0024
Westminster Chimes and Cuckoo sounds
Chiming Clock Scheme
Circuit diagram
Chiming Clock Scheme
Westminster Chimes and Cuckoo sounds
Chimes 0001 - 0012 Cuckoo 0013 - 0024
Westminster Chimes and Cuckoo sounds
Comments
Only logged in users can leave comments