Micro-SD File Server mit D1 Mini - AZ-Delivery

Este documento describe un uso Mini - D1 Se puede descargar el contenido de la tarjeta micro SDA.Cuando el Lector de tarjetas entre, Memoria miniatura Para uso.El hardware es sencillo.Los módulos de lectura de tarjetas y D1 - mini están conectados a través del bus SPI.Ver el circuito.

Circuito:

 

Imprimir el archivo STL adecuado para el exterior Delgado

 

Dibujo:

 

/*
 • Copyright propietario c) 2015, majenko Technologies
 Conserva todos los derechos.
 * 
 • redistribución y utilización en forma de fuente y binario, con o sin modificaciones,
 • Se permiten las siguientes condiciones:
 * 
 * * Esta declaración de derechos de autor debe conservarse para la nueva distribución del código fuente.
 * Lista de condiciones y descargo de responsabilidad
 * 
 * * La retransmisión en forma binaria requiere la reproducción de la mencionada declaración de derechos de autor.
 * Lista de condiciones en el documento y declaraciones de exoneración y / o
 * otros materiales adjuntos.
 * 
 * * ya sea el nombre o la tecnología de majenko.
 • Los contribuyentes pueden ser utilizados para apoyar o reproducir fuentes
 * Este programa informático no está previamente autorizado por escrito.
 * 
 * Este programa informático fue proporcionado "tal como fue" por el propietario y el contribuyente del derecho de autor; y
 • Toda garantía expresa o tácita, incluida, entre otras, las siguientes:
 * las garantías de la comerciabilidad y la aplicabilidad a usos específicos son:
 * negación.En cualquier caso, el titular o el contribuyente del derecho de autor no incurrirá en responsabilidad alguna.
 • Cualesquiera datos directos, indirectos, secundarios, especiales, ilustrativos o de seguimiento
 • La contratación pública de bienes o servicios de sustitución, entre otros;
 • Pérdida de uso, datos o beneficios; o interrupción de la actividad mercantil, sea cual fuere la causa
 • Toda doctrina de la responsabilidad, sea contractual, objetiva o extracontractual
 * Incluye los casos de negligencia u otras causas atribuibles a la utilización del presente documento.
 * programas informáticos, aun cuando se les haya informado de la posibilidad o del daño.
 */

• • Creamos un servidor Web como punto de acceso que proporciona contenido de micro sdka
 Zuzm descargando.
 SPI Introduction to SDA
 D5 = GPS 14 como reloj
 D6 = gpio12 como mi
 D7 = gpio13 como Mosi
 D8 = gpio15 como selección de chips
  
 SSID = servidor SD
 Contraseña = micro
   
*/

/ / biblioteca WiFi + cliente + servidor web
35; incluye <Esp8266wifi.Hora>
35; incluye <Wificlient Inc..Hora> 
35; incluye <Servidor web esp8266.Hora>
/ / PHI bus Storage
35; incluye <Proteína de separación.Hora>
Biblioteca del sistema de archivo de documentos SDA
35; incluye <Sdfat Corporation.Hora>

Constante Reino Selección de chips = SS;


