Arduino Mega - Micro SD-Karte

Willkommen zu diesem umfassenden Arduino Mega Micro SD-Karten Tutorial! In dieser detaillierten Anleitung entdecken Sie, wie Sie Ihren Arduino Mega Projekten mächtige Datenspeicher-Funktionalitäten hinzufügen können, indem Sie Micro SD-Karten verwenden. Egal, ob Sie einen Datenlogger, Sensor-Recorder, ein Konfigurationssystem oder ein beliebiges Projekt erstellen, das persistente Speicherung benötigt - dieses Arduino Mega SD-Karten Tutorial deckt alles ab.

Micro SD-Karten revolutionieren Arduino-Projekte, indem sie massive Speicherkapazität (typischerweise 2GB bis 32GB) in einem winzigen Formfaktor bereitstellen. Im Gegensatz zu Arduinos begrenztem eingebautem EEPROM (4KB beim Arduino Mega) ermöglichen Ihnen SD-Karten die Speicherung von Sensor-Messwerten, Log-Dateien, Konfigurationsdaten, Zeitstempeln und sogar die Erstellung einfacher Datenbanken. Die Daten bleiben auch bei Stromausfall erhalten, was SD-Karten perfekt für langfristige Datenaufzeichnungs-Anwendungen macht.

In diesem Arduino Mega Micro SD-Karten Tutorial erkunden wir alles, was Sie zur Beherrschung von SD-Karten-Operationen benötigen:

Dieses Arduino Mega SD-Karten-Modul Projekt eröffnet unglaubliche Möglichkeiten! Erstellen Sie Wetterstation-Datenlogger, GPS-Track-Recorder, Event-Counter mit Zeitstempeln, Sensor-Netzwerke mit lokaler Speicherung, Konfigurationssysteme die Einstellungen speichern, CSV-Daten-Exporter für Excel-Analysen, wissenschaftliche Experiment-Recorder und jede Anwendung, die zuverlässige Hochkapazitäts-Datenspeicherung benötigt. Micro SD-Karten verwandeln Ihr Arduino von einem Echtzeit-Controller in ein komplettes Datenerfassungssystem!

Arduino Mega Micro SD Card

Benötigte Hardware

1×Arduino Mega
1×USB 2.0 Kabel Typ A/B
1×Micro SD-Karte
1×Micro SD-Karten-Modul
1×Jumper-Kabel
1×USB 3.0 SD-Karten-Lesegerät
1×(Empfohlen) Screw Terminal Block Shield for Arduino Uno/Mega
1×(Empfohlen) Breadboard Shield for Arduino Mega
1×(Empfohlen) Enclosure for Arduino Mega

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das Micro SD-Karten-Modul

Das Micro SD-Karten-Modul ist ein Breakout-Board, das eine praktische Schnittstelle zwischen Ihrem Arduino Mega und Standard-Micro SD-Karten bereitstellt. Dieses Modul übernimmt alle komplexen elektrischen Anforderungen, Spannungspegel-Konvertierung und physische Kartensockel-Verbindungen, wodurch es einfach wird, massive Speicherkapazität zu Ihren Projekten hinzuzufügen.

Hauptmerkmale:

  • SPI-Kommunikation: Verwendet den SPI-Bus (Serial Peripheral Interface) für schnelle Datenübertragung
  • Spannungsregulierung: Eingebauter Spannungsregler und Level-Shifter schützen die 3,3V SD-Karte vor den 5V-Signalen des Arduino
  • Kapazitäts-Unterstützung: Funktioniert mit Micro SD-Karten von 128MB bis zu 32GB (SDHC)
  • Dateisystem: Unterstützt FAT16- und FAT32-Dateisysteme für einfache Kompatibilität mit Computern
  • Hot-Swappable: Karten können entfernt und auf Computern mit Standard SD-Karten-Lesegeräten gelesen werden
  • Schnelle Übertragung: SPI-Kommunikation ermöglicht Datenübertragungsgeschwindigkeiten, die für die meisten Datenaufzeichnungs-Anwendungen ausreichen

