Go Down

Topic: Newbie sucht Hilfe... DS3231 RTC mit MEZ/MESZ Umschaltung gesucht (Read 20294 times) previous topic - next topic

Loschder

const char* weekDay = weekDayGerman[wdayS(localTime)];       // Text zuweisen
 
Hmm, da warn se wieder meine Probleme... bekomme immer die Meldung

dateTimeLibEasyDemoSunrise_mit_I2c:68: error: 'weekday' was not declared in this scope
     lcd.print(weekday);
               ^
exit status 1
'localTime' was not declared in this scope
....

Loschder

In "jursRTCtimeEasy.h" habe ich folgendes stehen
Code: [Select]
int wdayS(sTime &time)
{ // Calculate day of week, Sunday == 0.
  int adjustment, mm, yy;
  adjustment = (14 - time.bMonth) / 12;
  mm = time.bMonth + 12 * adjustment - 2;
  yy = time.iYear - adjustment;
  return (time.bDay + (13 * mm - 1) / 5 + yy + yy / 4 - yy / 100 + yy / 400) % 7;
}


Wie rufe ich im eigentlichen sketch wdays auf?

Z.B.
Code: [Select]
lcd.print(wdayS);

funzt nicht bei mir  >:(
....

Tommy56

ohne jetzt die Lib zu kennen, solltest Du time als Parameter mitgeben.
Code: [Select]

lcd.print(wdayS(time));
[code]
Wenn die Zeitvariable bei Dir time heißt. Es kann auch date sein.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Loschder

Wenn ich das Beispiel von jurs Beitrag #87 nehme,

da steht in jursRTCtimeEasy folgendes
Code: [Select]
int wdayS(sTime &time);
int wdayS(sTime &time)
{ // Calculate day of week, Sunday == 0.
  int adjustment, mm, yy;
  adjustment = (14 - time.bMonth) / 12;
  mm = time.bMonth + 12 * adjustment - 2;
  yy = time.iYear - adjustment;
  return (time.bDay + (13 * mm - 1) / 5 + yy + yy / 4 - yy / 100 + yy / 400) % 7;
}

int wdayM(sTime &time);
int wdayM(sTime &time)
{ // Calculate day of week, Monday == 0.
  (wdayS(time)+6) % 7;
}[/code

aber wdayS bzw wdayM lässt sich nicht aufrufen

weder so
[code]
lcd.print (wdayS); // noch mit
lcd.print(wdayS(sTime &time);


Auch der u.g.Vorschlag von Smithy funktioniert leider nicht
Code: [Select]
  const char* weekDayGerman[] = {"So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."}; // Texte für Tage
  const char* weekDay = weekDayGerman[wdayS(localTime)];       
// auch mit änderung in ->const char* weekDay = weekDayGerman[wdayS(sTime &time)];
  if (localTime.bSecond % 10 == 0) Serial.println(weekDay);    // weekDay alle 10 Sec. als Text  ausgeben
  lcd.setCursor(0, 0);
  lcd.print(weekDay);
....

Wiki_

Das sind genau die Stellen, die ich verbessert habe. Mit meiner Variante sollten die Warnungen weg sein.
Moin,

sorry, aber diesen Abbruch bekomme ich mit Deiner verbesserten Version genauso.

Da ich meine unterschiedlichen Versionen während der Entwicklung einzeln speichere und die included libraries aus dem Unterverzeichnis von der IDE immer mit in den neuen Ordner kopiert wird (in diesem Fall die 'jurs.h'), hab ich alle 'jurs.h' alter Art gelöscht, schliesslich blick ich noch nicht so recht durch, von welcher Stelle wann die IDE sich was heranzieht (hatte in meinen derzeitgen ersten Tagen so die eine oder andre Überraschung).

Die Warnmeldung bleibt.

Gruß Wiki

Wiki_

Moin,

sorry, aber diesen Abbruch bekomme ich mit Deiner verbesserten Version genauso.

.
.
.
.
Die Warnmeldung bleibt.

Gruß Wiki
Moin,

so, nach nem gründlichen Aufräumen und Eliminieren alter libs muss ich meine vorherige Aussage zurückziehen und das Gegenteil behaupten.

Mit der lib gepostet von agmue in #185 sind bei mir die Warnungen weg und der Compiler läuft durch.


Wie rufe ich im eigentlichen sketch wdays auf?

Z.B.
Code: [Select]
lcd.print(wdayS);

funzt nicht bei mir  >:(
Code: [Select]

  Serial.println(wdayS(localTime));


hab ich in meinen sketch probehalber eingefügt, wird nicht angemeckert, aufgespielt um ein Resultat zu sehen hab ich allerdings noch nicht. Damit sollte eigentlich das Rätsel um den Aufruf von wdayS gelöst sein.

Dank @agmue, die Wochentage benötige ich in Kürze, wenn ich meine Schaltzeiten auf verschiedene Tagesprogramme erweitere.

Gruß Wiki

[edit]
@Loschder: aus Deinen Codeschnipseln ersehe ich, dass Du die original lib von jurs nutzt. Hol Dir die lib aus #185, dann funzt es.
[/edit]

agmue

Mit der lib gepostet von agmue in #185 sind bei mir die Warnungen weg und der Compiler läuft durch.
Puh :D

Code: [Select]
Serial.println(wdayS(localTime));
Ja, das funktioniert, gibt eine Zahl für den Wochentag zurück.

Wiki_

Puh :D
Moin,

I'm awfully sorry für meine Falschmeldung, Asche auf mein Haupt.

Aber wie ich schon vorher gepostet hatte, ich hab den Eindruck, daß die IDE recht großzügig mit dem Heranziehen von libs umgeht.

Dank Dir nochmals, Gruß Wiki

Loschder

Hi @ all,

ja mit dem aus #184 funzt es nun.... wobei es auch mir Jurs erster Vorlage mittlerweile funktioniert(ich gehe davon aus dass ich im Code irgendwas verstellt hatte).

Kann mir mal einer die folgenden Zeilen(meine Kommentarfragen) etwas näher erklären?
Code: [Select]


char relay[4]={"ON"}; 
  char buf[20];
  if (!relayState)   
  {
    relay[1] = 'F';   // ??? ´F´ ??? für fails?
    relay[2] = 'F';   
  }


MfG Chris
....

agmue

Kann mir mal einer die folgenden Zeilen(meine Kommentarfragen) etwas näher erklären?
Im Feld relay wird "ON" gespeichert. Wenn relayState false ist, wird daraus "OFF".

michael_x

Wobei das ganze etwas unsauber ist, denn der Wert von relay[3] ist undefiniert.
Nach meinem Geschmack wäre char relay[4]={"ON "}; schöner gewesen.

Macht aber in diesem Fall nichts, weil später eine eventuell fehlende Endekennung ignoriert wird:

sprintf(buf, " %3s  ", relay); // gibt die ersten 3 Zeichen von relay aus

 

Go Up