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?
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.
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.