Daten speichern

Hallo zusammen,

ich bin neu in der Arduino Welt und bin aufgrund eines Projektes mit dem Arduino Due eingestiegen. Der Arduino wird von mir genutzt um eine digitale Sakralorgel zu bauen, dabei übernimmt der Arduino die midifizierung der Pedalklaviatur mit 30 Tasten und die Registerzüge. Das funktioniert alles ohne Probleme nach kurzer Einarbeitung.

Nun möchte ich jedoch für die Registrierung der Orgel die Programmierung der Schnelltasten irgendwo speichern. Im Prinzip funktioniert es so dass eine "Set" Taste vorhanden ist, drück man diese kann man die aktuelle Registrierung der Orgel auf einer von 10 Tasten abspeichern und dann sofort wieder abrufen.

Auch das funktioniert ohne Probleme, jedoch bleiben die Daten nach Stromverlust logischerweise nicht erhalten. Ich habe mir nun einmal verschiedene Möglichkeiten angesehen wie ich Daten dauerhaft speichern kann. Der EEPROM fällt bei meiner Auswahl raus da die Schreibvorgänge Limitiert sind. Nun stehe ich vor der Wahl Sd-Karte oder ein NVRAM, evtl. auch etwas an dass ich noch nicht gedacht habe.

Was habt ihr für Erfahrungen gemacht, wichtig ist mir eine Lösung die nicht zu komplex ist sowohl elektronisch wie auch von der Programmierung. Die Datenmengen die gespeichert werden sollen sind nicht sonderlich groß. Im Prinzip nur 10x 20 Boolesche Variablen.

Ich danke euch für eure Anregungen.

(deleted)

Hallo und danke für die Antwort.

Ich denke auch die SD Version ist die beste Option. Bei den Modulen komme ich mit dem SPI noch nicht so ganz klar. Die Module sind immer in anderen Varianten demonstriert, aber am Due gibt es ja einen extra SPI Header. Bedeutet dies dass ich dort das Modul ganz einfach verbinden kann ohne die sonst notwendigen Pins zu benutzen?

(deleted)

Falls Du doch auf einen Uno wechseln willst:

Das EEPROM kann 100000 Schreibzyklen ab. Das bedeutet, dass Du fast 274 Jahre lang jeden Tag eine Belegung der Schnelltasten abspeichern kannst. Nehmen wir mal an, der die Orgel bedienende Mensch (oder darf man noch Organist schreiben?) kommt einmal in der Woche ans Instrument und braucht 20 Versuche bis die Belegung steht: Dann sind es immer noch 96 Jahre (100000 / 52 / 20). Könnte ja vielleicht doch reichen.

Für den Due:
Es gibt kleine seriell beschreibbare EEPROM-Chips, die an einem Due sicher auch verwendbar sind (allerdings musst Du dann darauf achten, dass sie bei 3.3V noch funktionieren). Dieser hier kann z.B. 1 Million Zyklen und hat 512 Byte (halb so groß wie beim Uno, aber für Deine 200 Byte reicht es ja).

SD-Karten haben im Übrigen auch eine Beschränkung; Raspberry-Pi-Besitzer können da ein Lied von singen.

wno158:
SD-Karten haben im Übrigen auch eine Beschränkung; Raspberry-Pi-Besitzer können da ein Lied von singen.

Und nicht nur die - ich hatte mal vor einiger Zeit die Unterschiede der Produktzyklen hier gepostet....
@TO:
Was mir noch einfällt:
Auf den DS3231-Uhrenmodulen ist meisst ein EEProm drauf. Die Module gibt es mnchmal für'n Appel....
Wenn es denn doch nicht EE sein soll, dann kommst um FRAM nicht umhin.
SD würde ich von vornherein ausschliessen. Irgendein Kontakt hinüber oder defektes Dateisystem ist der Supergau. Alles was mit SD zu tun hat, hat eine mechanische Komponente...

Den EEPROM der DS3231-Module kannst Du mit etwas Lötgeschick gegen einen FRAM FM24C64B austauschen.

Gruß Tommy

wno158:
Raspberry-Pi-Besitzer können da ein Lied von singen.