Funktionsweise:

Das Modul fungiert als Zwischenadapter zwischen der 5V-Logik des Arduino Mega und den 3,3V-Anforderungen der SD-Karte. Es enthält eingebaute Spannungsregler und Level-Shifter zur Gewährleistung sicherer Kommunikation. Das Modul kommuniziert über das SPI-Protokoll, das 4 Hauptpins (MOSI, MISO, SCK, SS) verwendet, um Daten seriell mit Geschwindigkeiten bis zu 4Mbps auf Arduino zu übertragen.

Dateisystem-Kompatibilität:

SD-Karten müssen mit FAT16- (für Karten ≤2GB) oder FAT32-Dateisystemen (für Karten >2GB bis zu 32GB) formatiert sein. Dies sind Standardformate, die sowohl Arduino als auch Computer lesen können, wodurch die Datenübertragung zwischen Geräten einfach wird. Die Arduino SD-Bibliothek stellt High-Level-Funktionen bereit, die die Komplexität der FAT-Dateisystem-Operationen verbergen.

Pinout

Micro SD Card Module Pinout

Das Micro SD-Karten-Modul verfügt über sechs Pins, die sich mit dem SPI-Bus des Arduino Mega verbinden. Das Verständnis jedes Pins ist für den ordnungsgemäßen Betrieb wesentlich:

Strom-Pins:

  • VCC-Pin: Stromversorgungseingang. Mit dem 5V-Pin des Arduino Mega verbinden. Der eingebaute Regler wandelt dies zu 3,3V für die SD-Karte um.
  • GND-Pin: Masse-Referenz. Mit dem GND-Pin des Arduino Mega verbinden, um den Stromkreis zu schließen.

SPI-Kommunikations-Pins:

  • MISO-Pin (Master In Slave Out): Datenleitung von der SD-Karte zum Arduino. Mit dem MISO-Pin des Arduino Mega (Digital Pin 50) verbinden. Diese Leitung überträgt von der SD-Karte gelesene Daten.
  • MOSI-Pin (Master Out Slave In): Datenleitung vom Arduino zur SD-Karte. Mit dem MOSI-Pin des Arduino Mega (Digital Pin 51) verbinden. Diese Leitung überträgt auf die SD-Karte geschriebene Daten.
  • SCK-Pin (Serial Clock): Taktsignal, das vom Arduino erzeugt wird. Mit dem SCK-Pin des Arduino Mega (Digital Pin 52) verbinden. Diese Leitung synchronisiert die Datenübertragung zwischen Geräten.
  • CS-Pin (Chip Select) / SS-Pin (Slave Select): Aktiviert die SD-Karte für die Kommunikation. Mit einem beliebigen Digital-Pin des Arduino Mega verbinden (üblicherweise Pin 53, aber im Code konfigurierbar). Wenn LOW, hört die SD-Karte zu; wenn HIGH, wird sie ignoriert.

Arduino Mega SPI-Pin-Positionen:

Das Arduino Mega hat dedizierte Hardware-SPI-Pins, die die schnellste und zuverlässigste Kommunikation bieten:

  • Pin 50: MISO (Master In Slave Out)
  • Pin 51: MOSI (Master Out Slave In)
  • Pin 52: SCK (Serial Clock)
  • Pin 53: SS (Slave Select) - Standard, aber jeder Digital-Pin kann verwendet werden

Wichtige Hinweise:

  • Verwenden Sie immer die Hardware-SPI-Pins (50, 51, 52) für MISO, MOSI und SCK beim Arduino Mega
  • Der CS/SS-Pin ist konfigurierbar - Sie geben ihn in der SD.begin()-Funktion an
  • Verschiedene Arduino-Boards verwenden verschiedene SPI-Pin-Nummern (Uno verwendet Pins 10-13)
  • Verbinden Sie niemals die SD-Karte direkt mit dem Arduino ohne das Modul - Spannungsunterschied wird die Karte beschädigen!

Vorbereitung

