SD- Kartenleser
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
SD- Kartenleser
Ich habe mir jetzt mal zwei SD-Kartenleser bestellt. Dass ich auch mal ein Medium zur Verfügung habe, mit dem ich grosse Dateien ablegen kann. Ja und dann eben auch einfach SD-Karte in den PC rein, und auf die Daten zugreifen. So der Plan.
Da gehts weiter, wenn ich die Dinger am Tisch habe.
Franz
Da gehts weiter, wenn ich die Dinger am Tisch habe.
Franz
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: SD- Kartenleser
Hallooooooo Wolfgang
Ich habe die Kartenleser gefunden, die ich im Juli 2021 gekauft habe.
Hier habe ich ein Programm dazu, womit ich meine SD - Karten mit der Exccel Datei ausgelesen habe.
Grüße
Franz
Ich habe die Kartenleser gefunden, die ich im Juli 2021 gekauft habe.
Hier habe ich ein Programm dazu, womit ich meine SD - Karten mit der Exccel Datei ausgelesen habe.
Grüße
Franz
Code: Alles auswählen
/*
###################################################
Die Pins des Kartenlesers sind beim Arduino Mega:
Miso Pin 50
Mosi Pin 51
SCK Pin 52
CS Pin 53
GND und VCC 5 Volt natürlich auch noch.
Achtung beim Uno ist sie auf anderen Pin´s !!
MOSI - Pin 11 auf Arduino Uno/Duemilanove/Diecimila
MISO - Pin 12 auf Arduino Uno/Duemilanove/Diecimila
CLK - Pin 13 auf Arduino Uno/Duemilanove/Diecimila
CS - hängt von Ihrem SD-Kartenschild oder -modul ab.
der wird mit chipSelectPin = ?? bestimmt.
Der Kartenleser macht Karten bis 32GB
Mit FAT16/FAT32-Partition
###################################################
*/
#include <SPI.h>
#include <SD.h>
File myFile;
const byte chipSelectPin = 53;
const String filename = "Mappe1.csv";
char zeilenBuffer[30];
char auswerteBuffer[6][8];
byte durchgaenge = 0;
//===========================================================================================
void setup()
{
pinMode(SS, OUTPUT);
Serial.begin(9600);
while (!Serial)
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelectPin))
{
Serial.println("Initialisierung fehlgeschlagen!");
while (1);
}
Serial.println("Initialisierung abgeschlossen .");
}
//==========================================================================================
void loop()
{
myFile = SD.open(filename);
Serial.print(filename);
if (myFile)
{
Serial.println(F(" geöffnet!"));
while (myFile.available())
{
Serial.print(F("Durchgaenge= "));
Serial.println(durchgaenge);
durchgaenge ++;
leseZeile();
ausgabeZeile();
teileZeile();
ausgabeWerte();
}
// schließe die Datei:
myFile.close();
Serial.println(F(" geschlossen!"));
while (1);
}
else
{
// Wenn die Datei nicht geöffnet wurde, drucke einen Fehler :
Serial.print("Fehler beim öffnen von ");
Serial.println(filename);
}
}
//=========================================================================================
void leseZeile()
{
char myChar = '\0';
static byte bufferPosition = 0;
if (bufferPosition == 0) memset(zeilenBuffer, '\0', sizeof(zeilenBuffer));
while (myFile.available() && myChar != '\n')
{
myChar = myFile.read();
if (isPrintable(myChar))
{
zeilenBuffer[bufferPosition] = myChar;
bufferPosition++;
}
}
// Hier ist ZeilenEnde / DateiEnde
bufferPosition = 0;
}
//=========================================================================================
void ausgabeZeile()
{
Serial.print(F("eingelsene Zeile ist: "));
Serial.println(zeilenBuffer);
}
//=========================================================================================
void teileZeile()
{
// zeilenbuffer in auswerteBuffer umschreiben
memset(auswerteBuffer, '\0', sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]));
strcpy (auswerteBuffer[0], strtok(zeilenBuffer, ";"));
strcpy (auswerteBuffer[1], strtok(NULL, ";"));
strcpy (auswerteBuffer[2], strtok(NULL, ";"));
strcpy (auswerteBuffer[3], strtok(NULL, ";"));
strcpy (auswerteBuffer[4], strtok(NULL, ";"));
strcpy (auswerteBuffer[5], strtok(NULL, ";"));
Serial.println(F("Puffer geteilt!"));
}
//========================================================================================
void ausgabeWerte()
{
for (byte b = 0; b < sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]); b++)
{
Serial.print(F("Wert "));
Serial.print(b);
Serial.print(F(" ist: "));
Serial.println(auswerteBuffer[b]);
}
}
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: SD- Kartenleser
Ich habe hier das Programm zum SD-Karten Auslesen, um meinen Kreuztisch zu steuern. Ich habe dem Kreuztisch die Kurbeln geklaut, und fahre den jetzt mit Nema 23 Motoren. das Projekt klappt schon recht gut. Wer dazu mehr sehen will, geht bitte auf den Link.
Franz
PS: Hier das Programm zum Auslesen der SD - Karte für den Kreuztisch:
Franz
PS: Hier das Programm zum Auslesen der SD - Karte für den Kreuztisch:
Code: Alles auswählen
/*Die Pins des Kartenlesers sind beim Arduino Mega:
Miso Pin 50
Mosi Pin 51
SCK Pin 52
CS Pin 53
GND und VCC 5 Volt natürlich auch noch.
Der Kartenleser macht Karten bis 32GB
Mit FAT16/FAT32-Partition
*/
#include <SPI.h>
#include <SD.h>
File myFile;
const byte chipSelectPin = 53;
const String filename = "Mappe1.csv";
char zeilenBuffer[30];
char auswerteBuffer[6][8];
byte durchgaenge = 0;
//===========================================================================================
void setup()
{
pinMode(SS, OUTPUT);
Serial.begin(9600);
while (!Serial)
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelectPin))
{
Serial.println("Initialisierung fehlgeschlagen!");
while (1);
}
Serial.println("Initialisierung abgeschlossen .");
}
//==========================================================================================
void loop()
{
myFile = SD.open(filename);
Serial.print(filename);
if (myFile)
{
Serial.println(F(" geöffnet!"));
while (myFile.available())
{
Serial.print(F("Durchgaenge= "));
Serial.println(durchgaenge);
durchgaenge ++;
leseZeile();
ausgabeZeile();
teileZeile();
ausgabeWerte();
}
// schließe die Datei:
myFile.close();
Serial.println(F(" geschlossen!"));
while (1);
}
else
{
// Wenn die Datei nicht geöffnet wurde, drucke einen Fehler :
Serial.print("Fehler beim öffnen von ");
Serial.println(filename);
}
}
//=========================================================================================
void leseZeile()
{
char myChar = '\0';
static byte bufferPosition = 0;
if (bufferPosition == 0) memset(zeilenBuffer, '\0', sizeof(zeilenBuffer));
while (myFile.available() && myChar != '\n')
{
myChar = myFile.read();
if (isPrintable(myChar))
{
zeilenBuffer[bufferPosition] = myChar;
bufferPosition++;
}
}
// Hier ist ZeilenEnde / DateiEnde
bufferPosition = 0;
}
//=========================================================================================
void ausgabeZeile()
{
Serial.print(F("eingelsene Zeile ist: "));
Serial.println(zeilenBuffer);
}
//=========================================================================================
void teileZeile()
{
// zeilenbuffer in auswerteBuffer umschreiben
memset(auswerteBuffer, '\0', sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]));
strcpy (auswerteBuffer[0], strtok(zeilenBuffer, ";"));
strcpy (auswerteBuffer[1], strtok(NULL, ";"));
strcpy (auswerteBuffer[2], strtok(NULL, ";"));
strcpy (auswerteBuffer[3], strtok(NULL, ";"));
strcpy (auswerteBuffer[4], strtok(NULL, ";"));
strcpy (auswerteBuffer[5], strtok(NULL, ";"));
Serial.println(F("Puffer geteilt!"));
}
//========================================================================================
void ausgabeWerte()
{
for (byte b = 0; b < sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]); b++)
{
Serial.print(F("Wert "));
Serial.print(b);
Serial.print(F(" ist: "));
Serial.println(auswerteBuffer[b]);
}
}
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: SD- Kartenleser
auf der Suche nach dem Befehl "memset" bin ich auf diesen Link gestossen. Über den werde ich mich jetzt mal fürs Erste hermachen. Dann schaumal weiter.
Franz
Dann habe ich da noch was gut Verständliches gefunden.
Hier ist noch ein C-Kurs. Glaube das kann ich auch noch was brauchen.
Franz
Dann habe ich da noch was gut Verständliches gefunden.
Hier ist noch ein C-Kurs. Glaube das kann ich auch noch was brauchen.
Wer ist online?
Mitglieder in diesem Forum: Ahrefs [Bot] und 1 Gast