Arduino: SD-Funktionen in Datei auslagern

OP #4923517
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)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.