
Das Datenlogger-Shield vereint ein ⇒RTC-Modul und ein ⇒SD-Karten-Modul.
Das Beispielprogramm fragt 6 Lottozahlen ab, speichert sie in der Datei Lottozahlen.txt. liest dann die Datei Lottozahlen.txt und zeigt den Inhalt an.


Benötigte Bibliotheken:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | // benötigte Bibliotheken #include “SdFat.h” #include “RTClib.h” // Bezeichner der SD-Karte SdFat SD; // Datenpin der SD-Karte int DatenPin = 10; // Name des RTC-Moduls (rtc) RTC_DS3231 rtc; void setup() { /* wenn Datum und Zeit nicht korrekt -> Datum/Zeit setzen Jahr, Monat, Tag, Stunde, Minute, Sekunde Beispiel: 2022 August 31. 10 Uhr 30 Minuten 30 Sekunden rtc.adjust(DateTime(2022, 8, 31, 10, 31, 30)); */ // RTC-Modul starten rtc.begin(); // Bezeichner für die Datei File Datei; Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) { ; } /* SD-Karte mit Angabe des Datenpins starten wenn die Intialisierung fehlschlägt — keine SD-Karte vorhanden — falsche Pinbelegung -> es wird eine Fehlermeldung angezeigt */ if (!SD.begin(DatenPin)) { Serial.println(F(“Initialisierung fehlgeschlagen!”)); } else Serial.println(F(“Initialisierung abgeschlossen”)); // wenn die Datei Lottozahlen.txt beim nächsten Start gelöscht werden soll SD.remove(“Lottozahlen.txt”); // aktuelles Datum und aktuelle Zeit holen DateTime aktuell = rtc.now(); // Format des Datum bestimmen char Datum[] = “DD.MM.YYYY “; // Datum in Zeichenkette (String) umwandeln und anzeigen Serial.print(aktuell.toString(Datum)); // Format der Zeitangabe festlegen char Zeit[] = “hh:mm:ss”; // Zeitangabe in Zeichenkette (String) umwandeln und anzeigen Serial.println(aktuell.toString(Zeit)); // String für die eingegebenen Zahlen String DatenSchreiben; /* O_CREAT -> Datei erstellen, wenn sie nicht existiert O_WRITE -> in die Date schreiben O_AT_END -> Startposition zum Schreiben an das Ende der Datei setzen */ Datei.open(“Lottozahlen.txt”, O_CREAT | O_WRITE | O_AT_END); // Datum und Zeit in Datei schreiben Datei.print(aktuell.toString(Datum)); Datei.println(aktuell.toString(Zeit)); // Daten in Datei schreiben Serial.println(“Daten eingeben und Eingabe mit # beenden:”); // solange kein # eingegeben wurde while (DatenSchreiben != “#”) { while (Serial.available() > 0) { // solange lesen, bis return (\n) eingegeben wurde DatenSchreiben = Serial.readStringUntil(‘\n’); Serial.println(DatenSchreiben); // Datensatz in Datei schreiben if (DatenSchreiben != “#”) Datei.println(DatenSchreiben); } } // Datei schließen Datei.close(); Serial.println(“\nDatei Lottozahlen.txt erfolgreich geschrieben!”); // Datei Lottozahlen.txt öffnen Serial.println(“Zeige Lottozahlen.txt”); if (Datei.open(“Lottozahlen.txt”, O_RDONLY)) { while (Datei.available()) { // … werden sie gelesen und im Seriellen Monitor ausgegeben Serial.write(Datei.read()); } } // wenn die Datei Lottozahlen.txt nicht existiert … else { Serial.print(“Datei Lottozahlen.txt nicht gefunden!”); } // Datei schließen Datei.close(); } void loop() { // bleibt leer, das Programm läuft nur einmal } |
Letzte Aktualisierung: