Grüße ins Forum,
ich benötige eure Hilfe bei folgendem DS3231 Alarm Sketch:
#include <RTClib.h>
RTC_DS3231 rtc;
#define CLOCK_INTERRUPT_PIN 2
volatile bool alarm = false;
const int ledPin = 12;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
if(!rtc.begin()) {
Serial.println("Couldn't find RTC!");
Serial.flush();
abort();
}
if(rtc.lostPower()) {
rtc.adjust(DateTime(2022, 1, 1, 00,00,00));
}
rtc.disable32K();
pinMode(CLOCK_INTERRUPT_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CLOCK_INTERRUPT_PIN), onAlarm, FALLING);
rtc.clearAlarm(1);
rtc.clearAlarm(2);
rtc.writeSqwPinMode(DS3231_OFF);
DateTime alarmTime (2022, 1, 2, 0, 0, 20);
rtc.setAlarm1(alarmTime, DS3231_A1_Hour);
Serial.print("Current time: ");
printTime();
Serial.println();
DateTime alarmTime2 (2022, 1, 2, 4, 0, 0);
rtc.setAlarm2(alarmTime2, DS3231_A2_Hour);
Serial.print("Current time: ");
printTime();
Serial.println();
}
void loop() {
if(alarm){
if(rtc.alarmFired(1)) {
Serial.println("Alarm occured, current time: ");
printTime();
rtc.clearAlarm(1);
Serial.println("Alarm 1 cleared");
digitalWrite (ledPin, HIGH);
delay (2000);
digitalWrite (ledPin, LOW);
}
if(rtc.alarmFired(2)) {
Serial.println("Alarm occured, current time: ");
printTime();
rtc.clearAlarm(2);
Serial.println("Alarm 2 cleared");
digitalWrite (ledPin, HIGH);
delay (2000);
digitalWrite (ledPin, LOW);
}
}
}
void printTime(){
// print current time
DateTime now = rtc.now();
char date[] = "DD.MM.YYYY, ";
Serial.print(now.toString(date));
char time[] = "hh:mm:ss";
rtc.now().toString(time);
Serial.println(time);
}
void onAlarm() {
alarm = true;
}
Den Sketch habe ich gut hinbekommen, jetzt möchte ich die Startzeit/Zeile 15(00.00.00) mittels eines Poti`s verstellen können. Poti deshalb, weil ich da eine Skala aufkleben kann, wo man die eingestellte Zeit ablesen kann. Weil ich kein Display verbauen möchte. Linker Anschlag 0Uhr rechter Anschlag 12Uhr/oder umgekehrt. Es sollte in 15 Min Schritten gehen, sprich 48 Schritte(00.00-00.15-00.30 etc.). Datum spielt keine Rolle/auch die Genauigkeit der Zeit steht nicht im Vordergrund. Wenn der Arduino/DS3231(ohne Pufferakku) mit Strom versorgt wird, soll ab der eingestellten Uhrzeit loslaufen.
Drehreglerwert=analogRead(Drehregler);
Drehreglerwert=map(Drehreglerwert, 0,1023,0,48);
Wie bekomme ich den „Drehreglerwert“(0-48) in eine Zeit umgewandelt und wie bekomme ich dann den Wert an die richtige Stelle?
Hat da jemand eine Idee? Ich bin eher der "Hardwarebasteler" als Programmierer.