Witam
Szukałem i nie znalazłem...
Prośba o wrzucenie gołego kodu na włączanie i wyłączenie X pinu (LED) o określonej godzinie za pomocą RTC DS3231, bez wyświetlaczy i innych bajerów jedynie chciałbym aby była wyświetlana informacja w serial monitor.
Podano na tacy ...... zmodyfikowany kod poniżej
http://www.jarzebski.pl/arduino/komponen...s3231.html
Kod:
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
void setup()
{
Serial.begin(9600);
// Inicjalizacja DS3231
Serial.println("Initialize DS3231");;
clock.begin();
pinMode(10,OUTPUT;) // inicjacja wyjścia 10
pinMode(10,OUTPUT;) // inicjacja wyjścia 11
// Wylaczamy alarmy i resetujemy przerwania do przykladu,
// poniewaz ustawienia sa podtrzymywane bateryjnie
clock.armAlarm1(false);
clock.armAlarm2(false);
clock.clearAlarm1();
clock.clearAlarm2();
// Ustawiamy date (Year, Month, Day, Hour, Minute, Second)
clock.setDateTime(2014, 4, 25, 0, 0, 0);
// Ustawiamy Alarm1 na 20s kazdej minutu z dopasowaniem sekund
// setAlarm1(Date or Day, Hour, Minute, Second, Mode, Armed = true)
clock.setAlarm1(0, 0, 0, 20, DS3231_MATCH_S);
// Usyawiamy Alarm2 - Kazda pierwsza minuta kazdej godziny z dopasowaniem do minut
// setAlarm2(Date or Day, Hour, Minute, Mode, Armed = true)
clock.setAlarm2(0, 0, 1, DS3231_MATCH_M);
}
void loop()
{
// Odczytujemy date
dt = clock.getDateTime();
Serial.println(clock.dateFormat("d-m-Y H:i:s - l", dt));
// Sprawdzamy alaram 1
if (clock.isAlarm1())
{
Serial.println("ALARM 1 TRIGGERED!");
digitalWrite(10,HIGH); // zapala diodę na pinie 10
}
// Sprawdzamy alaram 1
if (clock.isAlarm2())
{
Serial.println("ALARM 2 TRIGGERED!");
digitalWrite(11,HIGH); // zapala diodę na pinie 11
}
delay(1000);
}
a jak ustawić godzinę wyłączenia ?
Kod:
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
void setup()
{
Serial.begin(9600);
// Inicjalizacja DS3231
Serial.println("Initialize DS3231");;
clock.begin();
pinMode(10,OUTPUT); // inicjacja wyjścia 10
pinMode(11,OUTPUT); // inicjacja wyjścia 11
// Wylaczamy alarmy i resetujemy przerwania do przykladu,
// poniewaz ustawienia sa podtrzymywane bateryjnie
clock.armAlarm1(false);
clock.armAlarm2(false);
clock.clearAlarm1();
clock.clearAlarm2();
// Set sketch compiling time
clock.setDateTime(__DATE__, __TIME__);
// Ustawiamy Alarm1 na 20s kazdej minutu z dopasowaniem sekund
// setAlarm1(Date or Day, Hour, Minute, Second, Mode, Armed = true)
clock.setAlarm1(0, 0, 0, 10, DS3231_MATCH_S);
// Usyawiamy Alarm2 - Kazda pierwsza minuta kazdej godziny z dopasowaniem do minut
// setAlarm2(Date or Day, Hour, Minute, Mode, Armed = true)
clock.setAlarm2(0, 0, 1, DS3231_MATCH_M);
}
void loop()
{
// Odczytujemy date
dt = clock.getDateTime();
Serial.println(clock.dateFormat("d-m-Y H:i:s - l", dt));
// Sprawdzamy alaram 1
if (clock.isAlarm1())
{
Serial.println("ALARM 1 TRIGGERED!");
digitalWrite(10,HIGH); // zapala diodę na pinie 10
}
// Sprawdzamy alaram 1
if (clock.isAlarm2())
{
Serial.println("ALARM 2 TRIGGERED!");
digitalWrite(11,HIGH); // zapala diodę na pinie 11
}
delay(1000);
}
Podstawy . To są podstawy panowie .
Kod:
// Sprawdzamy alaram 1
if (clock.isAlarm1())
{
Serial.println("ALARM 1 TRIGGERED!");
digitalWrite(10,HIGH); // zapala diodę na pinie 10
}else{
digitalWrite(10,LOW); // zapala diodę na pinie 10
}
Timer działa (prawie) jak ta lala, dziękuję za podpowiedzi bardzo mi pomogły.
W jaki sposób rozwiązać problem z ustawieniem początkowym zegara, aktualnie jest tak że godzina jest ustawiana wg czasu kompilacji, po restarcie arduino odlicza czas od momentu w którym został wgrany program.
Czy jest możliwość żeby arduino po restarcie zasilania pobierało aktualną faktyczną godzinę z układu RTC , po coś jest ta bateria.
Ta linijka za to odpowiada
clock.setDateTime(2014, 4, 25, 0, 0, 0);
ustaw zegar i wgraj program . Później linijkę skasuj i wgraj jeszcze raz i po restarcie już będziesz miał aktualny czas
albo zrób jak poniżej i wgraj
// clock.setDateTime(2014, 4, 25, 0, 0, 0);
(02-04-2016, 00:41)JasQ napisał(a): [ -> ]Podstawy . To są podstawy panowie .
Kod:
// Sprawdzamy alaram 1
if (clock.isAlarm1())
{
Serial.println("ALARM 1 TRIGGERED!");
digitalWrite(10,HIGH); // zapala diodę na pinie 10
}else{
digitalWrite(10,LOW); // zapala diodę na pinie 10
}
Witam,
Jak ustawić kilka alarmów?
Potrzebowałbym 4.
I jeszcze jeden problem. Potrzebuje włączyć przekaźnik np o 7:00 każdego dnia a wyłączyć o 20:00 każdego dnia.
Drugi przekaźnik uruchomić o 9:00 i wyłączyć o 19:00 każdego dnia.
Trzeci uruchomić jeden sykl serwa.
Czwarty w rezerwie.
Jak spiąć to z zegarem.
(10-03-2018, 17:29)sunortas napisał(a): [ -> ] (02-04-2016, 00:41)JasQ napisał(a): [ -> ]Podstawy . To są podstawy panowie .
Kod:
// Sprawdzamy alaram 1
if (clock.isAlarm1())
{
Serial.println("ALARM 1 TRIGGERED!");
digitalWrite(10,HIGH); // zapala diodę na pinie 10
}else{
digitalWrite(10,LOW); // zapala diodę na pinie 10
}
Witam,
Jak ustawić kilka alarmów?
Potrzebowałbym 4.
I jeszcze jeden problem. Potrzebuje włączyć przekaźnik np o 7:00 każdego dnia a wyłączyć o 20:00 każdego dnia.
Drugi przekaźnik uruchomić o 9:00 i wyłączyć o 19:00 każdego dnia.
Trzeci uruchomić jeden sykl serwa.
Czwarty w rezerwie.
Jak spiąć to z zegarem.
Udało mi się rozwiązać problem bez stosowania alarmów