Zwischen mehreren Programmen wählen können

Hallo alle zusammen,

in einem neuem Projekt seh ich mich mit der Aufgabe konfrontiert einen multifunktionellen IC anzusteuern. (AD5941)
Vom Hersteller gibt es freundlicherweise dazu schon eine Library und genügend Beispiele.

Die einzelnen Beispiele funktionieren soweit, jetzt möchte ich allerdings einen Schritt weitergehen und nicht nur einzelne Beispiele auf den Microcontroller laden, sondern alle, damit ich dann später zwischen diesen wählen kann.

Sprich:

  • Programm A (eigenes .c und eigene .h)
  • Programm B (eigenes .c und eigene .h)
  • Programm C (.... )
  • Programm D (etc. )

Zum Start will ich festlegen welches man ausführt. Zudem sollen die Programme nur eine begrenzte Zeit lang laufen, sodass ich später wieder zwischen den oben genannten wählen kann.

Die einzelne Programme sind relativ lang und komplex, daher meine Frage ob es eine Möglichkeit gibt/ jemand einen Tipp hat, diese übersichtlich in neues File zu integrieren?

Wie willst du zwischen den Programmen umschalten?

du kannst mit einem Button das "Teilprogramm" auswählen, z.B. über eine Statusvariable die du bei Buttondruck hochzählst. Deine (Main)loop springt dann gem. Stand der Statusvariable in das jeweilige Teilprogramm.
Die Teilprogramme müssen nicht blockierend geschrieben sein, d.h. frei von delay und endlosen while Schleifen, ansonsten wird der button nur träge reagieren.

Zusätzlich wirst du wohl eine Art von Anzeige brauchen, damit du siehst, welches Teilprogramm aktiv ist. Außer du machst deine Auswahl mit Kippschalter, Stufenschalter oder dergleichen wo du die Einstellung von der Mechanik ablesen kannst.

Wenn du jetzt glaubst, dass deine bestehenden Programme "komplex" sind - geh davon aus, dass es noch komplexer wird.

Wenn wir von der Arduino-IDE ausgehen, kannst Du mehrere Dateien in das Projektverzeichnis legen und in der Hauptdatei (Dateiname == Verzeichnisname) einbinden. Zu sehen sind die Dateien in Tabs im IDE-Editor.

Ein schönes Beispiel findest Du bei Esp8266 und Esp32 - Programmierung mit Arduino IDE. Inhaltlich paßt das nicht, aber von der Organisation zum Abschauen.

setup() und loop() darf es nur einmal geben. Durch Funktionen kann man aber die relevanten Programmzeilen aus den eingebundenen Dateien aufrufen.

(deleted)

ich befürchte das wird nicht so einfach.

Die bestehenden Sachen muss man sich sehr genau ansehen. Ich kann mir gut vorstellen dass da in den setup() Teile drinnen sind, die wirklich nur einmal ausgeführt werden dürfen, aber es auch Teile geben wird, die einmal ausgeführt werden müssen, wenn man in dieses Teilprogramm wieder wechselt.

Aber der TO soll sich mal die erhaltenen Antworten lesen, danach arbeiten und dann gegebenenfalls weitere konkrete Fragen stellen.

(deleted)

Daran kann man sich orientieren, dennoch Anmerkungen:

Peter-CAD-HST:
Taste [0] -> kein Programm wird ausgeführt

Da wird Dir ein Streich gespielt :slight_smile:

Peter-CAD-HST:

setupProgramm1(); return;

Da halte ich return für überflüssig.

(deleted)

Danke euch für die Antworten!

Ich denke auch dass das nicht so einfach funktionieren wird.
Vorallem mit dem setup Teil.

Und eigentlich möchte ich den Aufwand für das Programm so gering wie möglich halten.

Daher werd ich erstmal mal ausgiebig recherchieren um weitere Ideen zu erhalten.