INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
SD-Karte schreiben mit Mega2560 und CTE70-Display
12.11.2015, 14:26
Beitrag #1
SD-Karte schreiben mit Mega2560 und CTE70-Display
Hallo Elektronikbegeisterte, ich kämpfe seit einigen Wochen mit dem Problem, dass ich meine SD-Karte mit dem Mega2560 nicht beschreiben/auslesen kann.

Zum Projekt: Ich möchte 10 Temperatursensoren (DS18B20) auslesen, die auf dem CTE70-Display ausgeben (7 Zoll, alle Messwerte an anderer Stelle). Dazu sollen die Messwerte auch alle 30 min in eine CSV-Datei auf der SD-Karte abgelegt werden.

Als Hardware habe benutze ich den Arduinio Mega 2560, Das Display CTE70 (Chip SSD1963) und integriertem SD-Slot auf der Rückseite + das passende Adaptershield.
Die Temperatur kann ich auslesen und auf dem Display ausgeben. Die SD-Karte ist ebenfalls erreichbar. Ich kann den Karten-Typ, vorhandene Dateien, Formatierung usw. auslesen. Jedoch bekomme ich die CSV-Datei nicht geöffnet - geschweige denn die Daten hier reingeschrieben.

Ich habe schon alles mögliche versucht - jedoch ohne Erfolg. Ich vermute, dass die SD-Karte zum Beschreiben nicht freigegeben ist (z.B. CS-Pin-Ansteuerung) oder ähnliches. Oder liegt das an den Shields, dass die das nicht können? Es ist eins aus China.

Ich bin solangsam am Ende mit meinem Latain und für jede Lösung dankbar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2015, 15:03
Beitrag #2
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
(12.11.2015 14:26)tupper-meister schrieb:  Hallo Elektronikbegeisterte, ich kämpfe seit einigen Wochen mit dem Problem, dass ich meine SD-Karte mit dem Mega2560 nicht beschreiben/auslesen kann.

Zum Projekt: Ich möchte 10 Temperatursensoren (DS18B20) auslesen, die auf dem CTE70-Display ausgeben (7 Zoll, alle Messwerte an anderer Stelle). Dazu sollen die Messwerte auch alle 30 min in eine CSV-Datei auf der SD-Karte abgelegt werden.

Als Hardware habe benutze ich den Arduinio Mega 2560, Das Display CTE70 (Chip SSD1963) und integriertem SD-Slot auf der Rückseite + das passende Adaptershield.
Die Temperatur kann ich auslesen und auf dem Display ausgeben. Die SD-Karte ist ebenfalls erreichbar. Ich kann den Karten-Typ, vorhandene Dateien, Formatierung usw. auslesen. Jedoch bekomme ich die CSV-Datei nicht geöffnet - geschweige denn die Daten hier reingeschrieben.

Ich habe schon alles mögliche versucht - jedoch ohne Erfolg. Ich vermute, dass die SD-Karte zum Beschreiben nicht freigegeben ist (z.B. CS-Pin-Ansteuerung) oder ähnliches. Oder liegt das an den Shields, dass die das nicht können? Es ist eins aus China.

Ich bin solangsam am Ende mit meinem Latain und für jede Lösung dankbar.
Und wir sollen jetzt raten, wodran es liegt? Betriebsspannung zu niedrig.

Ohne eine Schaltung, genauen Anschlussplan sowie einen Sketch können wir hier nichts ausrichten.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 08:46
Beitrag #3
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
Ja sorry. Hier der Link zu den Bauteilen:
http://www.ebay.de/itm/SainSmart-Mega256...Sw7PBTp~Ht

Ich habe das System mit einem externen Netzteil auf 7,5V laufen, da die Displaybeleuchtung schon ca. 500mA zieht und USB dafür nicht ausgelegt ist.
Die Speicherkarte habe ich auf Fat16 und Fat32 formatiert. Habe schon diverse Speicherkarten ausprobiert: 64MB, 1GB, 2GB, 4GB (SDHC). Immer das gleiche Problem.

Den Sourcecode habe ich aus den Arduino-Beispielen zusammen gestrickt.
Auf dem Shield-Adapter sind Lötjumper drauf. Die habe ich auch alle konfiguriert. Ebenfalls auch noch ein weiterer SD-Lot (also eins am Display und eins auf dem Shield). Bei beiden kann ich die SD-Karte finden, aber die LOG.CSV-Datei auf der Speicherkarte kann ich nicht öffnen und beschreiben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 09:22
Beitrag #4
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
(13.11.2015 08:46)tupper-meister schrieb:  Den Sourcecode habe ich aus den Arduino-Beispielen zusammen gestrickt.
Ja und wo ist der Sketch?

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 10:20
Beitrag #5
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
Ich suche den heute Nachmittag raus... Ich dachte, dass es evtl. schon ein bekanntes Problem ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 11:47
Beitrag #6
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
Hi,
mal grundsätzlich zum Vorgehen: Ich würde erst einmal einen Sketch schreiben, der einfach irgend etwas auf die SD-Karte schreibt, ohne den ganzen Kram außen herum. Damit kann man dann ausschließen (oder bestätigen), dass es an der SD-Karte selbst liegt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 21:49
Beitrag #7
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
Hier mein Code. Ich habe die Funktionen in mehreren TABs aufgebaut. Ich hoffe, dass ich die so jetzt richtig zusammen gebastelt habe...


#include <SPI.h>
#include <SD.h>
#include <Wire.h> //I2C

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

const int chipSelect = 53;

