Ich kann nicht DS3231 RTC zu arbeiten
Habe ich ein DS3231 RTC Modul, und ich bin versucht zu Lesen Zeit, aus der es mit meinem Arduino UNO über I2C. Ich bin mit dem sample-code mit der Bibliothek, aber es scheint nicht zu funktionieren.
Das einzige, was ich raus aus dem serial monitor ist dieser:
20165-85-165 25:165:165
Temperature=254
War ich immer die gleiche Sache mit einer anderen RTC-Modul als auch, und meine Vermutung (was wahrscheinlich nicht stimmt) ist, dass Sie vielleicht überflogen aber es scheint nicht zu sein, einen reset-pin.
#include <DS3231.h>
#include <Wire.h>
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
byte year, month, date, DoW, hour, minute, second;
void setup() {
//Start the I2C interface
Wire.begin();
#define oneTime
#ifdef oneTime
Clock.setSecond(50);//Set the second
Clock.setMinute(59);//Set the minute
Clock.setHour(11); //Set the hour
Clock.setDoW(5); //Set the day of the week
Clock.setDate(31); //Set the date of the month
Clock.setMonth(5); //Set the month of the year
Clock.setYear(13); //Set the year (Last two digits of the year)
#endif
//Start the serial interface
Serial.begin(115200);
}
void ReadDS3231()
{
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print('\n');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print('\n');
}
void loop() {ReadDS3231();delay(1000);}
Dies ist nicht C! Fügen Sie keine C-tag für Arduino-code.
InformationsquelleAutor Ege Feyzıoglu | 2015-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jeden da draußen, der dieses Problem hat, einfach mal versuchen die Batterie zu wechseln.
Kaufte ich einen neuen DS3231-Modul und es funktionierte nicht vom Tag null. Ich bekomme seltsame Daten und null für die temperture. Wenn ich es geschafft richtig zu Lesen, das Datum, war Es nicht gehalten. Ich habe versucht, alle Bibliotheken, die ich finden konnte, vergeblich.
Ich änderte die Batterie und alles funktioniert jetzt.
InformationsquelleAutor KLiFF
Welche pins du verbinden? Ich hatte das gleiche Problem, bis ich die Verbindung von RTC SDA und SCL zu Arduino ist SDA und SCL jeweils. Je nach Modell sind diese pins 20 und 21 auf der Mega2560, 19 und 18, die auf einem Micro....
InformationsquelleAutor Gabi
Habe das gleiche problem hier, es stellt sich heraus, dass die DS3231 Kommunikation bekommen können unsynchronised mit dem mikrocontroller durch verschiedene Ereignisse. Scheint, wie die kryptische Ausgabe kommt, dass, zumindest hier Debuggen mit einem DS3231 verbunden mit einem ESP8266 Arduino.
Folgenden die Datenblatt Spezifikation:
Inspiriert und auf Ihrer offiziellen Anwendung: 3506
Mit dem ESP8266 und mit Ihren I2C-Implementierung. Erhalten Sie Makros Funktionen, wie den Zugriff auf die SDA-und SCL-pins bitweise. Hier ist eins umgesetzt reset-Funktion auf der Grundlage der offiziellen Beispiel für den 8051.
Dies gut funktioniert und scheint das problem zu lösen
Eine weitere einfache Lösung wäre die Berufung
Wire.status()
scheint es auch zu funktionieren.Ich bin mir nicht sicher, ob für alle Fälle. Diese Methode tut Prüfungen für den status und für einen Fall es fordert
twi_write_start()
die hat einige ähnlichkeiten mit der FunktionresetRTC()
oben.In Fall, dass Sie umsetzen wollen, eine ähnliche Funktion für das ATMEL Arduino, werden Sie brauchen, um sich in die bitweisen Umsetzung zu manipulieren, SDA und SCL auf Arduino-I2C-core.
InformationsquelleAutor cal_br_mar
Verwenden : Serial.begin(9600); /eine andere baud-rate statt Seriell.begin(115200);
InformationsquelleAutor Clebarin Miforn