EDIT: Als Fazit kam raus es lag am Gerät die DS1307 ist wohl insgesamt unbeliebt und ich wechsele zur DS3231
Hallo liebes Forum,
nach benutzen der SUFU wende ich mich mit folgendem Problem an euch:
Ich verwende einen Datalogger shield für Arduino UNO, spricht ein shield mit SD-Slot und DS1307 RTC.
Mit ach und Krach habe ich mir einen Code zusammen gewurstet. Jetzt stehe ich vor dem Problem dass a) wenn ich die SD-Karte auslese merke dass alle geraden oder ungeraden Stunden fehlen, obwohl während jeder Stunde 6 Messungen passieren sollten.
b) Zusätzlich dazu hängt sich der MC hin und wieder auf und das LCD zeigt nur koreanische Nudelrezepte an.
Nach betätigen des Resetbuttons stimmen die Werte wieder, nur die Uhr geht danach falsch.
Normalerweise beeinflusst der reset die Uhr nicht. Also: was auch immer den Aufhänger verursacht brät auch die Uhr.
Hier könnt natürlich auch die Verkabelung mitspielen da sich dieses Arduino eine Stromquelle mit einem anderen Arduino teilt der 2 Relais schaltet. Ich wüsste allerdings nicht inwiefern das die Uhr beinflussen sollte.
Ich stell mal den Code hoch und falls für euch relevant skizzier ich die Schaltung auch gerne.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include <Time.h>
File dataFile ;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
OneWire oneWire(8);
DallasTemperature sensors(&oneWire);
#define TEMPERATURE_PRECISION 9
DeviceAddress sensor1 = {0x28,0x6C,0xE4,0x3A,0x06,0x00,0x00,0xE7}; //SumpfL
DeviceAddress sensor2 = {0x28,0x54,0x99,0xDD,0x06,0x00,0x00,0xE5}; //SumpfR
DeviceAddress sensor3 = {0x28,0xFF,0xA6,0x45,0x66,0x14,0x01,0x7B}; //TankL
DeviceAddress sensor4 = {0x28,0xFF,0xA8,0x8B,0x54,0x14,0x00,0x3A}; //TankR
DeviceAddress sensor5 = {0x28,0xFF,0x8A,0x50,0x73,0x04,0x00,0xD6}; //Boden
DeviceAddress sensor6 = {0x28,0xDD,0x59,0x39,0x06,0x00,0x00,0xFC}; // Luft
DeviceAddress sensor7 = {0x28,0x43,0x97,0x39,0x06,0x00,0x00,0xDE}; //Aussen
const int chipSelect = 10;
void setup(void) {
Serial.begin(9600);
sensors.begin();
lcd.begin(16, 2);
Wire.begin();
pinMode(10, OUTPUT);
SD.begin(chipSelect);
}
void loop(void) {
sensors.requestTemperatures();
float temp1 = sensors.getTempC(sensor1);
float temp2 = sensors.getTempC(sensor2);
float temp3 = sensors.getTempC(sensor3);
float temp4 = sensors.getTempC(sensor4);
float temp5 = sensors.getTempC(sensor5);
float temp6 = sensors.getTempC(sensor6);
float temp7 = sensors.getTempC(sensor7);
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
Serial.print(tm.Hour);
Serial.write(':');
Serial.print(tm.Minute);
Serial.write(':');
Serial.print(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
}else {Serial.print("Fehler");}
if (tm.Minute %10 ==5)
{
File dataFile = SD.open("data2015.txt", FILE_WRITE);
Serial.print(tm.Hour);
Serial.write(':');
Serial.print(tm.Minute);
Serial.write(':');
Serial.print(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
Serial.println ("Logging...");
dataFile.print(tmYearToCalendar(tm.Year));
dataFile.print('/');
dataFile.print(tm.Month);
dataFile.print('/');
dataFile.print(tm.Day);
dataFile.print(' ');
dataFile.print(tm.Hour-1);
dataFile.print(':');
dataFile.print(tm.Minute);
dataFile.print(':');
dataFile.print(tm.Second);
dataFile.print(" ");
dataFile.print("Sumpf Links ");
dataFile.print(temp1);
dataFile.print(" ");
dataFile.print("Sumpf Rechts ");
dataFile.print(temp2);
dataFile.print(" ");
dataFile.print("Tank Links ");
dataFile.print(temp3);
dataFile.print(" ");
dataFile.print("Tank Rechts ");
dataFile.print(temp4);
dataFile.print(" ");
dataFile.print("Boden ");
dataFile.print(temp5);
dataFile.print(" ");
dataFile.print("Luft");
dataFile.print(temp6);
dataFile.print(" ");
dataFile.print("Aussen ");
dataFile.print(temp7);
dataFile.println(" ");
dataFile.close();
delay(50000);
}
lcd.setCursor(0, 0);
lcd.print("SL ");
lcd.print(temp1);
lcd.print(" SR ");
lcd.print(temp2);
lcd.setCursor(0, 1);
lcd.print("TL ");
lcd.print(temp3);
lcd.print(" TR ");
lcd.print(temp4);
delay(3500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("B ");
lcd.print(temp5);
lcd.print(" L ");
lcd.print(temp6);
lcd.setCursor(0, 1);
lcd.print("A ");
lcd.print(temp7);
lcd.print(" RH ");
lcd.print("x");
delay(3500);
lcd.print(tm.Hour);
lcd.print(":");
lcd.print(tm.Minute);
lcd.print(":");
lcd.print(tm.Second);
delay(3000);
lcd.clear();
}