Ich versuche gerade das Make-Projekt "Taupunktlüfter" aus den Heften 1_2022 , bzw. Taupunktlüfter mit Log aus Heft 2_2022 nach zu bauen.
Von Arduino un Co. verstehe ich leider nichts. Das Projekt ohne logging hat in Github eine einzige .ino Datei. Mit der bin ich fertig geworden, die ist nach längerem herum probieren auf dem Nano gelandet und nun funktioniert das Ding so, wie es soll.
Jetzt muss es aber unbedingt die Version mit Datenlogging sein. Für dieses Projekt gibt es auf Github aber plötzlich 3 .ino Dateien. Die "Taupunkt_Lueftung_Datenlogging_Version_2.13.ino" UND die "SD.ino" UND die "Zeit.ino"
Bitte was muss ich mit den 3 Dateien anstellen, damit ich die Software richtig auf den Nano laden kann?
Wie gesagt, viel Ahnung von Arduino etc. habe ich leider noch nicht, daher bitte ich um einfache Schritte, auch wenn die dann für euch "is_ja_eh_klar sind"!
Als IDE verwende ich die Version 2.3.2 und hoffe auf Hilfe.
Es geht einfacher, ein neuen Ordner erstellen alles reinkopieren, erste beste .ino starten, den Rest macht die IDE selber == erstellt den richtigen Nahmen für den Ordner.
Dort lädts das .zip runter,
entpackst es und schon ist die Ordnerstruktur wie vorgesehen.
Dann gehst in den Ordner Taupunkt_Lueftung_Datenlogging_Version_2.13 und machst einen Doppelklick auf die Taupunkt_Lueftung_Datenlogging_Version_2.13.ino
Fertig.
PS: Bei Projekten von Drittseiten immer einen Link mit dazu geben, macht es einfacher eine Lösung zu suchen
Na das ging ja flott! Herzlichen Dank für die Hilfe! Klingt ja gar nicht soo mystisch. Ich werde es gleich ausprobieren.
Vielen Dank für eure rasche und kapierbare Hilfe!
Die IDE fügt alle Files im Sketch ordner zusammen und kompiliert das.
In der IDe kann man diese verschiedenen Teile des Sketches in verschiedenen Tabs laden. Darum sind die Tabs in der IDE ein einziger Sketch und nicht verschiedene Sketche wie man es zB vom Browser gewohnt ist. Alle Tabs der IDE werden im gleichen Ordner gespeichert.
Die Situation am Tisch ist im Bild gezeigt.
Jetzt kommt Zeit und Datum in die RTC. Dazu soll ich SetTime auf den Nano laden und ausführen.
Dazu hätte ich den Nano aus der Schaltung genommen und über USB wieder an die IDE angeschlossen und den sketch SetTime rauf geladen. Der wäre wohl automatisch gestartet, bloß, wie sag ich ihm die Zeit und das Datum? Im Listing eintragen und dann hochladen? Wie kommt die Zeit dann in die RTC? Wenn ich den Nano in die Schaltung einsetze (für den normalen Betrieb dann) ist doch wieder nur die Hauptsoftware drauf?
Jetzt habe ich das tutorial und den/die dazugehörigen Sketche nicht gelesen. Es gibt die systemvariblen date und time (geschrieben mit 2 Unterstrichen vorher und nachher ohne leerzeichen dazwischen) die die Systemzeit des PCs zur Kompilierungszeitpunkt/Upload in den Sketch übernehmen der einige Sekunden darauf die Systemzeit in der DS1307 setzt. Dann ist der Sketch sofort zu überschreiben damit er nicht nochmal die RTC setzt. Ein blink.ino genügt. Dann hat man in ruhe Zeit die richtigen Sketch auf den Arduino zu laden.
Danke für deine Mühe! Leider ist das alles für mich zu wissenschaftlich. In meinem Stadium des Arduinowissens brauche ich einfachste, kleinste Schritte.
Z.B.:
Nimm jetzt den Nano aus der Schaltung
schließe ihn über USB an die IDE an
lade xyz.ino auf den Nano
stecke den Nano wieder in die Schaltung
Strom ein
Wasser marsch!
und löschen, löschen, löschen!
usw.
Du kannst Dir helfen im dem du das auf dein Nano drauf tust
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
tmElements_t tm;
void setup() {
bool parse=false;
bool config=false;
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
if (parse && config) {
Serial.print("DS1307 configured Time=");
Serial.print(__TIME__);
Serial.print(", Date=");
Serial.println(__DATE__);
} else if (parse) {
Serial.println("DS1307 Communication Error :-{");
Serial.println("Please check your circuitry");
} else {
Serial.print("Could not parse info from the compiler, Time=\"");
Serial.print(__TIME__);
Serial.print("\", Date=\"");
Serial.print(__DATE__);
Serial.println("\"");
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
bool getDate(const char *str)
{
char Month[12];
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
Der Sketch stellt deine RTC ein.
Danach kannst dein Make Sketch laden
Muss aber in Voraus schreiben mit der RTC wirst nicht Glücklich das ist die ungenauste Uhr was es gibt für Arduino.
...und ein Verständnis, warum die so ablaufen sollen - sonst ist das alles für die Katz.
Die Uhrzeit der RTC kannst Du nur setzen, wenn sie mit dem Nano verbunden ist.
Gleichzeitige Spannungsversorgung des Nano durch USB und externe Versorgung ist - insbesondere bei Nachbauten - problematisch und kann zu Rauchentwicklung führen.
So würde ich vorgehen
Trenne die externe Versorgung des Nano auf (gelber Kringel)
Schließe das System über USB an Deinen Computer an
Starte die Arduino-IDE
Lade das Beispielprogramm SetTime aus der DS1307RTC-Library auf den Nano
Der von mir gezeigter Sketch ist genau das was Du zeigst, nichts mehr oder weniger
Es Reicht den 230V Stecker ziehen. Kann mir nicht vorstellen dass das soll fest verbunden werden mit 230V
Jein.
Wenn Du 230V ziehst, muss die ganze Schaltung über USB versorgt werden. Das kann gehen, muss aber nicht.
Bei Dir fehlt das vorher/nachher; ich bin etwas ausführlicher in kleineren Schritten unterwegs als Du - das ist schon alles.
@ingobert Die wesentliche Information ist: Der Nano darf nicht aus der Schaltung raus, sondern muss mit der RTC verbunden bleiben. Der Aufruf von RTC.write(tm) setzt die Zeit im Uhrenbaustein.
Meine beschidene Meinung:
Bau Dir einen zusätzlihcen Tab und integriere das komplett in das bestehende Projekt.
Das spart Dir eine Menge Aufwand und Du kannst das sogar während des Betriebes immer wieder anpassen.
(Wobei eine 3231 eigentlihc so genau ist, dass da vorläufig keiner ran müsste - aber irgendwann ist ja wieder Winterzeit )
Mal sehen, was mir zu morgen früh einfällt...