Forum: Mikrocontroller und Digitale Elektronik Arduino: SD-Funktionen in Datei auslagern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Patrick N. (thanekrios)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gerne Daten von einer SD-Karte einlesen. Dies soll in einer 
ausgelagerten .c Datei geschehen, damit die Hauptdatei schön 
übersichtlich bleibt. Ich bekomme es aber nicht hin. Binde ich 
grundsätzlich falsch ein? Hab auch schon versucht alle Dateien in den 
Sketchordner zu tun hat aber auch nicht geholfen

Fehlermeldung:
1
Arduino: 1.6.5 (Windows 8.1), Platine: "Arduino Uno"
2
3
In file included from userinterface.c:2:0:
4
userinterface.h:5:16: fatal error: SD.h: No such file or directory
5
 #include "SD.h"
6
                ^
7
compilation terminated.
8
Fehler beim Kompilieren.


Mein Code sieht bis jetzt so aus:

Arduinodatei:
1
#include <SoftwareSerial.h>
2
#include "userinterface.h"
3
4
#define MAX_ZUTATEN 18
5
#define MAX_WORTLAENGE 15
6
7
SoftwareSerial bluetooth(5,6); // RX,TX
8
9
char zutaten[MAX_ZUTATEN][MAX_WORTLAENGE];
10
11
12
void setup() {
13
  Serial.begin(9600);
14
  Serial.println("Go:");
15
  bluetooth.begin(9600);
16
17
18
  if(positioneninit())
19
  {
20
    Serial.println("Fehler Initialisierung");
21
  }
22
}
23
24
25
void loop() {
26
27
}

userinterface.h:
1
#ifndef USERINTERFACE_h
2
#define USERINTERFACE_h
3
4
#include "Arduino.h"
5
#include "SD.h"
6
#include "SPI.h"
7
8
#define MAX_ZUTATEN 18
9
#define MAX_WORTLAENGE 15
10
11
//VARIABLENDEKLARATION
12
extern char zutaten[MAX_ZUTATEN][MAX_WORTLAENGE];
13
14
//FUNKTIONEN DEKLARATION
15
int positionsinit(void);
16
17
#endif

userinterface.c
1
#include "Arduino.h"
2
#include "userinterface.h"
3
4
File stream;
5
6
int positionsinit(){
7
8
int i=0; //Zaehler
9
int eingeleseneBytes;
10
int sdpos; //Position auf der SD-Karte
11
int zpos; //Position der Zutat
12
char cbuffer[MAX_WORTLAENGE]; //Einlesebuffer
13
14
// SD-Karte initialisieren
15
  Serial.print("Initializing SD card...");
16
17
  if (!SD.begin(4)) { //4= Chip Select
18
    Serial.println("initialization failed!");
19
    return;
20
  }
21
  Serial.println("initialization done.");
22
23
24
stream = SD.open("test.txt");
25
if (stream) { weiterer CODE
26
}

MfG
Patrick


Edit: wenn ich die Dateien SD.h und SPI.h in die Arduinodatei inklude. 
Kommt folgende Fehlermeldung:
1
userinterface.c: In function 'positionsinit':
2
userinterface.c:14: error: 'Serial' undeclared (first use in this function)
3
   Serial.print("Initializing SD card...");
4
   ^
5
userinterface.c:14:3: note: each undeclared identifier is reported only once for each function it appears in
6
userinterface.c:16: error: 'SD' undeclared (first use in this function)
7
   if (!SD.begin(4)) { //4= Chip Select
8
        ^
9
userinterface.c:23: error: 'stream' undeclared (first use in this function)
10
 stream = SD.open("test.txt");
11
 ^
12
'Serial' undeclared (first use in this function)

: Bearbeitet durch User
von nixwasigenau (Gast)


Bewertung
1 lesenswert
nicht lesenswert
einfach einen neuen TAB (STRG+SHIFT+N) eröffnen - datei wird automatisch 
eingebunden !

von Patrick N. (thanekrios)


Bewertung
0 lesenswert
nicht lesenswert
Besten Dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.