Bevor Sie Ihre Micro SD-Karte mit Arduino verwenden, müssen Sie sie ordnungsgemäß formatieren. Dies gewährleistet die Kompatibilität mit der Arduino SD-Bibliothek und ermöglicht zuverlässige Dateioperationen.

Schritt 1: Karte in Computer einlegen

Stecken Sie die Micro SD-Karte in Ihren Computer mit einem USB 3.0 SD-Karten-Lesegerät (oder dem eingebauten SD-Karten-Slot Ihres Computers mit einem Micro SD-Adapter).

Schritt 2: Karte überprüfen und formatieren

Die SD-Karte MUSS als FAT16 oder FAT32 formatiert werden:

  • FAT16: Für SD-Karten von 2GB oder kleiner
  • FAT32: Für SD-Karten größer als 2GB bis zu 32GB
  • exFAT: NICHT von der Arduino SD-Bibliothek unterstützt (verwenden Sie dieses Format nicht)

Windows-Formatierung:

  1. Öffnen Sie den Datei-Explorer und suchen Sie das SD-Karten-Laufwerk
  2. Rechtsklick auf das Laufwerk und wählen Sie "Formatieren"
  3. Wählen Sie "FAT32" für Dateisystem (oder "FAT" für Karten ≤2GB)
  4. Klicken Sie "Starten" zum Formatieren

Mac-Formatierung:

  1. Öffnen Sie das Festplattendienstprogramm (Programme → Dienstprogramme → Festplattendienstprogramm)
  2. Wählen Sie die SD-Karte aus der linken Seitenleiste
  3. Klicken Sie "Löschen"
  4. Wählen Sie "MS-DOS (FAT)" als Format
  5. Klicken Sie "Löschen" zum Formatieren

Format überprüfen:

Nach der Formatierung sollte die Karte leer und bereit für die Arduino-Verwendung sein. Das Arduino erstellt automatisch Dateien während des Betriebs.

Empfohlene Karten-Spezifikationen:

  • Kapazität: 2GB bis 16GB ist ideal (32GB Maximum)
  • Geschwindigkeitsklasse: Klasse 4 oder höher für zuverlässige Datenaufzeichnung
  • Marke: Verwenden Sie Qualitätsmarken (SanDisk, Samsung, Kingston) für Zuverlässigkeit

Schaltplan

Betrachten wir die Verkabelung zwischen Ihrem Arduino Mega und dem Micro SD-Karten-Modul. Das Modul verwendet den SPI-Bus (Serial Peripheral Interface), der 4 Datenleitungen plus Stromversorgungsverbindungen benötigt.

Arduino Mega Micro SD Card Module Wiring Diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Verbindungsübersicht:

SD-Karten-Modul Arduino Mega
VCC 5V
GND GND
MISO Pin 50
MOSI Pin 51
SCK Pin 52
CS Pin 53*

*Pin 53 ist der Standard-SS-Pin, aber Sie können jeden Digital-Pin verwenden, indem Sie ihn in SD.begin(pin_number) angeben

Best Practices für die Verkabelung:

  • Kurze Kabel: Verwenden Sie Jumper-Kabel kürzer als 20cm für zuverlässige SPI-Kommunikation bei hohen Geschwindigkeiten
  • Übersprechen vermeiden: Halten Sie Kabel getrennt und vermeiden Sie es, sie parallel zueinander zu verlegen
  • Sichere Verbindungen: Stellen Sie sicher, dass alle Verbindungen fest sitzen - lose Kabel verursachen intermittierende Ausfälle
  • Stromqualität: Die SD-Karte kann während Schreibvorgängen 100-200mA ziehen, stellen Sie sicher, dass Ihre Stromversorgung dies bewältigen kann
  • Karteneinführung: Führen Sie die Micro SD-Karte immer in das Modul ein, BEVOR Sie das Arduino einschalten

SPI-Bus-Sharing:

Mehrere SPI-Geräte (SD-Karten, Displays, Sensoren) können sich die gleichen MISO-, MOSI- und SCK-Leitungen teilen. Jedes Gerät benötigt seinen eigenen einzigartigen CS-Pin (Chip Select). Nur das Gerät mit CS auf LOW kommuniziert, während andere inaktiv bleiben.

