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
Werte aus der SD - Karte zuordnen
05.09.2015, 22:34
Beitrag #9
RE: Werte aus der SD - Karte zuordnen
Danke erstmal


Habe es getestet mit einen haufen fehler Fehlermeldungen

Code:
sketch_sep05g:3: error: 'File' has not been declared
sketch_sep05g:2: error: 'Code' does not name a type
sketch_sep05g:3: error: 'File' has not been declared
In file included from sketch_sep05g.ino:9:0:
sketch_sep05g:2: error: 'Code' does not name a type
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:178:39: error: 'SPISettings' has not been declared
In file included from sketch_sep05g.ino:9:0:
   inline static void beginTransaction(SPISettings settings) {
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:178:39: error: 'SPISettings' has not been declared
                                       ^
   inline static void beginTransaction(SPISettings settings) {
                                       ^
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h: In static member function 'static void SPIClass::beginTransaction(int)':
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:203:21: error: request for member 'spcr' in 'settings', which is of non-class type 'int'
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h: In static member function 'static void SPIClass::beginTransaction(int)':
     SPCR = settings.spcr;
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:203:21: error: request for member 'spcr' in 'settings', which is of non-class type 'int'
                     ^
     SPCR = settings.spcr;
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:204:21: error: request for member 'spsr' in 'settings', which is of non-class type 'int'
                     ^
     SPSR = settings.spsr;
D:\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:204:21: error: request for member 'spsr' in 'settings', which is of non-class type 'int'
                     ^
     SPSR = settings.spsr;
                     ^
'File' has not been declared

'File' has not been declared

gruss Gandi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2015, 08:01 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2015 08:04 von HaWe.)
Beitrag #10
RE: Werte aus der SD - Karte zuordnen
eine Sache ist mir heute morgen eingefallen:
die schlauen Arduino-Leute haben Float-Formatierungen, die du hier brauchst, schlicht weggelassen.
Ich habe sie bei mir nachinstallert, damit funktioniert es.


Viele deiner Fehlermeldungen verstehe ich aber nicht, bei mir läuft es dann.
Keine Fehlermeldungen bei mir!

Die IDE muss aber mindestens 1.6.1 sein, besser 1.6.5, und <SPI.h> und <SD.h> müssen korrekt installiert sein.
Außerdem musst du deinen SD-cs-Pin richtig einstellen im Code und entsprechend verkabeln.

Ja, ja: Arduino ist schon manchmal zum Verzweifeln.


Frage:
Bevor du kompliziert die ganze von Arduino verbockte Float Sache patchst:
Kannst du nicht deine Zahlen in Ints umrechnen?

Das wäre für dich viel einfacher.


Angehängte Datei(en)
.zip  libc_all.zip (Größe: 1 MB / Downloads: 17)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2015, 13:51
Beitrag #11
RE: Werte aus der SD - Karte zuordnen
Gandi,
ich glaube, du hast den Code nicht richtig in deine Arduino-IDE kopiert!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2015, 19:33
Beitrag #12
Information RE: Werte aus der SD - Karte zuordnen
Hallo Gandalf, es geht auch einfach.

Hier mal ein Beispiel.

Code:
#include <string.h>
#include <stdlib.h>

String wert_A = "ST06";
float wert_B = 28.01;
int wert_C = 48;
String Aus[2];

void setup() {
  Serial.begin(9600);
  String Satz = String(wert_A + ";" + String(wert_B) + ";" + String(wert_C) + '\0');
  char words[Satz.length()];
  Satz.toCharArray(words, Satz.length());
  char trenner[] = ";";
  char* wPos;
  wPos = strtok(words, trenner);
  int i = 0;
  while (wPos != NULL) {
    Aus[i] = wPos;
    i++;
    Serial.println(wPos);
    wPos = strtok(NULL, trenner);
  }
  String A = Aus[0];
  float B = Aus[1].toFloat();
  int C = Aus[2].toInt();
  Serial.println();
  Serial.println(A);
  Serial.println(B);
  Serial.println(C);[/color]
}

void loop () {
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.09.2015, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2015 10:58 von HaWe.)
Beitrag #13
RE: Werte aus der SD - Karte zuordnen
so, nur zur Info als Rückmeldung, falls du dich noch für meinen fprintf / fgets- Code interessierst (der analog wie die "echte" C-stdio.h Ausgabe funktioniert):

Ich konnte soeben das Programm mit einer ungenutzten SD-Karte testen ...
Es funktioniert!
Ich musste nur die hier unnötige laufende Zeilen-Nummern-Ausgabe löschen.

In meinem Testprogramm wird immer erst eine eventuell vorher vorhandene Datei gelöscht, bevor sie neu erstellt und geschrieben wird.
Für dich müsste dieser Schritt ggf. angepasst werden - man kann ntl auch an eine existierende Datei einfach Daten anhängen.

Das Programm schreibt zur Verdeutlichung immer erst den String auf den Monitor, den er aus der Datei liest, und anschließend die in Float umgewandelte Zahl als Vergleich, zur Kontrolle. Die Arduino-IDE formatiert dazu die Ausgabe auf 2 Nachkommastellen, auch das kannst du aber anpassen.

Hier unten kannst du die Bildschirmausgabe über den serial-Monitor sehen!

Ich würde mich freuen, wenn ich dir helfen konnte, selbstverständlich darfst du das Programm frei verwenden, und selbstverständlich ist meine Hilfe wie immer kostenlos !
(letzte Bemerkung war nur aus Spaß und war nur für Insider Wink )

Code:
#: SD Initializing...
#: ...SD OK !      
#: test.txt exists    
#: Removing test.txt      
#: test.txt  N/A    
#: Writing strings to test.txt
#: test.txt closed.  

#: reading test.txt
1.100000
a1  =1.10
2.200000
a2  =2.20
3.300000
a3  =3.30
44.400000
a4  =4.40
5.500000
a5  =5.50
#: test.txt closed.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.09.2015, 12:43
Beitrag #14
RE: Werte aus der SD - Karte zuordnen
habe es probiert scheint soweit zu funzen muss ich sehen das ich das in den Mega reinprügel da mein 2tes mega kaputt ist und meine Daten mehr annimmt

Danke erst mal ... ich werde über den ervolg berichten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.09.2015, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2015 16:50 von HaWe.)
Beitrag #15
RE: Werte aus der SD - Karte zuordnen
ps,
insb. auf deine PM hin:
falls du mit den ANSI C libs (insb. stdio.h) vertraut bist - hier habe ich eine selbst geschriebene Arduino-lib verlinkt, die generell die Arbeit mit SD und strings einfacher - oder zumindest C-ähnlicher - macht:
http://www.mindstormsforum.de/viewtopic....491#p66429

