Hallo,
ich mache zZ meine ersten Versuche damit, das Uhren-IC DS1307 zu testen und habe in dem folgenden Sketch einen Fehler, den ich nicht verstehe:
Ich möchte erreichen, dass die Zeit für die LOOP entweder von den vor dem SETUP definierten Werten Sekunden bis Jahr übernommen wird, oder von der Zeit, die das Uhren-IC aktuell hat.
Dazu gebe ich vom SM in den ersten 5 s nach Programmstart entweder ein "j" oder ein "n" ein, was in die Variable "Zeit_einlesen" übernommen wird.
Schreibe ich in die Zeile 47 "if (Zeit_einlesen == "j")" , was ich für richtig halte, dann wird der anschließende Programmteil nicht durchlaufen ("Zeit_einlesen 2 = ....." wird nicht ausgegeben), obwohl unmittelbar vorher "Zeit_einlesen 1 = j" ausgegeben wird.
Schreibe ich in die Zeile 47 "if (Zeit_einlesen = "j")" , was ich für falsch halte, dann wird der anschließende Programmteil durchlaufen ("Zeit_einlesen 2 = j" wird ausgegeben). Dabei ist es egal, ob ich ein j oder ein n schicke.
Wo ist da der Wurm drin?
vG
fredyxx
Code:/* Mit diesem Programm wird das Uhren - IC getestet */ #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #else #include "WProgramm.h" #endif #include <Wire.h> #include <DS1307.h> int Sekunden = 1; // Vorgaben für den Durchlauf von SETUP int Minuten = 1; int Stunden = 1; int Tag_der_Woche = 1; // Mo = 1; Di = 2 int Tag = 1; int Monat = 1; int Jahr = 17; String Zeit_einlesen; void setup() { Serial.begin(9600); // Serielle SS für Ausgabe while (!Serial) { // wait for serial port to connect. Needed for native USB port only } // >>>> Ende while delay(5000); // 5 Sekunden lang Zeit für die Eingabe j oder n Serial.println (""); Serial.println (" j = Zeit aus dem Programm uebernehmen; n = Zeit vom Uhren-IC"); Serial.println (""); Zeit_einlesen = Serial.readString(); // Serial.print("Zeit_einlesen 1 = "); Serial.println(Zeit_einlesen); if (Zeit_einlesen == "j") { Serial.print("Zeit_einlesen 2 = "); Serial.println(Zeit_einlesen); RTC.stop(); RTC.set(DS1307_SEC, Sekunden); // Sekunden setzen RTC.set(DS1307_MIN, Minuten); // Minuten setzen RTC.set(DS1307_HR, Stunden); // Stunden setzen RTC.set(DS1307_DOW, Tag_der_Woche); // Tag der Woch setzen RTC.set(DS1307_DATE, Tag); // Datum Tag setzen RTC.set(DS1307_MTH, Monat); // Datum Monat setzen RTC.set(DS1307_YR, Jahr); // Datum Jahr setzen RTC.start(); } // >>>> Ende if (Zeit_einlesen == "j") } // >>>> Ende Setup void loop() { // Daten vom Uhrenbaustein lesen Serial.print(RTC.get(DS1307_HR, true)); Serial.print(":"); Serial.print(RTC.get(DS1307_MIN, false)); Serial.print(":"); Serial.print(RTC.get(DS1307_SEC, false)); Serial.print(" "); Serial.print(RTC.get(DS1307_DATE, false)); Serial.print("/"); Serial.print(RTC.get(DS1307_MTH, false)); Serial.print("/"); Serial.print(RTC.get(DS1307_YR, false)); Serial.println(); if ( RTC.get(DS1307_SEC, false) == 30) { Serial.println("JA"); // gibt immer bei 30 Sekunden ein JA aus!! } delay(1000); // 1 Sekunde warten }







Zitieren


Lesezeichen