※ Notiz:

Shield-Benutzer: Wenn Sie ein Ethernet-Shield, Data-Logging-Shield oder ein Shield mit eingebautem Micro SD-Karten-Slot haben, müssen Sie kein separates Micro SD-Karten-Modul verwenden. Führen Sie einfach die Micro SD-Karte in den Kartensteckplatz des Shields ein. Die meisten Shields verwenden Pin 4 für den SD-Karten-CS-Pin (überprüfen Sie die Dokumentation Ihres Shields).

Arduino Mega - Datei auf Micro SD-Karte öffnen und erstellen falls nicht vorhanden

Eine der grundlegendsten SD-Karten-Operationen ist das Öffnen von Dateien. Die Arduino SD-Bibliothek macht dies einfach mit der SD.open()-Funktion, die sowohl bestehende Dateien öffnen als auch neue automatisch erstellen kann.

Wie das Dateiöffnen funktioniert:

Wenn Sie SD.open() mit einem Dateinamen und FILE_WRITE-Modus aufrufen, führt die Bibliothek folgende Schritte aus:

  1. Überprüft, ob die Datei auf der SD-Karte existiert
  2. Falls sie existiert, öffnet sie sie zum Anhängen (Hinzufügen von Daten am Ende)
  3. Falls sie nicht existiert, erstellt sie eine neue leere Datei mit diesem Namen
  4. Gibt ein File-Objekt zurück, das Sie für Lese-/Schreibvorgänge verwenden

Dateinamen-Regeln:

  • Maximale Dateinamenlänge: 8 Zeichen + 3 Zeichen Erweiterung (8.3-Format)
  • Verwenden Sie nur Buchstaben, Zahlen und Unterstriche (vermeiden Sie Leerzeichen und Sonderzeichen)
  • Erweiterungen sind optional, aber empfohlen (.txt, .csv, .log, .dat)
  • Beispiele: "data.txt", "sensor.log", "config.dat"

Dateien immer schließen:

Nach dem Öffnen und Verwenden einer Datei rufen Sie immer file.close() auf. Dies gewährleistet:

  • Daten werden ordnungsgemäß auf die SD-Karte geschrieben (aus Puffern geleert)
  • Dateisystem-Integrität wird aufrechterhalten
  • Datei ist für andere Operationen verfügbar
  • Verhindert Datenkorruption bei Stromverlust

Arduino Mega Code

Schnelle Schritte

Befolgen Sie diese detaillierten Schritt-für-Schritt-Anweisungen, um Dateierstellung und -öffnung auf Ihrer SD-Karte zu testen:

  • Setzen Sie die Micro SD-Karte in das Micro SD-Karten-Modul ein.
  • Verwenden Sie den Schaltplan, um das Micro SD-Karten-Modul mit dem Arduino Mega zu verbinden.
  • Verbinden Sie das Arduino Mega über ein USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das Arduino Mega Board und den richtigen COM-Port.
  • Öffnen Sie den Serial Monitor in der Arduino IDE.
  • Kopieren Sie den angezeigten Code und fügen Sie ihn in die Arduino IDE ein.
/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 53 // The Arduino Mega pin connected to the CS pin of SDcard module File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD Card is either missing or has failed!")); while (1); // don't do anything more: } Serial.println(F("SD Card is ready")); if (!SD.exists("arduino.txt")) { Serial.println(F("arduino.txt doesn't exist. Creating arduino.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("arduino.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("arduino.txt")) Serial.println(F("arduino.txt exists on SD Card.")); else Serial.println(F("arduino.txt doesn't exist on SD Card.")); } void loop() { }

9. Code hochladen: Klicken Sie auf den Upload-Button (Pfeil nach rechts) in der Arduino IDE-Symbolleiste, um den Code zu kompilieren und auf das Arduino Mega hochzuladen. Warten Sie auf die Meldung "Hochladen abgeschlossen".

