Dot Matrix Display(DMD) Clock
by thelonelyprogrammer in Circuits > Arduino
1800 Views, 4 Favorites, 0 Comments
Dot Matrix Display(DMD) Clock
This project demonstrates the use of electronics and embedded systems with Clock. Dot-matrix Display or more commonly referred to as Free Running Text is often found in shops as a means of advertising their products, it is practical and flexible in its use that encourages business actors to use it as advertising advice. Now the use of Dot-matrix Display has spread, not just as advertiser media only, as well as prayer schedules, warning boards, queuing machines, etc. Here, we will give a post about how I made a clock using p10 Matrix Display and DS3231 RTC using Arduino.
Supplies
HARDWARE:
- Arduino Uno x 1
- Push-button (Keypad) x 4
- RTC Module (DS3231)
- P10 Dot-matrix Display
SOFTWARE:
- Arduino IDE
- DMD 2 Library / DMD Library
Before that, you need a supporting library that must be installed on Arduino IDE. To download the DMD2 library mentioned above
Connections
*Arduino -> RTC MODULE*
A4-> SDA
A5-> SCL
VCC -> 5V
GND -> GND
*Arduino -> P10 DMD*
D8-> SCK
D6-> A
D7-> B
D11 -> R
D13-> CLK
D9-> OE
Code
byte dayOfWeek=4;
byte dayOfMonth=1;#include //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise) #include // #include // #include "Wendy3x5.h" #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68int AlarmSetPin = 2; int SnoozePin = 3; int Alarm = 4; int AlarmSet = 0; int Snooze = 0; int a,b; // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return ( (val/10*16) + (val%10) ); }// Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); }// 1) Sets the date and time on the ds1307 // 2) Starts the clock // 3) Sets hour mode to 24 hour clock// Assumes you're passing in valid numbersvoid setDateDs1307(byte second, // 0-59 byte minute, // 0-59 byte hour, // 1-23 byte dayOfWeek, // 1-7 byte dayOfMonth, // 1-28/29/30/31 byte month, // 1-12 byte year) // 0-99 { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(00010000); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave Wire.endTransmission(); }// Gets the date and time from the ds1307 void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { // Reset the register pointer Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); }//Fire up the DMD library as dmd DMD dmd(1,1);void ScanDMD() { dmd.scanDisplayBySPI(); }void setup() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display Timer1.initialize( 5000 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker. Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI() //clear/init the DMD pixels held in RAM dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on) dmd.selectFont(Wendy3x5 ); Wire.begin(); // Change these values to what you want to set your clock to. // You probably only want to set your clock once and then remove // the setDateDs1307 call. second = 0; minute = 35; hour = 11; // use 24-hour time otherwise day/date calculations will be off dayOfWeek = 1; dayOfMonth = 23; month = 3; year = 14; //uncomment the setDateDs1307 call below to set time to intervals above. Remember if you set the time //you need to uncomment the line below again otherwise the sketch will only stay at the time set. //setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year); pinMode(AlarmSetPin, INPUT_PULLUP); pinMode(SnoozePin, INPUT_PULLUP); pinMode(Alarm, OUTPUT); digitalWrite(Alarm, LOW); }void drawDay() // shows day of week { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfWeek) { case 1: dmd.drawString( 1,0, "Sun,", 3, GRAPHICS_NORMAL ); break; case 2: dmd.drawString( 1,0, "Mon,", 3, GRAPHICS_NORMAL ); break; case 3: dmd.drawString( 1,0, "Tue,", 3, GRAPHICS_NORMAL ); break; case 4: dmd.drawString( 1,0, "Wed,", 3, GRAPHICS_NORMAL ); break; case 5: dmd.drawString( 1,0, "Thu,", 3, GRAPHICS_NORMAL ); break; case 6: dmd.drawString( 1,0, "Fri,", 3, GRAPHICS_NORMAL ); break; case 7: dmd.drawString( 1,0, "Sat,", 3, GRAPHICS_NORMAL ); break; } }void drawDate() // shows numerical date { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfMonth) { case 1: dmd.drawString( 20,0, "01", 2, GRAPHICS_NORMAL ); break; case 2: dmd.drawString( 20,0, "02", 2, GRAPHICS_NORMAL ); break; case 3: dmd.drawString( 20,0, "03", 2, GRAPHICS_NORMAL ); break; case 4: dmd.drawString( 20,0, "04", 2, GRAPHICS_NORMAL ); break; case 5: dmd.drawString( 20,0, "05", 2, GRAPHICS_NORMAL ); break; case 6: dmd.drawString( 20,0, "06", 2, GRAPHICS_NORMAL ); break; case 7: dmd.drawString( 20,0, "07", 2, GRAPHICS_NORMAL ); break; case 8: dmd.drawString( 20,0, "08", 2, GRAPHICS_NORMAL ); break; case 9: dmd.drawString( 20,0, "09", 2, GRAPHICS_NORMAL ); break; case 10: dmd.drawString( 20,0, "10", 2, GRAPHICS_NORMAL ); break; case 11: dmd.drawString( 20,0, "11", 2, GRAPHICS_NORMAL ); break; case 12: dmd.drawString( 20,0, "12", 2, GRAPHICS_NORMAL ); break; case 13: dmd.drawString( 20,0, "13", 2, GRAPHICS_NORMAL ); break; case 14: dmd.drawString( 20,0, "14", 2, GRAPHICS_NORMAL ); break; case 15: dmd.drawString( 20,0, "15", 2, GRAPHICS_NORMAL ); break; case 16: dmd.drawString( 20,0, "16", 2, GRAPHICS_NORMAL ); break; case 17: dmd.drawString( 20,0, "17", 2, GRAPHICS_NORMAL ); break; case 18: dmd.drawString( 20,0, "18", 2, GRAPHICS_NORMAL ); break; case 19: dmd.drawString( 20,0, "19", 2, GRAPHICS_NORMAL ); break; case 20: dmd.drawString( 20,0, "20", 2, GRAPHICS_NORMAL ); break; case 21: dmd.drawString( 20,0, "21", 2, GRAPHICS_NORMAL ); break; case 22: dmd.drawString( 20,0, "22", 2, GRAPHICS_NORMAL ); break; case 23: dmd.drawString( 20,0, "23", 2, GRAPHICS_NORMAL ); break; case 24: dmd.drawString( 20,0, "24", 2, GRAPHICS_NORMAL ); break; case 25: dmd.drawString( 20,0, "25", 2, GRAPHICS_NORMAL ); break; case 26: dmd.drawString( 20,0, "26", 2, GRAPHICS_NORMAL ); break; case 27: dmd.drawString( 20,0, "27", 2, GRAPHICS_NORMAL ); break; case 28: dmd.drawString( 20,0, "28", 2, GRAPHICS_NORMAL ); break; case 29: dmd.drawString( 20,0, "29", 2, GRAPHICS_NORMAL ); break; case 30: dmd.drawString( 20,0, "30", 2, GRAPHICS_NORMAL ); break; case 31: dmd.drawString( 20,0, "31", 2, GRAPHICS_NORMAL ); break; } }void drawHour() // draws the hour hand { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); if (hour>12) //Remove this if command for 24 hour time { hour=hour-12; // This is a 12 hour Clock } switch(hour) { case 1: dmd.drawString( 0,0, "01", 2, GRAPHICS_NORMAL ); break; case 2: dmd.drawString( 0,0, "02", 2, GRAPHICS_NORMAL ); break; case 3: dmd.drawString( 0,0, "03", 2, GRAPHICS_NORMAL ); break; case 4: dmd.drawString( 0,0, "04", 2, GRAPHICS_NORMAL ); break; case 5: dmd.drawString( 0,0, "05", 2, GRAPHICS_NORMAL ); break; case 6: dmd.drawString( 0,0, "06", 2, GRAPHICS_NORMAL ); break; case 7: dmd.drawString( 0,0, "07", 2, GRAPHICS_NORMAL ); break; case 8: dmd.drawString( 0,0, "08", 2, GRAPHICS_NORMAL ); break; case 9: dmd.drawString( 0,0, "09", 2, GRAPHICS_NORMAL ); break; case 10: dmd.drawString( 0,0, "10", 2, GRAPHICS_NORMAL ); break; case 11: dmd.drawString( 0,0, "11", 2, GRAPHICS_NORMAL ); break; case 12: dmd.drawString( 0,0, "12", 2, GRAPHICS_NORMAL ); break; case 13: dmd.drawString( 0,0, "13", 2, GRAPHICS_NORMAL ); break; case 14: dmd.drawString( 0,0, "14", 2, GRAPHICS_NORMAL ); break; case 15: dmd.drawString( 0,0, "15", 2, GRAPHICS_NORMAL ); break; case 16: dmd.drawString( 0,0, "16", 2, GRAPHICS_NORMAL ); break; case 17: dmd.drawString( 0,0, "17", 2, GRAPHICS_NORMAL ); break; case 18: dmd.drawString( 0,0, "18", 2, GRAPHICS_NORMAL ); break; case 19: dmd.drawString( 0,0, "19", 2, GRAPHICS_NORMAL ); break; case 20: dmd.drawString( 0,0, "20", 2, GRAPHICS_NORMAL ); break; case 21: dmd.drawString( 0,0, "21", 2, GRAPHICS_NORMAL ); break; case 22: dmd.drawString( 0,0, "22", 2, GRAPHICS_NORMAL ); break; case 23: dmd.drawString( 0,0, "23", 2, GRAPHICS_NORMAL ); break; case 24: dmd.drawString( 0,0, "24", 2, GRAPHICS_NORMAL ); break; } }void drawMinute() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(minute) { case 0: dmd.drawString( 12,0, "00", 2, GRAPHICS_NORMAL ); break; case 1: dmd.drawString( 12,0, "01", 2, GRAPHICS_NORMAL ); break; case 2: dmd.drawString( 12,0, "02", 2, GRAPHICS_NORMAL ); break; case 3: dmd.drawString( 12,0, "03", 2, GRAPHICS_NORMAL ); break; case 4: dmd.drawString( 12,0, "04", 2, GRAPHICS_NORMAL ); break; case 5: dmd.drawString( 12,0, "05", 2, GRAPHICS_NORMAL ); break; case 6: dmd.drawString( 12,0, "06", 2, GRAPHICS_NORMAL ); break; case 7: dmd.drawString( 12,0, "07", 2, GRAPHICS_NORMAL ); break; case 8: dmd.drawString( 12,0, "08", 2, GRAPHICS_NORMAL ); break; case 9: dmd.drawString( 12,0, "09", 2, GRAPHICS_NORMAL ); break; case 10: dmd.drawString( 12,0, "10", 2, GRAPHICS_NORMAL ); break; case 11: dmd.drawString( 12,0, "11", 2, GRAPHICS_NORMAL ); break; case 12: dmd.drawString( 12,0, "12", 2, GRAPHICS_NORMAL ); break; case 13: dmd.drawString( 12,0, "13", 2, GRAPHICS_NORMAL ); break; case 14: dmd.drawString( 12,0, "14", 2, GRAPHICS_NORMAL ); break; case 15: dmd.drawString( 12,0, "15", 2, GRAPHICS_NORMAL ); break; case 16: dmd.drawString( 12,0, "16", 2, GRAPHICS_NORMAL ); break; case 17: dmd.drawString( 12,0, "17", 2, GRAPHICS_NORMAL ); break; case 18: dmd.drawString( 12,0, "18", 2, GRAPHICS_NORMAL ); break; case 19: dmd.drawString( 12,0, "19", 2, GRAPHICS_NORMAL ); break; case 20: dmd.drawString( 12,0, "20", 2, GRAPHICS_NORMAL ); break; case 21: dmd.drawString( 12,0, "21", 2, GRAPHICS_NORMAL ); break; case 22: dmd.drawString( 12,0, "22", 2, GRAPHICS_NORMAL ); break; case 23: dmd.drawString( 12,0, "23", 2, GRAPHICS_NORMAL ); break; case 24: dmd.drawString( 12,0, "24", 2, GRAPHICS_NORMAL ); break; case 25: dmd.drawString( 12,0, "25", 2, GRAPHICS_NORMAL ); break; case 26: dmd.drawString( 12,0, "26", 2, GRAPHICS_NORMAL ); break; case 27: dmd.drawString( 12,0, "27", 2, GRAPHICS_NORMAL ); break; case 28: dmd.drawString( 12,0, "28", 2, GRAPHICS_NORMAL ); break; case 29: dmd.drawString( 12,0, "29", 2, GRAPHICS_NORMAL ); break; case 30: dmd.drawString( 12,0, "30", 2, GRAPHICS_NORMAL ); break; case 31: dmd.drawString( 12,0, "31", 2, GRAPHICS_NORMAL ); break; case 32: dmd.drawString( 12,0, "32", 2, GRAPHICS_NORMAL ); break; case 33: dmd.drawString( 12,0, "33", 2, GRAPHICS_NORMAL ); break; case 34: dmd.drawString( 12,0, "34", 2, GRAPHICS_NORMAL ); break; case 35: dmd.drawString( 12,0, "35", 2, GRAPHICS_NORMAL ); break; case 36: dmd.drawString( 12,0, "36", 2, GRAPHICS_NORMAL ); break; case 37: dmd.drawString( 12,0, "37", 2, GRAPHICS_NORMAL ); break; case 38: dmd.drawString( 12,0, "38", 2, GRAPHICS_NORMAL ); break; case 39: dmd.drawString( 12,0, "39", 2, GRAPHICS_NORMAL ); break; case 40: dmd.drawString( 12,0, "40", 2, GRAPHICS_NORMAL ); break; case 41: dmd.drawString( 12,0, "41", 2, GRAPHICS_NORMAL ); break; case 42: dmd.drawString( 12,0, "42", 2, GRAPHICS_NORMAL ); break; case 43: dmd.drawString( 12,0, "43", 2, GRAPHICS_NORMAL ); break; case 44: dmd.drawString( 12,0, "44", 2, GRAPHICS_NORMAL ); break; case 45: dmd.drawString( 12,0, "45", 2, GRAPHICS_NORMAL ); break; case 46: dmd.drawString( 12,0, "46", 2, GRAPHICS_NORMAL ); break; case 47: dmd.drawString( 12,0, "47", 2, GRAPHICS_NORMAL ); break; case 48: dmd.drawString( 12,0, "48", 2, GRAPHICS_NORMAL ); break; case 49: dmd.drawString( 12,0, "49", 2, GRAPHICS_NORMAL ); break; case 50: dmd.drawString( 12,0, "50", 2, GRAPHICS_NORMAL ); break; case 51: dmd.drawString( 12,0, "51", 2, GRAPHICS_NORMAL ); break; case 52: dmd.drawString( 12,0, "52", 2, GRAPHICS_NORMAL ); break; case 53: dmd.drawString( 12,0, "53", 2, GRAPHICS_NORMAL ); break; case 54: dmd.drawString( 12,0, "54", 2, GRAPHICS_NORMAL ); break; case 55: dmd.drawString( 12,0, "55", 2, GRAPHICS_NORMAL ); break; case 56: dmd.drawString( 12,0, "56", 2, GRAPHICS_NORMAL ); break; case 57: dmd.drawString( 12,0, "57", 2, GRAPHICS_NORMAL ); break; case 58: dmd.drawString( 12,0, "58", 2, GRAPHICS_NORMAL ); break; case 59: dmd.drawString( 12,0, "59", 2, GRAPHICS_NORMAL ); break; } }void drawSec() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(second) { case 0: dmd.drawString( 24,0, "00", 2, GRAPHICS_NORMAL ); break; case 1: dmd.drawString( 24,0, "01", 2, GRAPHICS_NORMAL ); break; case 2: dmd.drawString( 24,0, "02", 2, GRAPHICS_NORMAL ); break; case 3: dmd.drawString( 24,0, "03", 2, GRAPHICS_NORMAL ); break; case 4: dmd.drawString( 24,0, "04", 2, GRAPHICS_NORMAL ); break; case 5: dmd.drawString( 24,0, "05", 2, GRAPHICS_NORMAL ); break; case 6: dmd.drawString( 24,0, "06", 2, GRAPHICS_NORMAL ); break; case 7: dmd.drawString( 24,0, "07", 2, GRAPHICS_NORMAL ); break; case 8: dmd.drawString( 24,0, "08", 2, GRAPHICS_NORMAL ); break; case 9: dmd.drawString( 24,0, "09", 2, GRAPHICS_NORMAL ); break; case 10: dmd.drawString( 24,0, "10", 2, GRAPHICS_NORMAL ); break; case 11: dmd.drawString( 24,0, "11", 2, GRAPHICS_NORMAL ); break; case 12: dmd.drawString( 24,0, "12", 2, GRAPHICS_NORMAL ); break; case 13: dmd.drawString( 24,0, "13", 2, GRAPHICS_NORMAL ); break; case 14: dmd.drawString( 24,0, "14", 2, GRAPHICS_NORMAL ); break; case 15: dmd.drawString( 24,0, "15", 2, GRAPHICS_NORMAL ); break; case 16: dmd.drawString( 24,0, "16", 2, GRAPHICS_NORMAL ); break; case 17: dmd.drawString( 24,0, "17", 2, GRAPHICS_NORMAL ); break; case 18: dmd.drawString( 24,0, "18", 2, GRAPHICS_NORMAL ); break; case 19: dmd.drawString( 24,0, "19", 2, GRAPHICS_NORMAL ); break; case 20: dmd.drawString( 24,0, "20", 2, GRAPHICS_NORMAL ); break; case 21: dmd.drawString( 24,0, "21", 2, GRAPHICS_NORMAL ); break; case 22: dmd.drawString( 24,0, "22", 2, GRAPHICS_NORMAL ); break; case 23: dmd.drawString( 24,0, "23", 2, GRAPHICS_NORMAL ); break; case 24: dmd.drawString( 24,0, "24", 2, GRAPHICS_NORMAL ); break; case 25: dmd.drawString( 24,0, "25", 2, GRAPHICS_NORMAL ); break; case 26: dmd.drawString( 24,0, "26", 2, GRAPHICS_NORMAL ); break; case 27: dmd.drawString( 24,0, "27", 2, GRAPHICS_NORMAL ); break; case 28: dmd.drawString( 24,0, "28", 2, GRAPHICS_NORMAL ); break; case 29: dmd.drawString( 24,0, "29", 2, GRAPHICS_NORMAL ); break; case 30: dmd.drawString( 24,0, "30", 2, GRAPHICS_NORMAL ); break; case 31: dmd.drawString( 24,0, "31", 2, GRAPHICS_NORMAL ); break; case 32: dmd.drawString( 24,0, "32", 2, GRAPHICS_NORMAL ); break; case 33: dmd.drawString( 24,0, "33", 2, GRAPHICS_NORMAL ); break; case 34: dmd.drawString( 24,0, "34", 2, GRAPHICS_NORMAL ); break; case 35: dmd.drawString( 24,0, "35", 2, GRAPHICS_NORMAL ); break; case 36: dmd.drawString( 24,0, "36", 2, GRAPHICS_NORMAL ); break; case 37: dmd.drawString( 24,0, "37", 2, GRAPHICS_NORMAL ); break; case 38: dmd.drawString( 24,0, "38", 2, GRAPHICS_NORMAL ); break; case 39: dmd.drawString( 24,0, "39", 2, GRAPHICS_NORMAL ); break; case 40: dmd.drawString( 24,0, "40", 2, GRAPHICS_NORMAL ); break; case 41: dmd.drawString( 24,0, "41", 2, GRAPHICS_NORMAL ); break; case 42: dmd.drawString( 24,0, "42", 2, GRAPHICS_NORMAL ); break; case 43: dmd.drawString( 24,0, "43", 2, GRAPHICS_NORMAL ); break; case 44: dmd.drawString( 24,0, "44", 2, GRAPHICS_NORMAL ); break; case 45: dmd.drawString( 24,0, "45", 2, GRAPHICS_NORMAL ); break; case 46: dmd.drawString( 24,0, "46", 2, GRAPHICS_NORMAL ); break; case 47: dmd.drawString( 24,0, "47", 2, GRAPHICS_NORMAL ); break; case 48: dmd.drawString( 24,0, "48", 2, GRAPHICS_NORMAL ); break; case 49: dmd.drawString( 24,0, "49", 2, GRAPHICS_NORMAL ); break; case 50: dmd.drawString( 24,0, "50", 2, GRAPHICS_NORMAL ); break; case 51: dmd.drawString( 24,0, "51", 2, GRAPHICS_NORMAL ); break; case 52: dmd.drawString( 24,0, "52", 2, GRAPHICS_NORMAL ); break; case 53: dmd.drawString( 24,0, "53", 2, GRAPHICS_NORMAL ); break; case 54: dmd.drawString( 24,0, "54", 2, GRAPHICS_NORMAL ); break; case 55: dmd.drawString( 24,0, "55", 2, GRAPHICS_NORMAL ); break; case 56: dmd.drawString( 24,0, "56", 2, GRAPHICS_NORMAL ); break; case 57: dmd.drawString( 24,0, "57", 2, GRAPHICS_NORMAL ); break; case 58: dmd.drawString( 24,0, "58", 2, GRAPHICS_NORMAL ); break; case 59: dmd.drawString( 24,0, "59", 2, GRAPHICS_NORMAL ); break; } }void drawCol1() { dmd.drawString( 8,0, ":", 1, GRAPHICS_NORMAL ); }void drawCol2() { dmd.drawString( 20,0, ":", 1, GRAPHICS_NORMAL ); }void runClock() { // drawDay(); // drawDate(); drawHour(); drawCol1(); drawMinute(); drawCol2(); drawSec(); // CheckAlarm();}/*void AlarmSequence() { drawDay(); drawDate(); drawHour(); drawCol(); drawMinute(); digitalWrite(Alarm, HIGH); delay(1000); dmd.clearScreen( true ); digitalWrite(Alarm, LOW); delay(1000); } */ /*void CheckAlarm() { AlarmSet = digitalRead(AlarmSetPin); Snooze = digitalRead(SnoozePin); byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);*/ /* Only Trigger Alarm If it is a day listed below. This can be changed by changing the numbers to any of the following: 1 = Sunday 2 = Monday 3 = Tuesday 4 = Wednesday 5 = Thursday 6 = Friday 7 = Saturday */ /* if(dayOfWeek == 2 || dayOfWeek == 3 || dayOfWeek == 4 || dayOfWeek == 5 ||dayOfWeek == 6) { //This is days ALLOWED to ring alarm if(hour == 18 && minute == 05 ) { //Set Time Here (In 24 hour Time) if(AlarmSet == LOW) { //If alarm pin is on Snooze = digitalRead(SnoozePin); while(Snooze == HIGH) { Snooze = digitalRead(SnoozePin); AlarmSequence(); } } } } } */ void loop() { runClock(); }
Features
DMD
- 32 x 16 high brightness Red LEDs (512 LEDs total) with 10mm pitch
- Supports 5V operation
- Viewable over 12 meters away
- Tough plastic frame
- Onboard Controller IC
- Arduino compatible library, graphics functions
RTC
- counts seconds, minutes, hours, and year
- Accuracy: +2ppm to -2ppm for 0ºC to +40ºC, +3.5ppm to -3.5ppm for -40ºC to +85ºC
- Digital temperature sensor with a ±3ºC accuracy
- Two Time-of-day alarmsProgrammable square wave output
- Register for Aging trim400Khz I2C interface
- Low power consumption
- Automatic power failure battery switch circuitry
- CR2032 battery backup with two to three-year life
Working of This Project: Simple Clock
Working of This Project: Clock With Settings
End Note
https://www.youtube.com/channel/UCks-9JSnVb22dlqtMgPjrlg/videosIf you faced any issues in building this project, feel free to ask me. Please do suggest new projects that you want me to do next.
Share this video if you like.
Blog - https://rahulthelonelyprogrammer.blogspot.in/
Github - https://github.com/Rahul24-06
Happy to have you subscribed: https://rahulthelonelyprogrammer.blogspot.in/ Thanks for reading!