wenn ich untenstehenden code kompilieren will, bekomme ich die Fehlermeldung: Compilation eror HSPI_SD not declared in this scope mit verwies auf die zeile: mit dem inhalt File dir = HSPI_SD.open("/"); in der Methode updateSD(int interruptPin)
wie muss ich die Klasse / den Sketch richtig schreiben?
// ESP32 SD-CLOUD
#include <SPI.h>
#include <SD.h>
// Ueberwachungspin Card-CS vom Printer
#define ACCESSREQUEST_PIN 4
// Pin-Definitionen für VSPI
#define VSPI_SCK 18
#define VSPI_MISO 19
#define VSPI_MOSI 23
#define VSPI_SS 5
// Pin-Definitionen für HSPI
#define HSPI_SCK 14
#define HSPI_MISO 12
#define HSPI_MOSI 13
#define HSPI_SS 33
// Dateinamen für die Micro-SD-Karten
#define VSPI_CARD_NAME "VSPI_SD"
#define HSPI_CARD_NAME "HSPI_SD"
File vspiFile;
File hspiFile;
// sektion Klassen
class SDSync {
public:
void updateSD(int interruptPin) {
// Überprüfen, ob der Interrupt-Pin LOW ist
if (digitalRead(interruptPin) == LOW) {
// Interrupt-Pin ist LOW, Abbruch des Kopiervorgangs
closeFiles();
endAccess();
return;
}
// Kopieren der Dateien von HSPI_SD nach VSPI_SD
File dir = HSPI_SD.open("/");
while (true) {
File entry = dir.openNextFile();
if (!entry) {
break;
}
String filename = entry.name();
// Überprüfen, ob Datei bereits auf VSPI_SD vorhanden ist
if (!VSPI_SD.exists(filename)) {
// Datei nur auf HSPI_SD vorhanden, kopieren
copyFile(entry, filename);
}
entry.close();
}
dir.close();
// Dateien aktualisieren die aud HSPI_SD neuer sind als auf VSPI_SD
File dir = VSPI_SD.open("/");
while (true) {
File entry = dir.openNextFile();
if (!entry) {
break;
}
String filename = entry.name();
// Überprüfen, ob Datei auf HSPI_SD vorhanden ist
if (HSPI_SD.exists(filename)) {
// Überprüfen, ob Datei auf HSPI_SD neuer ist
if (HSPI_SD.lastWrite() > VSPI_SD.lastWrite()) {
// Datei auf HSPI_SD ist neuer, ersetzen
replaceFile(filename);
}
} else {
// Datei nur auf VSPI_SD vorhanden, löschen
VSPI_SD.remove(filename);
}
entry.close();
}
dir.close();
}
private:
void copyFile(File source, String filename) {
File destination = VSPI_SD.open(filename, FILE_WRITE);
if (destination) {
while (source.available()) {
destination.write(source.read());
}
destination.close();
}
}
void replaceFile(String filename) {
File sourceFile = HSPI_SD.open(filename);
File destFile = VSPI_SD.open(filename, FILE_WRITE);
while (sourceFile.available()) {
destFile.write(sourceFile.read());
}
sourceFile.close();
destFile.close();
}
void closeFiles() {
HSPI_SD.end();
VSPI_SD.end();
}
void endAccess() {
// Setze SS von VSPI auf HIGH, um den Zugriff auf VSPI_SD zu beenden
digitalWrite(VSPI_SS, HIGH);
}
};
// ende sektion klassen
// Instanz für SDSync erzeugen
SDSync updateSD(ACCESSREQUEST_PIN);
void setup() {
Serial.begin(115200);
// Initialisiere die VSPI-Schnittstelle
SPI.begin(VSPI_SCK, VSPI_MISO, VSPI_MOSI, VSPI_SS);
SD.begin(VSPI_SS, VSPI);
// Initialisiere die HSPI-Schnittstelle
SPI.begin(HSPI_SCK, HSPI_MISO, HSPI_MOSI, HSPI_SS);
SD.begin(HSPI_SS, HSPI);
// Überprüfe, ob die Micro-SD-Karten erkannt wurden
if (SD.begin(VSPI_SS, VSPI)) {
Serial.println("VSPI Micro-SD-Karte erkannt!");
vspiFile = SD.open(VSPI_CARD_NAME);
} else {
Serial.println("Fehler beim Initialisieren der VSPI Micro-SD-Karte!");
}
if (SD.begin(HSPI_SS, HSPI)) {
Serial.println("HSPI Micro-SD-Karte erkannt!");
hspiFile = SD.open(HSPI_CARD_NAME);
} else {
Serial.println("Fehler beim Initialisieren der HSPI Micro-SD-Karte!");
}
// PINs initialisieren
pinMode(ACCESSREQUEST_PIN, INPUT);
SDSync.updateSD();
}
void loop() {
// put your main code here, to run repeatedly:
}
Danke für eure wertvolle Hilfe.