10. Ergebnisse anzeigen: Schauen Sie in das Serial Monitor-Fenster. Nach dem ersten Upload mit einer frischen SD-Karte sollten Sie sehen:

COM6
Send
SD Card is ready arduino.txt doesn't exist. Creating arduino.txt file... arduino.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Was passiert:

  • Zeile 1: Bestätigt, dass die SD-Karte erfolgreich initialisiert wurde
  • Zeile 2: Datei existiert noch nicht, wird also erstellt
  • Zeile 3: Datei existiert jetzt und wird auf der Karte bestätigt

11. Erneut testen: Drücken Sie den Reset-Button auf Ihrem Arduino Mega oder laden Sie den Code erneut hoch. Der Serial Monitor sollte jetzt zeigen:

COM6
Send
SD Card is ready arduino.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Beachten Sie, dass die Datei bereits existiert, daher wird die "Creating"-Meldung übersprungen.

※ Notiz:

Timing-Hinweis: Sie sehen möglicherweise nichts im Serial Monitor, wenn Sie ihn zum ersten Mal nach dem Hochladen öffnen. Das liegt daran, dass das Arduino bereits ausgeführt und beendet wurde, bevor der Serial Monitor sich verbunden hat. Drücken Sie den Reset-Button am Arduino, um die Ausgabe erneut zu sehen.

12. Auf Computer überprüfen:

  • Entfernen Sie die Micro SD-Karte aus dem Modul (schalten Sie das Arduino zuerst aus)
  • Führen Sie die Micro SD-Karte in ein USB-Kartenlesegerät ein
  • Verbinden Sie das USB-Kartenlesegerät mit Ihrem Computer
  • Öffnen Sie das Laufwerk im Datei-Explorer (Windows) oder Finder (Mac)
  • Bestätigen Sie, dass die Datei "arduino.txt" auf der Karte existiert
  • Sie können die Datei öffnen, um ihren Inhalt anzuzeigen (sollte zu diesem Zeitpunkt leer sein)

Arduino Mega - Daten in/aus Datei auf Micro SD-Karte schreiben/lesen

Jetzt erkunden wir das Lesen und Schreiben tatsächlicher Daten in SD-Karten-Dateien. Dies ist die Kernfunktionalität für Datenprotokollierung, Konfigurationsspeicherung und persistente Datenanwendungen.

Daten in Dateien schreiben:

Die SD-Bibliothek stellt mehrere Methoden zum Schreiben von Daten bereit:

  • file.print(): Schreibt Text ohne Zeilenumbruch (wie Serial.print())
  • file.println(): Schreibt Text mit Zeilenumbruch am Ende (wie Serial.println())
  • file.write(): Schreibt rohe Bytes für binäre Daten

Alle Daten werden am Ende der Datei angehängt, es sei denn, Sie löschen die Datei explizit und erstellen sie neu.

Daten aus Dateien lesen:

Das Lesen kann auf mehrere Arten erfolgen:

  • file.read(): Liest ein Zeichen nach dem anderen, gibt -1 zurück, wenn das Dateiende erreicht ist
  • file.available(): Gibt die Anzahl der verfügbaren zu lesenden Bytes zurück (0 beim Dateiende)
  • Zeichen-für-Zeichen: Gut zum Parsen und Verarbeiten jedes Zeichens
  • Zeilen-weise: Effizienter für strukturierte Textdaten (im nächsten Abschnitt behandelt)

Dateiposition und EOF:

Jede Datei hat einen internen Positionszeiger, der verfolgt, wo Sie gerade lesen oder schreiben. Beim Lesen rückt der Zeiger mit jedem Zeichen vor. Wenn er das Ende der Datei erreicht, gibt file.available() 0 zurück.

Beispiel-Anwendungsfall:

Dieses Beispiel demonstriert einen vollständigen Schreib-dann-Lese-Zyklus:

  1. Öffnet eine Datei zum Schreiben
  2. Schreibt zwei Textzeilen in die Datei
  3. Schließt die Datei (wichtig!)
  4. Öffnet die Datei erneut zum Lesen
  5. Liest und zeigt jedes Zeichen bis zum Dateiende an
  6. Schließt die Datei wieder
/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 53 // The Arduino Mega pin connected to the CS pin of SDcard module File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD Card is either missing or has failed!")); while (1); // don't do anything more: } Serial.println(F("SD Card is ready")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("Error: Unable to open file arduino.txt")); } // open file for reading myFile = SD.open("arduino.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("Error: Unable to open file arduino.txt")); } } void loop() { }
  • Der Serial Monitor zeigte, was in der Datei war.
COM6
Send
Created by newbiely.com Learn Arduino Mega and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Wichtiges Verhalten - Daten anhängen: Der FILE_WRITE-Modus hängt neue Daten immer am Ende bestehender Dateien an, anstatt sie zu überschreiben. Dies ist beabsichtigt und perfekt für Datenprotokollierung! Wenn Sie jedoch das Arduino Mega zurücksetzen oder diesen Code erneut hochladen, wird derselbe Text erneut in die Datei geschrieben, was zu doppeltem Inhalt führt.

Nach einem zweiten Reset zeigt der Serial Monitor:

COM6
Send
Created by newbiely.com Learn Arduino Mega and SD Card Created by newbiely.com Learn Arduino Mega and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Um diese Verdopplung zu vermeiden:

  • Löschen Sie die Datei vor dem Schreiben (im "Überschreiben"-Abschnitt unten gezeigt)
  • Schreiben Sie Daten nur bei bestimmten Bedingungen (z.B. Tastendruck, neue Sensor-Messung)
  • Verwenden Sie ein Flag im EEPROM, um zu verfolgen, ob Anfangsdaten geschrieben wurden

Auf Computer überprüfen:

Sie können auch die Micro SD-Karte aus dem Modul entfernen und in ein USB SD-Kartenlesegerät einführen, um die Dateien auf Ihrem Computer anzuzeigen. Öffnen Sie "arduino.txt" in einem beliebigen Texteditor (Notepad, TextEdit), um den exakten vom Arduino geschriebenen Inhalt zu sehen. Dies ist äußerst nützlich für Debugging und Verifizierung von Datenprotokollierungs-Operationen!

Arduino Mega - Datei auf Micro SD-Karte zeilen-weise lesen

Das zeilen-weise Lesen von Dateien ist viel effizienter als zeichen-für-zeichen Lesen beim Arbeiten mit strukturierten Textdaten wie CSV-Dateien, Logs mit Zeitstempeln oder Konfigurationsdateien. Dieser Ansatz macht das Parsen und Verarbeiten von Daten erheblich einfacher.

Wie zeilen-weises Lesen funktioniert:

Anstatt jedes Zeichen einzeln zu verarbeiten, führt zeilen-weises Lesen folgende Schritte aus:

  1. Liest Zeichen, bis es ein Zeilenumbruch-Zeichen ('\n') antrifft
  2. Speichert alle Zeichen aus dieser Zeile in einer String-Variable
  3. Gibt die komplette Zeile zur Verarbeitung zurück
  4. Wiederholt bis das Dateiende erreicht ist

Vorteile des zeilen-weisen Lesens:

  • Einfacheres Parsen: Jede Zeile ist eine vollständige Dateneinheit
  • CSV-Unterstützung: Perfekt für komma-getrennte Werte (CSV) Dateien
  • Strukturierte Logs: Großartig für mit Zeitstempel versehene Log-Einträge
  • Weniger komplexer Code: Einfachere Logik als zeichen-für-zeichen Parsen
  • Bessere Performance: Weniger Funktionsaufrufe und Operationen

Anwendungsfälle:

  • Lesen von Sensor-Logs mit Zeitstempeln
  • Verarbeitung von CSV-Datendateien (sensor1,sensor2,sensor3)
  • Laden von Konfigurationseinstellungen (key=value Format)
  • Parsen von GPS NMEA-Sätzen
  • Lesen mehrzeiliger Textdateien

Implementierung:

