#include <SPI.h>
#include <SD.h>
#define SLIDER1 A0
#define SLIDER2 A1
#define SLIDER3 A2
#define SLIDER4 A3
#define SLIDER5 A4
#define SAVE_BUTTON 2 // yellow button
#define LOAD_BUTTON 3 // green button
#define DELETE_BUTTON 4 // blue button
#define READ_INT_BUTTON 5 // grey button
#define CHIP_SELECT 10
#define NUM_OF_VAL 5
File data;
void setup() {
Serial.begin(9600);
pinMode(SAVE_BUTTON, INPUT_PULLUP);
pinMode(LOAD_BUTTON, INPUT_PULLUP);
pinMode(DELETE_BUTTON, INPUT_PULLUP);
pinMode(READ_INT_BUTTON, INPUT_PULLUP);
if (!SD.begin(CHIP_SELECT)) {
Serial.println("SD-Karten Initialisierung fehlgeschlagen!");
return;
}
Serial.println("SD-Karte bereit.");
}
void loop() {
int val[NUM_OF_VAL];
if (digitalRead(SAVE_BUTTON) == LOW) {
val[0] = analogRead(SLIDER1);
val[1] = analogRead(SLIDER2);
val[2] = analogRead(SLIDER3);
val[3] = analogRead(SLIDER4);
val[4] = analogRead(SLIDER5);
deleteData();
saveData(val);
delay(500);
}
if (digitalRead(LOAD_BUTTON) == LOW) {
loadData();
delay(500);
}
if (digitalRead(DELETE_BUTTON) == LOW) {
deleteData();
delay(500);
}
if (digitalRead(READ_INT_BUTTON) == LOW) {
int returnedVal = printDataAsInt(1);
Serial.print("PrintDataAsInt at Index 1 returns: ");
Serial.println(returnedVal);
delay(500);
}
}
void saveData(int val[NUM_OF_VAL]) {
data = SD.open("data.txt", FILE_WRITE);
if (data) {
for(int i = 0; i < NUM_OF_VAL; i++){
data.print(val[i]);
data.print(",");
}
data.close();
Serial.println("Werte gespeichert.");
} else {
Serial.println("Fehler beim Öffnen der Datei zum Speichern.");
}
}
void loadData() {
data = SD.open("data.txt");
if (data) {
Serial.println("Gespeicherte Werte:");
while (data.available()) {
Serial.write(data.read());
}
data.close();
Serial.println();
} else {
Serial.println("Fehler beim Öffnen der Datei zum Laden.");
}
}
void deleteData() {
if (SD.remove("data.txt")) {
Serial.println("Datei gelöscht.");
} else {
Serial.println("Fehler beim Löschen der Datei.");
}
}
int printDataAsInt(int pos) {
int dataAtPos;
data = SD.open("data.txt");
if (data) {
Serial.println("Werte als int:");
for(int i = 0; i < NUM_OF_VAL; i++) {
int value = data.parseInt();
Serial.println(value);
if(i == pos){
dataAtPos = value;
}
}
data.close();
} else {
Serial.println("Fehler beim Öffnen der Datei zum Auslesen.");
}
return dataAtPos;
}