Programmierung in mehreren Tabs

Liebe Arduino-Gemeinde,

ganz neu bin ich in der Arduino programmierung nicht jedoch habe ich keine Ahnung wie es möglich ist alle Funktionen und Variablen in diverse (also mehr als einen Tab für die Programmabarbeitung, einen für die Funktionen und einen für die Variablen) in eigene Tabs zu schreiben. In meinem etwas aufwendigerem Projekt möchte ich alle Größeren Programmbeusteine in eigene Tabs auslagern. Damit das Programm für andere übersichtlicher bleibt. Jedoch ist es so das der eine Tab Variablen rechnet und ein weiterer damit etwas abarbeitet. Beispielsweise habe ich in meinem Programm ein LCD Menü das das Hauptprogramm starten und stoppen soll. Jedoch sollen die Funtikonen des Menüs in einem anderen Tab stehten als alles andere, ebenfalls auch die entsprechenden Variablen.

Ich teile euch hier mal meinen Code mit: Vielleicht könnte mir jemand einmal genau erklären wie ich es schaffen Vairablen zu definieren also #definde oder ähnliches zu nutzen um diese in meheren Tabs abrufen zu können und das diese auch in mehreren Tabs verwendet werden können.

Mein Gedanke war es alles was zwischen solch einem Block steht in einen extra Tab auszulagern
//--------------------------------------------------------------------
MENU

Programmcode…
Programmcode…
Programmcode…
Programmcode…
Programmcode…

//--------------------------------------------------------------------

Im Anhang sind alle Datein zu finden, würde mich über Hilfe sehr freuen.

functions.cpp (19.7 KB)

functions.h (775 Bytes)

global_variables.h (2.46 KB)

Speed_vector.ino (1.08 KB)

Setze deinen Code bitte in Code-Tags hier rein.
Schaltfläche </> oben links im Editorfenster, dann können auch mobile User den Code lesen.

Wenn du die globalen Variablen im ersten Tab (Hauptsketch) anordnest, sollte es funktionieren.
Deine Funktionen kannst du in beliebigen Tabs einsetzen, auch mit lokalen Variablen.

Damit das Programm für andere übersichtlicher bleibt.

Guter Ansatz!

Habe mir das mal angesehen....

Im laufe der letzten Jahrzehnte haben sich übliche Regeln für *.h und *.cpp *.c Dateien herausgearbeitet.
Es ist empfehlenswert sich daran zu halten.

u.A.:
Globale Variablen sollten NICHT in *.h Dateien definiert werden.
Deklarationen, ja. Definitionen, nein.

Wenn die Variable lokal zu einer Übersetzungseinheit ist, darf sie in der *.h deklariert und definiert werden.


So wie ich das sehe donnerst du dir den globalen Namensraum gnadenlos zu.

Merksätze:

Jede vermiedene globale Variable, ist ein gute Variable.
Jede vermeidbare globale Variable, ist eine böse Variable.

also ich würde es ja nicht so sehr nach Funktionen und Variablen aufteilen sondern nach logischen Komponenten und zusammenlassen was zusammen gehört.

Ich weis nicht ob ich deinen Anwendungsfall erraten habe, aber mein Robot hat ein lcd, motor, einen Gyrosensor, einen webserver,…:
sketchMuster.png

Dann noch ein Lesetipp falls noch nicht gesehen, der Buildprozess der Arduino IDE

https://github.com/arduino/Arduino/wiki/Build-Process

und etwas ausführlicher erklärt, wie aus der ino ein cpp wird:

https://grahamwideman.wikispaces.com/Arduino+--+Project+structure+and+build+process

void setup und loop kann man auch in tabs verschieben.

noiasca:
also ich würde es ja nicht so sehr nach Funktionen und Variablen aufteilen sondern nach logischen Komponenten und zusammenlassen was zusammen gehört.

Ich weis nicht ob ich deinen Anwendungsfall erraten habe, aber mein Robot hat ein lcd, motor, einen Gyrosensor, einen webserver,…:
sketchMuster.png

So ähnlich habe ich es jetzt auch umgesetzt. Alle Variablen die sich auf ein Programmmodul beziehen steht jetzt vor dem eigentlichen Programmmodul. Somit war es möglich alle Taps als *.ino zu speichern und erfolgreich zu kompelieren. Ist mit sicherheit nicht die Beste und schönste Lösung, funktioniert allerdings recht gut.

Ich danke für eure schnelle Hilfe!