I have had trouble finding help with changing time on a RTC with a few buttons (Set, Hour, Min). I am making a large scale clock with Arduino Mega 2560. I have most everything set up except for the being able to change the time on the clock without having to reconnect it to the computer. I am also working on calling each minute, but have been trying to figure out the time change issue.
#include <Wire.h>
#include "RTClib.h"
#include <Charlieplex.h>
#define NUMBER_OF_PINS 10
byte pins[] = {2,3,4,5,6,7,8,9,10,11};
Charlieplex charlieplex = Charlieplex(pins,NUMBER_OF_PINS);
charliePin led1 = { 0 , 9 }; //HOUR 1 (led1 is indicated by current flow from 1 to 10)
charliePin led2 = { 1 , 9 }; //HOUR 2
charliePin led3 = { 2 , 9 }; //HOUR 3
charliePin led4 = { 3 , 9 }; //HOUR 4
charliePin led5 = { 4 , 9 }; //HOUR 5
charliePin led6 = { 5 , 9 }; //HOUR 6
charliePin led7 = { 6 , 9 }; //HOUR 7
charliePin led8 = { 7 , 9 }; //HOUR 8
charliePin led9 = { 8 , 9 }; //HOUR 9
charliePin led10 = { 9 , 8 }; //HOUR 10
charliePin led11 = { 0 , 8 }; //HOUR 11
charliePin led12 = { 1 , 8 }; //HOUR 12
//1mins
charliePin led13 = { 2 , 8 }; //MIN 1
charliePin led14 = { 3 , 8 }; //MIN 2
charliePin led15 = { 4 , 8 }; //MIN 3
charliePin led16 = { 5 , 8 }; //MIN 4
charliePin led17 = { 6 , 8 }; //MIN 5
charliePin led18 = { 7 , 8 }; //MIN 6
charliePin led19 = { 8 , 7 }; //MIN 7
charliePin led20 = { 9 , 7 }; //MIN 8
charliePin led21 = { 0 , 7 }; //MIN 9
//10mins
charliePin led22 = { 1 , 7 }; //MIN 10
charliePin led23 = { 2 , 7 }; //MIN 11
charliePin led24 = { 3 , 7 }; //MIN 12
charliePin led25 = { 4 , 7 }; //MIN 13
charliePin led26 = { 5 , 7 }; //MIN 14
charliePin led27 = { 6 , 7 }; //MIN 15
charliePin led28 = { 7 , 6 }; //MIN 16
charliePin led29 = { 8 , 6 }; //MIN 17
charliePin led30 = { 9 , 6 }; //MIN 18
charliePin led31 = { 0 , 6 }; //MIN 19
//20mins
charliePin led32 = { 1 , 6 }; //MIN 20
charliePin led33 = { 2 , 6 }; //MIN 21
charliePin led34 = { 3 , 6 }; //MIN 22
charliePin led35 = { 4 , 6 }; //MIN 23
charliePin led36 = { 5 , 6 }; //MIN 24
charliePin led37 = { 6 , 5 }; //MIN 25
charliePin led38 = { 7 , 5 }; //MIN 26
charliePin led39 = { 8 , 5 }; //MIN 27
charliePin led40 = { 9 , 5 }; //MIN 28
charliePin led41 = { 0 , 5 }; //MIN 29
//30mins
charliePin led42 = { 1 , 5 }; //MIN 30
charliePin led43 = { 2 , 5 }; //MIN 31
charliePin led44 = { 3 , 5 }; //MIN 32
charliePin led45 = { 4 , 5 }; //MIN 33
charliePin led46 = { 5 , 4 }; //MIN 34
charliePin led47 = { 6 , 4 }; //MIN 35
charliePin led48 = { 7 , 4 }; //MIN 36
charliePin led49 = { 8 , 4 }; //MIN 37
charliePin led50 = { 9 , 4 }; //MIN 38
charliePin led51 = { 0 , 4 }; //MIN 39
//40mins
charliePin led52 = { 1 , 4 }; //MIN 40
charliePin led53 = { 2 , 4 }; //MIN 41
charliePin led54 = { 3 , 4 }; //MIN 42
charliePin led55 = { 4 , 3 }; //MIN 43
charliePin led56 = { 5 , 3 }; //MIN 44
charliePin led57 = { 6 , 3 }; //MIN 45
charliePin led58 = { 7 , 3 }; //MIN 46
charliePin led59 = { 8 , 3 }; //MIN 47
charliePin led60 = { 9 , 3 }; //MIN 48
charliePin led61 = { 0 , 3 }; //MIN 49
//50mins
charliePin led62 = { 1 , 3 }; //MIN 50
charliePin led63 = { 2 , 3 }; //MIN 51
charliePin led64 = { 3 , 2 }; //MIN 52
charliePin led65 = { 4 , 2 }; //MIN 53
charliePin led66 = { 5 , 2 }; //MIN 54
charliePin led67 = { 6 , 2 }; //MIN 55
charliePin led68 = { 7 , 2 }; //MIN 56
charliePin led69 = { 8 , 2 }; //MIN 57
charliePin led70 = { 9 , 2 }; //MIN 58
charliePin led71 = { 0 , 2 }; //MIN 59
//00mins
charliePin led72 = { 1 , 2 }; //MIN 00
RTC_DS1307 RTC;
boolean singleOn = true;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
if (singleOn){ charlieplex.clear(); }
if (now.minute() == 0) {
charlieplex.charlieWrite(led1,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led2,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led3,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led4,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led5,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led6,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led7,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led8,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led9,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led10,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led11,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led12,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led1,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led2,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led3,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led4,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led5,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led6,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led7,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led8,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led9,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led10,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led11,HIGH);
delay(50);charlieplex.clear();
charlieplex.charlieWrite(led12,HIGH);
delay(50);charlieplex.clear();
}
if (now.hour() == 1) {
charlieplex.charlieWrite(led1,HIGH);
Serial.println("led1");
}
if (now.hour() == 2) {
charlieplex.charlieWrite(led2,HIGH);
Serial.println("led2");
}
if (now.hour() == 3) {
charlieplex.charlieWrite(led3,HIGH);
Serial.println("led3");
}
if (now.hour() == 4) {
charlieplex.charlieWrite(led4,HIGH);
Serial.println("led4");
}
if (now.hour() == 5) {
charlieplex.charlieWrite(led5,HIGH);
Serial.println("led5");
}
if (now.hour() == 6) {
charlieplex.charlieWrite(led6,HIGH);
Serial.println("led6");
}
if (now.hour() == 7) {
charlieplex.charlieWrite(led7,HIGH);
Serial.println("led7");
}
if (now.hour() == 8) {
charlieplex.charlieWrite(led8,HIGH);
Serial.println("led8");
}
if (now.hour() == 9) {
charlieplex.charlieWrite(led9,HIGH);
Serial.println("led9");
}
if (now.hour() == 10) {
charlieplex.charlieWrite(led10,HIGH);
Serial.println("led10");
}
if (now.hour() == 11) {
charlieplex.charlieWrite(led11,HIGH);
Serial.println("led11");
}
if (now.hour() == 12) {
charlieplex.charlieWrite(led12,HIGH);
Serial.println("led12");
}
//24 Hour Clock
if (now.hour() == 13) {
charlieplex.charlieWrite(led1,HIGH);
Serial.println("led1");
}
if (now.hour() == 14) {
charlieplex.charlieWrite(led2,HIGH);
Serial.println("led2");
}
if (now.hour() == 15) {
charlieplex.charlieWrite(led3,HIGH);
Serial.println("led3");
}
if (now.hour() == 16) {
charlieplex.charlieWrite(led4,HIGH);
Serial.println("led4");
}
if (now.hour() == 17) {
charlieplex.charlieWrite(led5,HIGH);
Serial.println("led5");
}
if (now.hour() == 18) {
charlieplex.charlieWrite(led6,HIGH);
Serial.println("led6");
}
if (now.hour() == 19) {
charlieplex.charlieWrite(led7,HIGH);
Serial.println("led7");
}
if (now.hour() == 20) {
charlieplex.charlieWrite(led8,HIGH);
Serial.println("led8");
}
if (now.hour() == 21) {
charlieplex.charlieWrite(led9,HIGH);
Serial.println("led9");
}
if (now.hour() == 22) {
charlieplex.charlieWrite(led10,HIGH);
Serial.println("led10");
}
if (now.hour() == 23) {
charlieplex.charlieWrite(led11,HIGH);
Serial.println("led11");
}
if (now.hour() == 0) {
charlieplex.charlieWrite(led12,HIGH);
Serial.println("led12");
}
delay(1000);
singleOn=!singleOn;
}