For my project, I am reading the hour and minute of the DS3231 RTC. The hour and time are in "now.minute()" and "now.hour()". I need to go from those variables to digitalWrites on output pins. The following code works, but is very inefficient. (Note that my output actually needs to be the inverse of the BCD digital value in those variables - ie "0000" is actually "HIGH-HIGH-HIGH-HIGH".) If I used this method, I would have 60 entries for minutes and 12 entries for hours. There has to be a slicker way to do this. Any suggestions?
// Minutes :00 => 0000 0000
if(now.minute() == 0){
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
// Minutes :01 => 0000 0001
if(now.minute() == 1){
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
// Minutes :02 => 0000 0010
if(now.minute() == 2){
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
// Minutes :03 => 0000 0011
if(now.minute() == 3){
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}