SD-Card: Dateinamen ändern und lesen

Guten Abend.
Ich möchte während der Laufzeit des Programmes in Abhängigkeit vom Inhalt einer Variablen (Meter, Volt) den Namen der SD-Datei ändern, die dazu passend gelesen werden soll. Das beigefügte Fragment funktioniert nicht. Es soll nur erklären, was gemeint ist. Wie sollte ich vorgehen? Danke für die Unterstützung. Rüdiger R.

#include <SD.h>
const int zahl = 12 ;
String filename[zahl] = "00000000.wav";

void setup() {
  Serial.begin(9600);
}
void loop() {
  filename[0] = '0';
  filename[1] = '1';
  filename[2] = '2';
  filename[3] = '3';
  filename[4] = '4';
  filename[5] = '5';
  filename[6] = '6';
  filename[7] = '7'; 
  filename[8] = '.';
  filename[9] = 'w';
  filename[10] = 'a';
  filename[11] = 'v';

  Serial.println("filename[]"); // funktioniert nicht

  myFile = SD.open("filename"); // Fehler
  while (myFile.available())
    Serial.write(myFile.read());
  myFile.close();
}

Du solltest dir mal Grundlagen zu Zeichenketten anschauen. Und den Unterschied zwischen C Strings und der Arduino String Klasse. Am besten macht man es aber ohne die String Klasse

String filename[zahl] = "00000000.wav";

Das ist kein String, sondern ein Array aus Strings!

Was soll das sein?

myFile = SD.open("filename"); // Fehler

filename ist eine Variable. Aber durch die Anführungszeichen machst du ein String Literal draus. Wieso erwartest du dass das funktioniert?

Vernünftig macht man das so:

char filename[13];   //12 + 1 (Null-Terminator!)

...

strcpy(filename, "01234567.wav");

Oder noch besser um RAM zu sparen:

strcpy_P(filename, PSTR("01234567.wav"));

Danke, das hat sehr geholfen. Jetzt funktioniert es.