Hi Heren,
Dank voor de input, maar dit is toch niet helemaal waar ik hulp mee vraag.
Wat betreft de slaap modi van de processor, daar ben ik mee bekend,
ook wat betreft het uitschakelen van allerlij onderdelen om het stroomverbruik nog lager te krijgen.
Titatommeke, ik sla in ieder geval je stukje code op voor de slaap modus om te kijken of ik dit later kan toepassen.
Het laagste verbruik is voor mijn reisreferentie niet super belangrijk,
dit omdat het stroomverbruik van het oventje dat daarin zit, dominant is wat energieverbruik betreft.
Maar het gaat om het programmeren van de DS3231, daar kom/kwam ik niet uit.(ik ben geen software schrijver)
Wat ik wel al weet is dit.
Er is "standaard" een 1HZ signaal op die uitgang aanwezig, en dit moet worden uitgezet.
In de setup moeten de twee alarm functie worden gereset, voor dat deze weer worden ingesteld.
Ondertussen het ik nog een Library gevonden waar de functies die ik nodig heb in zijn verwerkt.
Dus ik ga daar in de loop van de dag eens mee testen.
Het gaat om deze: https://github.com/JChristensen/DS3232RTC
Je kan de uitgang als alarm gebruiken, maar als je hem wilt gebruiken als Interrupt voor een microcontroler
dan zit naar een speciale functie voor in de library.
Dit is een van de voorbeelden die bij de Library zit en waar ik mee ga testen.
c code:
#include <DS3232RTC.h> // https://github.com/JChristensen/DS3232RTC
#include <Streaming.h> // http://arduiniana.org/libraries/streaming/
const uint8_t alarmInput(2);
void setup()
{
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
RTC.setAlarm(ALM1_MATCH_DATE, 0, 0, 0, 1);
RTC.setAlarm(ALM2_MATCH_DATE, 0, 0, 0, 1);
RTC.alarm(ALARM_1);
RTC.alarm(ALARM_2);
RTC.alarmInterrupt(ALARM_1, false);
RTC.alarmInterrupt(ALARM_2, false);
RTC.squareWave(SQWAVE_NONE);
tmElements_t tm;
tm.Hour = 00;
tm.Minute = 00;
tm.Second = 00;
tm.Day = 16;
tm.Month = 9;
tm.Year = 2017 - 1970;
RTC.write(tm);
RTC.setAlarm(ALM1_MATCH_SECONDS, 5, 0, 0, 0);
RTC.alarm(ALARM_1);
RTC.squareWave(SQWAVE_NONE);
RTC.alarmInterrupt(ALARM_1, true);
Serial << millis() << " Start ";
printDateTime(RTC.get());
Serial << endl;
}
void loop()
{
if ( !digitalRead(alarmInput) )
{
RTC.alarm(ALARM_1);
Serial << millis() << " ALARM_1 ";
printDateTime(RTC.get());
Serial << endl;
}
}
void printDateTime(time_t t)
{
Serial << ((day(t)<10) ? "0" : "") << _DEC(day(t));
Serial << monthShortStr(month(t)) << _DEC(year(t)) << ' ';
Serial << ((hour(t)<10) ? "0" : "") << _DEC(hour(t)) << ':';
Serial << ((minute(t)<10) ? "0" : "") << _DEC(minute(t)) << ':';
Serial << ((second(t)<10) ? "0" : "") << _DEC(second(t));
}
In ieder geval bedankt voor de input en ik zal laten zien wat ik ga gebruiken als ik de code zo krijg ingesteld
zoals voor mijn projecten nodig is.
Of als ik vastloop vraag ik weer wat...
Groet,
Bram