share and enjoy! 8-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.09.2015, 13:13
Beitrag #16
RE: Werte aus der SD - Karte zuordnen
hallo nochmal ...

so wie ich mir das vorgestellt habe habe ich das auch soweit hinbekommen

Code:
#include <SPI.h>
#include <SD.h>

File pl1 ;
File pl2 ;
File pl3 ;
File pl4 ;
File pl5 ;

char c;

float pa, pb, pc, pd, pe;

void setup()
{  
  
pa = 0.12345;
pb = 1.23455;
pc = 2.34567;
pd = 9.87653;
pe = 4.55656;

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  SD.remove("last1.txt");
  Serial.println("DEL last 1 OK.");
  delay (500);

  // --------------------
  // erste datei
  // --------------------

  pl1 = SD.open("last1.txt", FILE_WRITE);
  if (pl1) {
    Serial.print("Writing to Last1.txt...");
    pl1.println(pa);
    pl1.close();
    Serial.println("last 1 OK.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("Fehler in Last1");
  }
  // ----------------------------------------------
  // zweite datei
  // ----------------------------------------------

  SD.remove("last2.txt");
  Serial.println("DEL last 2 OK.");
  delay (500);

  pl2 = SD.open("last2.txt", FILE_WRITE);
  if (pl2) {
    Serial.print("Writing to Last2.txt...");
    pl2.println(pb);
    pl2.close();
    Serial.println("last 2 OK.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("Fehler in Last2");
  }

  // ----------------------------------------------
  // dritte datei
  // ----------------------------------------------
  
  SD.remove("last3.txt");
  Serial.println("DEL last 3 OK.");
  delay (500);

  pl3 = SD.open("last3.txt", FILE_WRITE);
  if (pl3) {
    Serial.print("Writing to Last3.txt...");
    pl3.println(pc);
    pl3.close();
    Serial.println("last 3 OK.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("Fehler in Last3");
  }

  // ----------------------------------------------
  // vierte datei
  // ----------------------------------------------

  SD.remove("last4.txt");
  Serial.println("DEL last 4 OK.");
  delay (500);

  pl4 = SD.open("last4.txt", FILE_WRITE);
  if (pl4) {
    Serial.print("Writing to Last4.txt...");
    pl4.println(pd);
    pl4.close();
    Serial.println("last 4 OK.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("Fehler in Last4");
  }

  // ----------------------------------------------
  // fünfte datei
  // ----------------------------------------------

  SD.remove("last5.txt");
  Serial.println("DEL last 5 OK.");
  delay (500);

  pl5 = SD.open("last5.txt", FILE_WRITE);
  if (pl5) {
    Serial.print("Writing to Last5.txt...");
    pl5.println(pe);
    pl5.close();
    Serial.println("last 5 OK.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("Fehler in Last5");
  }
delay (2000);

  // ----------------------------------------------
  // Auslesen
  // ----------------------------------------------



  // --------------------
  // Datei 1
  // --------------------
  
    pl1 = SD.open("last1.txt",FILE_READ);
  if (pl1) {
    Serial.println("last1.txt:");
    while (pl1.available()) {
      pa = (pl1.read());
    }
    pl1.close();
  } else {
    Serial.println("error opening last1.txt");
  }

        Serial.println(pa);


  // --------------------
  // Datei 2
  // --------------------
    pl2 = SD.open("last2.txt",FILE_READ);
  if (pl2) {
    Serial.println("last2.txt:");
    while (pl2.available()) {
      pb = (pl2.read());

    }
    pl2.close();
  } else {
    Serial.println("error opening last2.txt");
  }
        Serial.println(pb);

  // --------------------
  // Datei 3
  // --------------------

    pl3 = SD.open("last3.txt",FILE_READ);
  if (pl3) {
    Serial.println("last3.txt:");
    while (pl3.available()) {
      pc = (pl3.read());

    }
    pl3.close();
  } else {
    Serial.println("error opening last3.txt");
  }
         Serial.println(pc);

  // --------------------
  // Datei 4
  // --------------------

    pl4 = SD.open("last1.txt",FILE_READ);
  if (pl4) {
    Serial.println("last4.txt:");
    while (pl4.available()) {
      pd = (pl4.read());

    }
    pl4.close();
  } else {
    Serial.println("error opening last4.txt");
  }
        Serial.println(pd);

  // --------------------
  // Datei 5
  // --------------------
    pl5 = SD.open("last5.txt",FILE_READ);
  if (pl5) {
    Serial.println("last5.txt:");
    while (pl5.available()) {
      pe = (pl5.read());

    }
    pl5.close();
  } else {
    Serial.println("error opening last5.txt");
  }
        Serial.println(pe);
}
void loop()
{
// nix machen
}

als antwort bekomme ich das hier

Code:
Initializing SD card...initialization done.
DEL last 1 OK.
Writing to Last1.txt...last 1 OK.
DEL last 2 OK.
Writing to Last2.txt...last 2 OK.
DEL last 3 OK.
Writing to Last3.txt...last 3 OK.
DEL last 4 OK.
Writing to Last4.txt...last 4 OK.
DEL last 5 OK.
Writing to Last5.txt...last 5 OK.
last1.txt:
10.00
last2.txt:
10.00
last3.txt:
10.00
last4.txt:
10.00
last5.txt:
10.00

die daten stehen in der sdkarte drin aber die ausgabe stimmt nicht ... wo mache ich den Fehler ?HuhHuhHuh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Se(h)Karte mit LED beleuchten manfredo 29 621 19.11.2016 16:29
Letzter Beitrag: Tommy56
  SD Karte wird nicht erkannt... Maxi290997 2 202 16.08.2016 14:36
Letzter Beitrag: Maxi290997
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 466 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 736 02.07.2016 14:18
Letzter Beitrag: hotsystems
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 340 30.03.2016 16:42
Letzter Beitrag: MartinK
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 507 29.03.2016 16:45
Letzter Beitrag: MartinK
  Werte an anderes Programm weiterleiten Typ 2 434 12.03.2016 23:28
Letzter Beitrag: Typ
  digitale Werte trotz Stromunterbrechung nicht verlieren goldfisch 63 4.221 06.01.2016 13:17
Letzter Beitrag: Bitklopfer
  werte vom MPU6050 gy521 bekommen max1798 0 459 18.12.2015 21:11
Letzter Beitrag: max1798
  SD-Karte schreiben mit Mega2560 und CTE70-Display tupper-meister 12 1.424 29.11.2015 11:57
Letzter Beitrag: tupper-meister

Gehe zu:


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