Auslagern von Konfigurationsvariablen

Hallo, bin zwar nicht ganz neu im Programmieren, aber hier hab ich wohl nen knoten im Kopf:

möchte viele gleiche Arduinos programmieren, die sich im Programmcode nur in einigen config-Variablen unterscheiden. Kann ich diese Variablen nicht alle in ein Header-File packen und im Programm nur eine Variable anpassen und der Compiler lädt nur die passenden config-Variablen auf die Steuerung? Heist im Prinzip ich mach nen Switch-Case in die Header mit den verschiedenen Möglichkeiten? Oder wie mache ich das?

Schon mal vielen Dank für die möglichen Lösungen :slight_smile:

Hallo koloblix

Du kannst mit Arduino preprocessor directives arbeiten.

Siehe auch

Du kannst ein identisches Programm verwenden und die Konfiguration mit einem eigenen Programm ins EEPROM laden. Das hat gegenüber den preprocessor directives den Vorteil, daß Du bei Updates überall das selbe Programm nutzen kannst, ohne durcheinander zu kommen.

Die preprocessor directives kannst Du in eine eigene Datei auslagern, die IDE bietet Dir dazu Tabs an. Ich verwende das für Paßwörter, die für alle Programme gleich sind und die ich hier im Forum nicht versehendlich zeigen möchte.

EEPROM !
Für sowas wurde es erfunden.
Für sowas steckt es in den AVRs

kommt drauf an:

  • wenn Programmspeicher kein Problem ist, dann würde ich einfach die abweichende Einstellungen im EEPROM speichern (entweder je Option oder über eindeutige ID's) und im Code zur Laufzeit entsprechend behandeln. evtl. sogar eine Funktion vorsehen, die EEPROM Einstellungen zur Laufzeit (zB. über die Serielle) änderbar machen.
  • wenn Programmspeicher/Flash knapp ist und "alle" Optionen vieleicht gar nicht mehr Platz haben - dann eben ein Programm schreiben und über precompiler defines dafür sorgen, dass jedes Board nur seine Optionen bekommt. Je nach Umfang der abweichenden Werte - eigene .h files und das eine oder andere einbinden - oder über einen #define BOARDID halt die verschiedene Werte parametrieren.

Nur so als Beispiel, ein "Webserver" für verschiedene Hardwarevarianten:
ESP8266 ESP32 simple webserver to switch pins with browser (rothschopf.net)
gesteuert über ein

#define USE_BOARD 1 // the ESP8266 8 channel board

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.