Forum: Mikrocontroller und Digitale Elektronik DS3231 led ansteuern im realen zeit


von Hjhgf O. (hjhgf_o)


Lesenswert?

Hallo

Habe ein DS3231 gekauft und an einem arduino uno angeschlossen

Die zeite habe ich eingestellt und das serial monitor zeigt mir den die 
richtige zeit

hier ist der code
1
// during an alarm the INT pin of the RTC is pulled low
2
//
3
// this is handy for minimizing power consumption for sensor-like devices, 
4
// since they can be started up by this pin on given time intervals.
5
6
#include <Wire.h>
7
#include "ds3231.h"
8
9
#define BUFF_MAX 256
10
11
// time when to wake up
12
uint8_t wake_HOUR = 15;
13
uint8_t wake_MINUTE = 49;
14
uint8_t wake_SECOND = 9;
15
16
// how often to refresh the info on stdout (ms)
17
unsigned long prev = 5000, interval = 5000;
18
19
void set_alarm(void)
20
{
21
22
    // flags define what calendar component to be checked against the current time in order
23
    // to trigger the alarm - see datasheet
24
    // A1M1 (seconds) (0 to enable, 1 to disable)
25
    // A1M2 (minutes) (0 to enable, 1 to disable)
26
    // A1M3 (hour)    (0 to enable, 1 to disable) 
27
    // A1M4 (day)     (0 to enable, 1 to disable)
28
    // DY/DT          (dayofweek == 1/dayofmonth == 0)
29
    uint8_t flags[5] = { 0, 0, 0, 1, 1 };
30
31
    // set Alarm1
32
    DS3231_set_a1(wake_SECOND, wake_MINUTE, wake_HOUR, 0, flags);
33
34
    // activate Alarm1
35
    DS3231_set_creg(DS3231_INTCN | DS3231_A1IE);
36
}
37
38
void setup()
39
{
40
    Serial.begin(9600);
41
    Wire.begin();
42
    DS3231_init(DS3231_INTCN);
43
    DS3231_clear_a1f();
44
    set_alarm();
45
46
}
47
48
void loop()
49
{
50
    char buff[BUFF_MAX];
51
    unsigned long now = millis();
52
    struct ts t;
53
54
    // once a while show what is going on
55
    if ((now - prev > interval) && (Serial.available() <= 0)) {
56
        DS3231_get(&t);
57
58
        // display current time
59
        snprintf(buff, BUFF_MAX, "%d.%02d.%02d %02d:%02d:%02d", t.year,
60
             t.mon, t.mday, t.hour, t.min, t.sec);
61
        Serial.println(buff);
62
63
        // display a1 debug info
64
        DS3231_get_a1(&buff[0], 59);
65
        Serial.println(buff);
66
67
        if (DS3231_triggered_a1()) {
68
            // INT has been pulled low
69
            Serial.println(" -> alarm1 has been triggered");
70
            // clear a1 alarm flag and let INT go into hi-z
71
            DS3231_clear_a1f();
72
        }
73
        prev = now;
74
    }
75
}


ich will einfach ein led in bestimmte zeit an und ausschalten

zb das anfang soll um 00uhr nachts sein .dann soll das led jede 30sec 
leuchten und 300ms delay und das in undless loop.

danke euch

: Bearbeitet durch Moderator
von Klugscheisser (Gast)


Lesenswert?

Wichtige Regeln - erst lesen, dann posten!

Forum: Projekte & Code
Hier könnt ihr eure Projekte, Schaltungen oder Codeschnipsel vorstellen 
und diskutieren. Bitte hier keine Fragen posten!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hjhgf O. schrieb:
> hier ist der code
Bitte einfach mal die BEDIENUNGSANLEITUNG lesen. Die steht über jeder 
Eingabebox. Hier mal eine Reduzierung auf das, was hier (abgesehen vom 
falschen Forum!) gerade nötig ist:
1
Antwort schreiben
2
Wichtige Regeln - erst lesen, dann posten!
3
4
    Groß- und Kleinschreibung verwenden
5
    Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
6
7
Formatierung (mehr Informationen...)
8
9
    [c]C-Code[/c]

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.