
Da gehts weiter, wenn ich die Dinger am Tisch habe.
Franz

Forum zur gegenseitigen Hilfe für Hobby´s, Spass und Technik, im Raum Penzberg, Garmisch, Bad Tölz, Seeshaupt
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]);
}
}
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]);
}
}
Mitglieder in diesem Forum: Ahrefs [Bot] und 5 Gäste