//IR Distance Sensor Pins
int IR1_pin = 2;
int IR2_pin = 3;

//Light Sensor Pins
int light_pin = 1;

float refresh_rate = 0.0; //Datalogger Rafresh Rate
int temp_adress = 72; //Adress of the I2C Temp Sensor
long id = 1; //Use this to store the id # of or reading


void setup()
{
Serial.begin(9600);
Wire.begin();

//------------------------------------
//SD-Karte initialisieren -> FUNKTIONIERT!!!

Serial.print("\nSD-Kard wird initialisiert...");
pinMode(53, OUTPUT); // 53 = Mega

if (!card.init(SPI_HALF_SPEED, chipSelect))
{
Serial.println("Karte nicht verfuegbar. Bitte pruefen!");
return;
}
else
{
Serial.println("Test OK, Karte verfuegbar");
}

//Ermittlung Karten-Typ und seriell ausgeben
Serial.print("- Karten-Type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unbekannt");
}

Serial.println("\nFolgende Dateien wurden auf der SD-Karte erfolgreich gefunden (Name, Datum und Groesse in Byte): ");
root.openRoot(volume);

//Vorhandene Dateien auf Karte auslesen
root.ls(LS_R | LS_DATE | LS_SIZE);
sdInitialisieren();

//------------------------------------
//Konfigurations-Parameter aus SD-Karte auslesen -> FUNKTIONIERT NICHT!!!
//Datei "COMMANDS.txt" öffnen und Konfigurationswert auslesen:

//Read the Configuration information (COMMANDS.txt)
File commandFile = SD.open("COMMANDS.TXT");
if (commandFile)
{
Serial.println("Datei wird geöffnet, Daten werden auslesen...");

float decade = pow(10, (commandFile.available() - 1));
while (commandFile.available())
{
float temp (commandFile.read() - '0');
refresh_rate*temp + decade + refresh_rate;
decade = decade / 10;
}
Serial.print("Refresh Rate = ");
Serial.print(refresh_rate);
Serial.println("ms");
commandFile.close();
}
else
{
Serial.println("COMMANDS.txt kann nicht gelesen werden!");
return;
}
}

//------------------------------------
void loop(void) {

//Check Light Level
int light_level = analogRead(light_pin);

//Read Temperature
/* ausgegraut, da noch nichts angeschlossen und die Loop blockiert wird
Wire.beginTransmission(temp_adress); //Start talking
Wire.write(0); //Ask for Register zero
Wire.endTransmission(); //Complete Transmission
Wire.requestFrom(temp_adress, 1); //Request 1 Byte
while (Wire.available() == 0); //wait for response
int temp_c = Wire.read(); //Get the temp
//int temp_f = round(temp_c*9.0/5.0+32.0); Convert to stupid Americans units
*/
//Read Distance
int IR1_val = analogRead(IR1_pin);
int IR2_val = analogRead(IR2_pin);

//Create Data string for storning to SD card
//We will use CSV Format
// String dataString = String(id) + ", " + String(light_level) + ", " + String(temp_c) + ", " + String(IR1_val) + " ," + String(IR2_val);
String dataString = String(id) + ", " + String(light_level) + ", " + String(IR1_val) + " ," + String(IR2_val);

/*
//Open a file to write to
//Only one fiel can be open at a time
File dataFile = SD.open("log.csv, FILE_WRITE"); //Datei auf SD-Karte öffnen
if (dataFile)
{
dataFile.println(dataString);
dataFile.close();
Serial.println(dataString);
}
else
{
Serial.println("Couldn't access file");
}

//Increment ID number
id++; //Zeile hochzählen, die geschrieben werden soll

delay(refresh_rate);
if (refresh_rate < 1000) delay(1000); //Wenn die Aktualisierungsrate (aus SD-Karte) nicht gelesen werden kann, mache 1000ms Pause
}
//------------------------------------
//CSV-Datei auf SD schreiben: -> FUNKTIONIER NICHT!!!

void sdSchreiben(void)
{
File logFile = SD.open("LOG.csv", FILE_WRITE);
if (logFile)
{
logFile.println(", , , ,"); //Just a leading blank line, incase there was previous data
String header = "ID, Light, Temp, IR1, IR2";
logFile.println(header);
logFile.close();
Serial.println(header);
}
else
{
Serial.println("LOG-Datei kann nicht geoeffnet werden");
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 07:41
Beitrag #8
RE: SD-Karte schreiben mit Mega2560 und CTE70-Display
Hat keiner eine Idee, wiso das mit dem Beschreiben der Datei nicht klappt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  matrix display elegoo uno R3 starter set lecker16 7 142 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  Data Logger Daten auf SD Card schreiben Crichton 12 293 22.11.2016 18:32
Letzter Beitrag: Crichton
  Se(h)Karte mit LED beleuchten manfredo 29 631 19.11.2016 16:29
Letzter Beitrag: Tommy56
  SD Karte wird nicht erkannt... Maxi290997 2 202 16.08.2016 14:36
Letzter Beitrag: Maxi290997
  Serial Monitor ASCII 1 schreiben BennIY 11 580 01.08.2016 16:42
Letzter Beitrag: Mathias
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 181 28.07.2016 16:30
Letzter Beitrag: Gandalf
  LCD Display plötzlich komische Zeichen Jessi97 2 243 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 202 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Arduino MEGA2560 Timer PWM Einsteiger94 3 658 04.04.2016 10:38
Letzter Beitrag: RMR
  Problem mit OLED 0.96" Display torsten_156 3 538 03.04.2016 15:10
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste