Hello,
I've build a simple clock with LCD display and RTC1302 module. I want my clock to display time for a minute and then text for another one (actually it is a text combined with a timer). It is supposed to change with the :00 in seconds timer. I thought it would be easy to code it, but I'm encountering some difficulties. I've tried to learn the millis function or changing the value on delay function, but each time either the clock stops or the whole text disappears. For now it just changes with each second. I'm a super newbie and it might be a very easy question, but would be really grateful for the explanation.
Second task is a bit more unusual. I consider it a next step after figuring out the timeline issue. I want to display something that pretends to be a glitch, so as I have the following format for time: HH:MM:SS (in sprintf function %02:%02:%02), I want to change it to: (letter)H:M(letter):SS. The letter would be constant, but I just want the first digit from hours and second digit from minutes. Is that even possible? Just an aesthetic choice, nothing functional.
#include "virtuabotixRTC.h"//Library used
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
virtuabotixRTC myRTC(2, 3, 4); //The order here is DAT,CLK,RST. You can change this depending on the wiring
char timeChar [8]; //number of digits for the format
const unsigned long eventInterval = 60000;
unsigned long previousTime = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
// Set the current date, and time in the following format:
// seconds, minutes, hours, day of the week, day of the month, month, year
//myRTC.setDS1302Time(00, 02, 13, 2, 7, 12, 2021); //Here you write your actual time/date as shown above
//but remember to "comment/remove" this function once you're done
//The setup is done only one time and the module will continue counting it automatically
}
void loop() {
myRTC.updateTime();
// Start printing elements as individuals
lcd.setCursor(6,0);
lcd.print("TIME");
lcd.setCursor(4,1);
sprintf(timeChar, "%02d:%02d:%02d",myRTC.hours, myRTC.minutes, myRTC.seconds);
lcd.print(timeChar);
delay(1000);
lcd.setCursor(6,0);
lcd.print("TIME");
lcd.setCursor(4,1);
sprintf(timeChar, "D0:0M:%02d", myRTC.seconds);
lcd.print(timeChar);
delay(1000);
}