Progmem klappt nicht

Hallo alle zusammen!
Ich wollte mit dem Arduino ein Lied programmieren, doch leider habe ich mehr Variablen als in den RAM passen, also wollte ich PROGMEM verwenden. Ich habe folgenden Code verwendet:

//Notenwerte
const int noteo[] PROGMEM = {e*2, e*2,...};

//Notenlängen
const int dauero[] PROGMEM = {4, 4, 4,...};

//Anzahl der Noten
int countero = 509;

Das sind meine Variablen. Die ersten Zwei wollte ich mit PROGMEM versehen.
Verwenden wollte ich diese Variablen so:

for(int i = 0; i <= countero; i++)
      {
        int dauer = 450 / dauero[i];
        tone(speaker, noteo[i], dauer);

        int pause = dauer * 1.30;
        delay(pause);

        noTone(speaker);
      }

Nun wird mir immer folgender Error angezeigt:
error: dauero causes a section type conflict

Bin noch ein ziemlicher Neuling mit den Arduinos, weswegen ich auch dringend Hilfe brauche. Ich hab schon viele Forumseinträge gelesen doch keiner hat mir so recht geholfen :frowning:
Kann mir bitte jemand schreiben wir man den Code schreiben muss, damit man nicht mehr diesen Fehler bekommt?
Danke und Grüßle

David

strohmy98:
Verwenden wollte ich diese Variablen so:

Falsche Verwendung.

Du kannst keine PROGMEM Variablen direkt verwenden, da diese nicht im RAM-Speicher, sondern im Flash-Speicher abgelegt sind. Du mußt daher Funktionen verwenden, die die Daten aus dem PROGMEM-Flashspeicher auslesen und Dir zurückliefern.

Bei Dir kommt die Verwendung von pgm_read_word in Frage, eine Funktion, mit der immer 2 Bytes aus dem PROGMEM gelesen werden. Solange die Werte nicht negativ werden, kannst Du einfach das machen:
statt noteo[index]
setze pgm_read_word(&noteo[index])
also z.B.

 int dauer = 450 / pgm_read_word(&dauero[i]);
tone(speaker, pgm_read_word(&noteo[i]), dauer);