Das folgende Beispiel verwendet die readStringUntil()-Funktion, die Zeichen liest, bis sie einen bestimmten Delimiter antrifft (in diesem Fall '\n' für Zeilenumbruch). Dies macht es einfach, jede Zeile als vollständigen String zu verarbeiten.

/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 53 // The Arduino Mega pin connected to the CS pin of SDcard module File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD Card is either missing or has failed!")); while (1); // don't do anything more: } Serial.println(F("SD Card is ready")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("Error: Unable to open file arduino.txt")); } // open file for reading myFile = SD.open("arduino.txt", FILE_READ); if (myFile) { int line_count = 0; while (myFile.available()) { char line[100]; // maximum is 100 characters, change it if needed int line_length = myFile.readBytesUntil('\n', line, 100); // read line-by-line from Micro SD Card line_count++; Serial.print(F("Line ")); Serial.print(line_count); Serial.print(F(": ")); Serial.write(line, line_length); // print the character to Serial Monitor // \n character is escaped by readBytesUntil function Serial.write('\n'); // print a new line charactor } myFile.close(); } else { Serial.print(F("Error: Unable to open file arduino.txt")); } } void loop() { }

Erwartete Ausgabe auf Serial Monitor:

COM6
Send
SD Card is ready Line 1: Created by newbiely.com Line 2: Learn Arduino Mega and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Die Ausgabe verstehen:

  • Jede Zeile aus der Datei wird mit einem Zeilennummer-Präfix angezeigt
  • Leere Zeilen (falls vorhanden) werden als leer zwischen Zeilennummern angezeigt
  • Die Zeilenzählung spiegelt genau die Anzahl der Zeilen in der Datei wider

※ Notiz:

Datenakkumulations-Hinweis: Wenn Sie den Dateiinhalt nicht zuerst gelöscht haben (mit der unten gezeigten Überschreibungs-Methode) und Sie das Arduino mehrmals zurückgesetzt haben, sehen Sie möglicherweise doppelte Zeilen im Serial Monitor. Jeder Reset mit dem Schreibcode fügt mehr Daten zur Datei hinzu. Um neu zu beginnen, verwenden Sie entweder die Überschreibungs-Methode oder löschen Sie die Datei manuell von der SD-Karte mit Ihrem Computer.

Arduino Mega - Datei auf Micro SD-Karte überschreiben

Standardmäßig hängt der FILE_WRITE-Modus Daten am Ende bestehender Dateien an. Während dies perfekt für kontinuierliche Datenprotokollierung ist, müssen Sie manchmal den Inhalt einer Datei vollständig durch neue Daten ersetzen. Dies wird "Überschreiben" der Datei genannt.

Warum Dateien überschreiben?

Überschreiben ist nützlich für:

  • Konfigurationsdateien: Aktualisierung von Einstellungen ohne Beibehaltung alter Werte
  • Status-Dateien: Ersetzen des aktuellen Status durch neuen Status
  • Tages-Logs: Täglich neu beginnen mit neuen Daten
  • Temporäre Daten: Löschen alter Berechnungen und Speichern neuer
  • Zusammenfassungs-Dateien: Ersetzen alter Zusammenfassungen durch aktualisierte Informationen

Wie überschreiben:

Die Arduino SD-Bibliothek hat keinen direkten "Überschreiben"-Modus. Stattdessen verwenden Sie einen zweistufigen Prozess:

  1. Alte Datei löschen: Verwenden Sie SD.remove(filename), um die bestehende Datei zu löschen
  2. Neue Datei erstellen: Öffnen Sie die Datei mit SD.open(filename, FILE_WRITE), was eine frische leere Datei erstellt

Dieser Ansatz gewährleistet, dass Sie mit einer vollständig sauberen Datei beginnen und alle alten Daten eliminieren.

Wichtige Überlegungen:

  • Datenverlust: Das Löschen entfernt alle vorherigen Daten permanent - stellen Sie sicher, dass dies beabsichtigt ist
  • Atomare Operationen: Es gibt einen kurzen Moment zwischen Löschen und Erstellen, wo die

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!