Arduino + RTC + Hブリッジで行けそうかと思っております。
とり合えず書いたスケッチを。
#include <DS3232RTC.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
const char *weekStr[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
const int DIN_PIN = 8;
void setup() {
// use pins for pulse
pinMode(DIN_PIN, INPUT_PULLUP );
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
///// 時刻の設定 /////
// 時刻設定時のみ以下2行のコメントアウト(//)する
// setTime(12, 26, 30, 14, 1, 2022); // 時,分,秒,日,月,年の順で設定
// RTC.set(now());
setSyncProvider(RTC.get);
lcd.init();
lcd.backlight();
}
void loop() {
int value;
value = digitalRead( DIN_PIN );
//早送りモードの条件 pin8をアースに落とす 5秒で2パルス
if (value == LOW) {
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay (2000);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay(1000);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay (2000);
lcd.init();
lcd.setCursor(0, 0);
lcd.print("FORWARD>>>");
} else
//以下通常時計動作
{
lcd.setCursor(0, 0);
lcd.print(year());
lcd.print("/");
if (month() < 10) {
lcd.print("0");
}
lcd.print(month());
lcd.print("/");
if (day() < 10) {
lcd.print("0");
}
lcd.print(day());
lcd.print(" ");
lcd.print(weekStr[weekday() - 1]);
lcd.setCursor(0, 1);
if (hour() < 10) {
lcd.print("0");
}
lcd.print(hour());
lcd.print(":");
if (minute() < 10) {
lcd.print("0");
}
lcd.print(minute());
lcd.print(":");
if (second() < 10) {
lcd.print("0");
}
lcd.print(second());
//秒数が 0,1秒、30,31秒のときだけpin 6,7出力する。(パルス幅2秒)
if (second() == 30 || second() == 31) {
digitalWrite(6, HIGH);
} else
digitalWrite(6, LOW);
if (second() == 0 || second() == 1) {
digitalWrite(7, HIGH);
} else
digitalWrite(7, LOW);
delay(1000); // 1秒でループ
}
}
とりあえずブレッドボードで動作確認。