Von dem Lied habe ich noch nicht gehört. Weder beim Raspi, noch sonstwie, noch nie eine SD-Karte kaputt gegangen.

Tommy56:
mit etwas Lötgeschick gegen einen FRAM FM24C64B austauschen.

Ach?! - Ist schick!
8 Beine geht immernoch - das bekomm auch ich mit der grossen Lupenleuchte noch hin.

Du sprichst dort in #25 "nebenan mit 256 erfolgreich getestet" - Ich bin zu blöd den Thread zu finden. Hast mal ne Hausnummer? Ich würd mal in den kommenen dunkleren Monaten spielen wollen, da ich die roh habe.

Nebenan heißt hier im Forum. Man sollte sich angewöhnen, da gleich den Link mit rein zu hängen.
Sorry, ist nicht geschehen. Die Pinbelegung dürfte aber gleich bleiben.

Gruß Tommy

urdaino:
Von dem Lied habe ich noch nicht gehört.

Das Du mitunter eine andere Auffassung hast, hat / kann damit nichts zu tun haben?

Tommy56:
Nebenan heißt hier im Forum.

jaja - das war schon erkennbar :wink: Ich fand nur den Thread nicht - aber:

Die Pinbelegung dürfte aber gleich bleiben.

Kurz reingesehen - sollte so sein.
Ich werd das mal auf meine Liste kurz nach Bescherung setzen....
Danke!

Im neuen Jahr ändern sich rigoros die Umsateinfuhrsteuererhebungen = immer. also lieber noch vorher bestellen.

Gruß Tommy

my_xy_projekt:
Das Du mitunter eine andere Auffassung hast, hat / kann damit nichts zu tun haben?

Gibt es eine konkrete Frage, neben dem geschwurbel?

urdaino:
Gibt es eine konkrete Frage, neben dem geschwurbel?

Nimm Dich mal zurück.
Das Du schon nicht in der Lage warst zu verstehen, wie und wo diese Forensoftware ihre Grenzen setzt, hast Du bewiesen.
Das Du jetzt noch nachlegst ist sportlich.

Na dann.

Tommy56:
Im neuen Jahr ändern sich rigoros die Umsateinfuhrsteuererhebungen = immer. also lieber noch vorher bestellen.

Ja ich habe Kenntnis davon :wink: Es gab dazu schonmal einen Wissenstransfer im Zuge eines Östereichers(?) der nicht ganz korrekt beraten wurde...

Darum liegen hier ja auch schon die einen oder anderen Teile auf Vorrat.

Na dann - Gute Nacht!

Da hast du was in den falschen Hals bekommen, denke ich. Ich habe deine Frage einfach nicht verstanden, einordnen können. Zurück nehmen von was?

Noch einmal zum Thema:

Ich habe etwas nachgedacht wie ich dieses Problem auch ohne zusätzliche Hardware lösen könnte. In meiner Orgel kommt ja neben dem Due noch ein normales x86 System mit Linux zum Einsatz für die Software. Der Due hat ja zwei USB Anschlüsse, einer zum Programmieren und serielle Verbindung, einer wird für Midi genutzt. Auf dem Linux System könnte ich ja ein kleines Programm z.B in Python schreiben welches nach dem Systemstart automatisch gestartet wird und im Hintergrund läuft. Initial baut es beim Start eine Verbindung auf und überträgt einfach die gespeicherte Registrierung an den Due der auf eine Verbindung lauscht. Dann könnten die Informationen als einfacher String übertragen werden. Ein Beipiel 011001 der Due würde die Zeichenkette dann verarbeiten und entsprechend nutzen. Die erste Zahl wäre Registerspeicher 0-9 und danach die Register in Reihe 0=aus, 1=ein. Dann wird die Verbindung geschlossen.

Umgekehrt würde der Due wenn etwas verändert wurde die Verbindung aufbauen und die Änderung mitteilen, das Programm auf dem Linux System kümmert sich dann um die Dauerhafte speicherung.

Dieser Ansatz wäre zwar einmalig etwas Arbeit aber vom Prinzip eine saubere Lösung ohne Experimente. Im Due könnte ja sofern es Probleme gibt eine Art Vorlage fest im Code eingebaut sein.