Hallo, ich bin ein Arduino Neuling und hab in meinem Sketch einige Fehler die ich nicht verstehe.
Ich denke es ist nichts großes, aber ich seh den Wald vor lauter Bäumen nicht mehr.
#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h>
#define PinLampe_1 30
#define EIN LOW
#define AUS HIGH
int Timer_1[2]; // Timer Lampe 1
void setup()
{
Serial.begin(9600);
setSyncProvider(RTC.get);
// Nur zur Kontrolle:
if(timeStatus()!= timeSet) // wenn Status geaendert
{
Serial.println("Synchronisation fehlgeschlagen"); // bei Fehler
}
else
{
Serial.println("Synchronisation erfolgreich"); // alles ok
}
pinMode(PinLampe_1, OUTPUT);
}
void loop()
{
if(weekday()==1) {
// Sonntags später, da man gerne mal ausschläft ohne Licht an
Timer_1[0] = 1000;
Timer_1[1] = 1400;
Serial.println("Sonntag");
}
else {
Timer_1[0] = 730;
Timer_1[1] = 1200;
Serial.println("Wochentag");
}
Serial.println(">>-->>-->>-->>");
Serial.print("Timer1[0] ");
Serial.println(Timer_1[0]);
Serial.print("Uhrzeit: ");
Serial.println(uhrzeit());
Serial.println("<<--<<--<<--<<");
digitalUhrAnzeige(); // Aktuelle Uhrzeit anzeigen
ZeitBisAn(Timer_1[0],Timer_1[1]); // Gibt aus wie lange das Licht schon an ist und wann es aus geht
// Wenn es aus geschalten ist wird die Zeit ausgegeben bis wann sie wieder eingeschalten wird
Serial.println("-------");
Serial.print("Pin Status ");
Serial.print(PinLampe_1);
Serial.print(": ");
Serial.println(digitalRead(PinLampe_1));
// Wie kann man das besser zusammen schreiben? Wenn ich es mit + verknüpfe bekomme ich Fehler
// In diesem auskommentierten Segment sind viele Fehler
/* if((uhrzeit()>=Timer_1[0] and uhrzeit()<Timer_1[1]) {
// Lampe 1 sollte gestartet sein
if(digitalRead(PinLampe_1)==1) {
// Wenn der Pin von der Lampe 1 noch aus ist dann jetzt einschalten
digitalWrite(PinLampe_1, EIN);
Serial.println("");
Serial.println("Lampe 1 wird eingeschaltet");
Serial.println("");
}
}
else {
// Lampe 1 sollte ausgeschaltet sein
if(digitalRead(PinLampe_1)==0) {
// Wenn sie noch eingeschaltet ist dann jetzt ausschalten
digitalWrite(PinLampe_1, AUS);
Serial.println("");
Serial.println("Lampe 1 wird ausgeschaltet");
Serial.println("");
}
}
*/
delay(5000);
}
float uhrzeit() {
//float zahl;
int zahl = (hour()*100) + minute();
Serial.print(".........");
Serial.print(zahl);
Serial.print(".........");
return zahl;
// Return wirft Fehler
}
void ZeitBisAn(int timerAn, int timerAus) {
int verbleibend = uhrzeit()-timerAn;
Serial.println("Zeit Bis An START >>>>>>>>>>>>>>>>>>>>");
Serial.println("Timer1: ")+timerAn;
Serial.println("Uhrzeit: ")+uhrzeit();
Serial.println("Verbleibend: ");
Serial.println(verbleibend); // fuegen Freizeichen ein
Serial.println("Zeit Bis An Ende <<<<<<<<<<<<<<<<<<<<<");
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ab hier wird nur zur schöneren Ansicht verwendet
void digitalUhrAnzeige() // definieren Subroutine
{
// digitale Anzeige der Zeit
printZiffernGenulltOhnePunkt(hour()); // rufen Subroutine auf
printZiffernGenulltmitPunkt(minute()); // rufen Subroutine auf
printZiffernGenulltmitPunkt(second()); // rufen Subroutine auf
Serial.print(" "); // fuegen Freizeichen ein
printZiffernGenulltOhnePunkt(day()); // rufen Subroutine auf
Serial.print("."); // fuegen Freizeichen ein
printZiffernGenulltOhnePunkt(month()); // rufen Subroutine auf
Serial.print("."); // fuegen Freizeichen ein
Serial.println(year());; // Zeilenvorschub
}
void printZiffernGenulltOhnePunkt(int zahl) // definieren Subroutine
{
// verschoenern Anzeige, indem wir ...
if(zahl < 10) // wenn kleiner als 10 ...
{
Serial.print(""); // fuehrende 0 einfuegen
}
Serial.print(zahl); // Ausgabe auf serieller Konsole
}
void printZiffernGenulltmitPunkt(int zahl) // definieren Subroutine
{
// verschoenern Anzeige, indem wir ...
Serial.print(":"); // trennende ":" einfuegen
if(zahl < 10) // wenn kleiner als 10 ...
{
Serial.print('0'); // fuehrende 0 einfuegen
}
Serial.print(zahl); // Ausgabe auf serieller Konsole
}
Ich habe Probleme die "uhrzeit()" aufzurufen und die Timer an "ZeitBisAn" zu übergeben.