Plantilla de página HTML
Constante Chamuscar Título HTML[] =
"Y?"Doctype HTML & gt
"; HTML & gt;"
"; la cabeza y la gt;"
"& lt; meta =" nombre = "ViewPort =" Content = "width = anchura del equipo, relación inicial = 1,0, relación máxima = 1,0, tasa de crecimiento del usuario = 0 & gt;"
"& lt; title & gt; sdka Reader & lt; title & gt;"
"& lt; modelo & gt;"
Texto principal {color de fondo:}: 35; d2f3eb; serie de caracteres: Arial, Helvetica, sans - serif; COLOR: ` 35; 000 000 000; tamaño de la letra: 12 PT;}
"& lt; / Style & gt;"
"/ cabeza & gt;"
"& lt; cuerpo & gt; & lt; div style =" MARGIN - LEFT: 30 px;; "gt;";
Constante Chamuscar Fin del HTML[] =
"Y & lt; / div & gt; & lt; / Body & gt;"
"/ html & gt;";

Global variable
/ / ejemplo de banco sdfat
 Sdfat Corporation Hora prevista de despegue;
 Variable global de objeto para guardar archivos y directorios
 Documento sdfile Documentación;
 Documento sdfile Archivo de directorio;
Punto de acceso
Constante Chamuscar *Página 2 = Servidor SD - 6; Nombre de la WLAN 
Constante Chamuscar *Contraseña = "Miniatura"; Contraseña de WLAN
Marcador de inicialización de la SDA
Bourg Dinette. = Falso;



Servidor web esp8266 Servidor(80); Activar servidor Web en puerto 80

La función determina el tipo de contenido según el final del documento
Cadena Obtener contenido(Cadena Nombre del archivo){   Si(Servidor.Hassage.("Descargando")) Regreso "Aplicación / flujo de bytes de ocho bits";   Hora prevista de despegue Si(Nombre del archivo.Final("Calor".)) Regreso "Texto / html";   Hora prevista de despegue Si(Nombre del archivo.Final("...html.")) Regreso "Texto / html";   Hora prevista de despegue Si(Nombre del archivo.Final("CSS".)) Regreso "Texto / CSS";   Hora prevista de despegue Si(Nombre del archivo.Final("Js")) Regreso "Aplicación / javascript";   Hora prevista de despegue Si(Nombre del archivo.Final(Papua Nueva Guinea)) Regreso "Imagen / PNG";   Hora prevista de despegue Si(Nombre del archivo.Final("Veneno".)) Regreso "Imagen / veneno";   Hora prevista de despegue Si(Nombre del archivo.Final("Gobierno del Japón")) Regreso "Imagen / JPEG";   Hora prevista de despegue Si(Nombre del archivo.Final("Ico")) Regreso "Imagen / X - icono";   Hora prevista de despegue Si(Nombre del archivo.Final("Xml")) Regreso "Texto / xml";   Hora prevista de despegue Si(Nombre del archivo.Final("... documento pdf")) Regreso "Aplicación / X - pdf";   Hora prevista de despegue Si(Nombre del archivo.Final("Cremallera")) Regreso "Aplicación / X - zip";   Hora prevista de despegue Si(Nombre del archivo.Final(Guangzhou.)) Regreso "Aplicación / X - gzip";   Regreso "Texto / texto puro";
}

/ / / función de envío de archivo
Parámetros de ruta y nombre de archivo
Bourg Enviar archivo(Cadena Ruta, Cadena Socio limitado) {   Chamuscar Compañia cPath[512];   UIT 32 Tamaño del archivo;   Cadena Tipo de contenido;   Chamuscar Nombre de empresa[256];   Documentación Mis archivos.;   Crear un nombre de archivo completo    / / / y guardar en el Grupo de caracteres   Ruta = Ruta+"/"+Socio limitado;   Ruta.Torre la Rey(Compañia cPath,512);   Convertir el nombre del archivo en letra pequeña   Establecer el tipo de archivo   Socio limitado.Escritura();   Tipo de contenido = Obtener contenido(Socio limitado);   Abre el archivo de la SDA.   Mis archivos. = Hora prevista de despegue.Abrir(Ruta, O lectura);   / / / transmisión fluida al servidor web   Servidor.Flujo de archivos(Mis archivos., Tipo de contenido);   Cerrar archivo   Documentación.Cerrar();   Regreso ¿En serio?;

}

Enviar directorio de archivos
Bourg Enviar directorio(Cadena Ruta) {   Chamuscar Compañia cPath[512];   Criterios uint16 N. = 0;   Chamuscar Nombre de empresa[256];   Cadena Lista de subcategorías;   Cadena Origen;   Cadena Nombre;      Ruta.Torre la Rey(Compañia cPath,512);   - Intentamos abrir el camino.   Si (Archivo de directorio.Abrir(Compañia cPath, O lectura)) {     Si la operación ha tenido éxito, fijamos la longitud del contenido como desconocida.     Servidor.Longitud del contenido(Contenido desconocido);     / / / y enviar el título     Servidor.Enviar(200,  "Texto / html",Título HTML);     Wificlient Inc. Cliente = Servidor.Cliente();     Si (Ruta != "/") {       / / si la ruta no apunta a un directorio raíz, añadir       - / / / y... "Fórmense en fila y vuelvan al avión.       Origen = Ruta;       - Necesitamos la lista de arriba.       Origen.Eliminar(Origen.Carga("/"));       / / / desde este formulario enviamos enlaces a nuestros clientes       Servidor.Enviar contenido(¿"& lt; A href =" http: / / 192.168.4.1 /?Índice = ");       Servidor.Enviar contenido(Origen);       Servidor.Enviar contenido((En miles de dólares EE.UU.);     }     / / / ahora, por fila de la entrada de índice     Aunque (Documentación.Abrir(&Archivo de directorio, O lectura)) {       - a la izquierda. - hemos trazado la ruta.       Servidor.Enviar contenido(¿"& lt; A href =" http: / / 192.168.4.1 /?Índice = ");       Servidor.Enviar contenido(Ruta);       Leer el nombre del archivo       Documentación.Obtener nombre(Nombre de empresa,255);         Nombre = Cadena(Nombre de empresa);       Si (Documentación.Isdir Corporation()) {         / / si la entrada es una subcategoría         / / / añadiremos esto a la ruta y lo conectaremos         Lista de subcategorías = "/"+Nombre;         Servidor.Enviar contenido(Lista de subcategorías);          Servidor.Enviar contenido("'>");            } Hora prevista de despegue {         ¿Es un archivo sencillo que hemos añadido al nombre del archivo?         Servidor.Enviar contenido("Y FN =");         Servidor.Enviar contenido(Nombre);         En el enlace, añadiremos "target =" a los archivos         Abrir en una ventana separada.         - Entonces cerramos la conexión.         Servidor.Enviar contenido("Target = & gt;");       }       Seguir el nombre como etiqueta al final del enlace       Servidor.Enviar contenido(Nombre);       / / / fin del enlace y previsualización de líneas       Servidor.Enviar contenido("; A & gt; & lt; BR & gt;");      Cerrar archivo      Documentación.Cerrar();    }    / / el directorio se cerrará cuando se hayan enviado todas las entradas    Archivo de directorio.Cerrar();    Notificación del contenido del cliente y terminación de la conexión    Servidor.Enviar contenido(Fin del HTML);    cliente.parar();    volver cierto;   } otra cosa {     volver falso;// error la ruta no se pudo abrir   }

}
// Esta función se llama cuando la solicitud al servidor web = "/"
nulo manejarRoot() {   // Rellene el nombre y la ruta del archivo con los valores predeterminados   Cadena camino = "/";   Cadena fn = "";   // Si la solicitud contiene argumentos apropiados   // Rellene la ruta y el nombre del archivo con los datos de la solicitud   si (servidor.hasArg("USTED")) camino = servidor.mal("USTED");   si (servidor.hasArg("FN")) fn = servidor.mal("FN");   De serie.imprimir("Camino");De serie.imprimir(camino);De serie.imprimir("Archivo:");De serie.println(fn);   Cadena nombre;   // Si la tarjeta SD aún no se ha inicializado, inicialícela   si (!sdinit) sdinit = sd.comenzar(chipSelect, SD_SCK_MHZ(50));   si (sdinit) {     // Si la inicialización fue exitosa, leemos los datos de la tarjeta     si (fn=="") {       // Si no se dio ningún nombre de archivo, intentamos enviar un directorio       si (!sendDirectory(camino)) {         // Si no se pudo enviar el directorio, configuramos sdinit en falso         // Ya que aparentemente no hay tarjeta en el lector. Enviamos una advertencia al cliente.         sdinit = falso;         servidor.enviar(200, "texto / html", "Sin tarjeta SD");       }     } otra cosa {       // De lo contrario, intentamos enviar el archivo especificado       si (!sendFile(camino,fn)) {         // Si no se pudo enviar el directorio, configuramos sdinit en falso         // Ya que aparentemente no hay tarjeta en el lector. Enviamos una advertencia al cliente.         sdinit = falso;         servidor.enviar(200, "texto / html", "Sin tarjeta SD");       }     }   } otra cosa {     // Inicialización fallida     servidor.enviar(200, "texto / html", "Sin tarjeta SD");   }
}

// Prepara el procesador
nulo configuración() {   De serie.comenzar(115200);   De serie.println();   De serie.imprimir("Configurando el punto de acceso ...");   // Configurar el punto de acceso   WiFi.softAP(ssid, contraseña);   IPAddress myIP = WiFi.softAPIP();   De serie.imprimir("Dirección IP AP:");   De serie.println(myIP);   // ip siempre es 192.168.4.1   // Definición de las funciones de respuesta   servidor.en("/", manejarRoot);   // iniciar servidor web   servidor.comenzar();   De serie.println("Servidor HTTP iniciado");
}

// lazo principal
nulo bucle() {   // Verificar solicitud   servidor.handleClient();
}

 

 

Espero que esta publicación haya sido útil y, como siempre, estoy contento con los comentarios y sugerencias. Hasta entonces, ¡que tengas un buen fin de semana!

Esp-8266Projekte für anfänger

19 comentarios

Andreas Wolter

Andreas Wolter

@Andreas: die Libraries wurden teilweise komplett in den ESP Core integriert und/oder nicht weiter gepflegt. Ich würde daher versuchen, es komplett anders aufzubauen.
Wenn die Zeit es zulässt, werden wir versuchen, den Beitrag zu aktualisieren.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Andreas

Andreas

Hallo,
ich habe mich heute Abend auch damit abgekämpft, diesen Sketch zum Laufen zu bringen. Auch ich bekomme die Fehlermeldung
‘operator=’ (operad types are ‘fs::File’ and ‘FsFile’)
Wenn ich es recht verstanden habe, kommt mit dem ESP8662-Library Paket auch eine FS.h, auf die dann von den anderen Libraries aus dem Paket zugegriffen wird. Und nun ist aber in unterschiedlichen Libraries der gleiche Ausdruck “File”, mit dem man die Variable “myfile” deklariert, vorhanden. Der Compiler weiß nun nicht, welche Deklaration aus welcher Library er für “File” verwenden soll. Es ist wohl ein Problem des ESP-Library-Pakets, das anscheinend auch nicht mehr gepflegt wird – jedenfalls hat ESP8266WiFi bei mir noch die Versionsnummer 1.0
Wie man das nun abstellt bzw. den Konflikt behebt, damit kenne ich mich leider zu wenig aus und bin auch aus den wenigen Foreneinträgen, die ich zu ähnlichen Problemen gefunden habe, nicht wirklich schlau geworden bzw. die Lösungscorschläge haben nicht funktioniert.

Markus

Markus

Hallo,

ich wäre auch an einer aktuellen Version interessiert. Leider sind meine eigenen Versuche bisher gescheitert :-( .

Grüße
Markus

Andreas Wolter

Andreas Wolter

aus Zeitgründen aktuell noch nicht.
Vielleicht finden SIe auch selbst eine Lösung, die wir dann hier zeigen können. Es gibt sehr viele neue und alte Bibliotheken, die zusammen funktionieren müssen.

Grüße,
Andreas Wolter

Markus

Markus

Hallo,
gibt es schon einen neuen Sketch mit der SD Bibliothek?

Grüße
Markus

Andreas Wolter

Andreas Wolter

ich habe mir das noch einmal angesehen. Es scheint, als wäre die Bibliothek und damit auch der Sketch in diesem Beitrag outdated. Wenn man den aktuellen ESP8266 Arduino Core installiert, wird dort die SD Bibliothek mit installiert. Außerdem die SDFAT Bibliothek. Beides scheint sich nicht zu vertragen. Wenn man nun noch versucht, manuell die angegebenen Bibliotheken zu installieren, geht das komplett in die Hose. Ich werde versuchen, mit der SD Bibliothek den Sketch zu aktualisieren. Das wird allerdings ein bisschen dauern.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Norbert

Norbert

Danke Herr Wolter für die schnelle Antwort.
Ich habe leider immer noch keinen Erfolg.
Die entsprechenden Bibliotheken (Ihr angegebener Link) habe ich installiert.
Leider kommt beim Kompilieren In Zeile 124 : " myfile = sd.open(path, O_READ);"
der Fehler " no match for ‘operator=’ (operad types are ‘fs::File’ and ‘FsFile’)

Ich verwende Arduino IDE 1.8.15
Ich würde gern den Micro-SD File Server nachbauen!
Könnten Sie mir bitte noch einen Tipp geben wo der Fehler liegen könnte.
Leider bin ich Anfänger und kann mit den Fehlermeldungen wenig anfangen.
Ich bedanke mich für Ihre Bemühungen
und verbleibe mit freundlichen Grüßen
Norbert

Im Fehlerfenster erscheint folgendes in Rot:
C:\Users\norbe\Desktop\Stromzähler – Messwerterfassung\PC und WEB-Server\Versuch3\Versuch3.ino: In function ‘bool sendFile(String, String)’:
Versuch3:81:32: error: no match for ‘operator=’ (operand types are ‘fs::File’ and ‘FsFile’)
In file included from C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/CertStoreBearSSL.h:26,
from C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:30,
from C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/WiFiClientSecure.h:23,
from C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/WiFiServerSecure.h:20,
from C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41,
from C:\Users\norbe\Desktop\Stromzähler – Messwerterfassung\PC und WEB-Server\Versuch3\Versuch3.ino:2:
C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/FS.h:52:7: note: candidate: ‘fs::File& fs::File::operator=(const fs::File&)’
52 | class File : public Stream
| ^~~~
C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/FS.h:52:7: note: no known conversion for argument 1 from ‘FsFile’ to ‘const fs::File&’
C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/FS.h:52:7: note: candidate: ‘fs::File& fs::File::operator=(fs::File&&)’
C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/FS.h:52:7: note: no known conversion for argument 1 from ‘FsFile’ to ‘fs::File&&’
Bibliothek ESP8266WiFi in Version 1.0 im Ordner: C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi wird verwendet
Bibliothek ESP8266WebServer in Version 1.0 im Ordner: C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WebServer wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SPI wird verwendet
Bibliothek SdFat-2.1.1 in Version 2.1.1 im Ordner: C:\Users\norbe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SdFat-2.1.1 wird verwendet
exit status 1
no match for ‘operator=’ (operand types are ‘fs::File’ and ‘FsFile’)

Andreas Wolter

Andreas Wolter

Die SD-Card Bibliotheken finden Sie als Download auf der verlinkten Produktseite des SD-Card Moduls: https://cdn.shopify.com/s/files/1/1509/1638/files/Micro_Memory_Card_Arduino.rar?9306531954326920108

Wir ergänzen das im Beitrag

Andreas Wolter
AZ-Delivery Blog

Norbert Patschorke

Norbert Patschorke

Hallo,
ich möchte es gern nachbauen.
Aber ich finde nirgends die passende SDFAT-Bibliothek.
Bitte gebt mir eine Hinweis (Link).
Gruß Norbert

Lompe

Lompe

Postscriptum:

Am PC mit dem Chrome-Browser geht es auch nicht.
Auch nicht, wenn die Anzeige unsicherer Seiten zu gelassen ist.

Lompe

Lompe

Funktioniert einwandfrei auf dem WIN 10 pc im Browser (Firefox).
Aber nicht auf dem Android Smartphone wenn über den Access Point aufgerufen. Die Routinen werden abgearbeitet (Serial-Monitor der Arduino IDE zur Kontrolle) und die Seiten gesendet, aber auf dem Bildschirm des Smartphones erscheint nichts.

fritzoskar

fritzoskar

Gibt es einen funktionierenden Sketsch?
Grüße

Henkel

Henkel

Welche SDFat Library braucht man? Mit der hier geht es nicht!
https://github.com/greiman/SdFat

Bibliothek 1. ESP8266 2.6.3
Hardwareziel Wemos D1 Mini
Arduino 1.8.12
Fehlermeldungen:

In file included from L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/FatLib/FatLib.h:27:0,

from L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/SdFat.h:33, from L:\arduino-1.8.12\portable\sketchbook\ESP8266WebserverSD\ESP8266WebserverSD\ESP8266WebserverSD.ino:51:

L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/FatLib/ArduinoFiles.h:122:7: error: redefinition of ‘class fs::File’

class File : public FatFile, public Stream { ^

In file included from L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/CertStoreBearSSL.h:26:0,

from L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:30, from L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/WiFiClientSecure.h:41, from L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/WiFiServerSecure.h:20, from L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41, from L:\arduino-1.8.12\portable\sketchbook\ESP8266WebserverSD\ESP8266WebserverSD\ESP8266WebserverSD.ino:45:

L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/FS.h:52:7: error: previous definition of ‘class fs::File’

class File : public Stream ^

In file included from L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/FatLib/FatLib.h:28:0,

from L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/SdFat.h:33, from L:\arduino-1.8.12\portable\sketchbook\ESP8266WebserverSD\ESP8266WebserverSD\ESP8266WebserverSD.ino:51:

L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/FatLib/FatFileSystem.h: In member function ‘fs::File FatFileSystem::open(const char*, oflag_t)’:

L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat\src/FatLib/FatFileSystem.h:95:13: error: ‘class fs::File’ has no member named ‘open’

tmpFile.open(vwd(), path, oflag); ^

Mehrere Bibliotheken wurden für “SdFat.h” gefunden
Benutzt: L:\arduino-1.8.12\portable\sketchbook\libraries\SdFat
Nicht benutzt: L:\arduino-1.8.12\portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266SdFat
exit status 1
Fehler beim Kompilieren für das Board LOLIN D1 R2 & mini.

Moritz

Moritz

That means i can serve files of the sd card? That would be nice even if it is slow!

jean-marie

jean-marie

Guten Abend, ich mache alle Projekte für Ihre Website.
Sie sind großartig, aber ich habe ein Problem mit der SDFAT-Bibliothek. Ich habe den Fehler “‘SdFat’ benennt keinen Typ”.
Kannst du mir helfen?
Ich habe schon im Netz gesucht aber ….
++

jm

Gerald

Gerald

Sorry, ich hatte das Programm vergessen. Ist jetzt dabei.

michael

michael

Hallo Gerald,
hast Du dafür kein Programm?
Grüße michael

michael

michael

Hallo, wo ist das Programm dazu?

Frank Eisenwiener

Frank Eisenwiener

Danke erstmal für die anregenden Projekte!

Irgendwie fehlt mir persönlich bei diesem hier aber die Software (oder habe ich was überlesen?)…

Gruß
Frank

Deja un comentario

Todos los comentarios son moderados antes de ser publicados