Kannst du auch im Zusammenhang mit einer bzw. mehreren .ino Dateien verwenden.
Du solltest zwischen Deklaration und Definition unterscheiden.
Wenn es zu viele Variable werden, überleg dir, welche überhaupt global gebraucht werden.
(Puristen sagen : gar keine, was natürlich auch übertrieben ist)
Tüftel etwas rum und zeig dann dein Problem, das hilft dir mehr als meine obigen Totschlag-Tipps.
Auch meine C/C++ Kenntnisse sind ziemlich eingerostet, deshalb alle Angaben ohne Gewehr
Ein Header enthält normalerweise nur Deklarationen, die zugehörigen Definitionen (Code, Variablen) müssen irgendwo in einem Modul (*.c, *.cpp) liegen. Anders ausgedrückt, ein Header macht die in irgendeinem Modul definierten Funktionen und Variablen auch in anderen Modulen zugreifbar.
Allerdings bin ich mir über "extern" nicht sicher. Da Header von mehreren Modulen importiert werden können (#include), sollten alle Variablen darin als extern deklariert werden, damit nicht jedes Modul seine eigene (unabhängige) Kopie bekommt.
Da Header von mehreren Modulen importiert werden können (#include), sollten alle Variablen darin als extern deklariert werden, damit nicht jedes Modul seine eigene (unabhängige) Kopie bekommt.
Sehr richtig!
int x; // ist eine Definition, darf nur einmal vorkommen. (Muss aber in einem der Module vorkommen)
extern int x; // ist eine Deklaration, die jeder der x braucht, includieren sollte.
Du kannst genauso gut ganze Funktionen auf den .h Tab auslagern.
Naja, solltest aber eher nur die Deklaration auslagern, wenn du neben .ino auch .cpp Dateien hast, die an den deklarierten Funktionen interessiert sind, und daher #include "irgendwas.h" enthalten.
Na Du schreibst was von "Dann bekomme ich diese Meldung" ohne dazu zu schreiben, wann und unter welchen Umständen das passiert.
Ich habe Dir in Reply #4 erläutert, was Du zu tun hast, damit es funktioniert.
Aber das machst Du ja offenbar nicht, sondern Du machst irgendwas anders, erklärst mit keinem Wort, was Du anders machst, und bekommst eine Fehlermeldung.
Falls Du mit einem ZIP-Entpacker besser klarkommst als mit Deiner Arduino-IDE und meinen Erklärungen, habe ich Dir mal ein kurzes Blink-Beispielprojekt gemacht, bei dem die Variablen in eine .h Datei ausgelagert sind. Einfach den im ZIP-Archiv enthaltenen Ordner in Deinem Arduino-Sketchordner entpacken und dann die ino Projektdatei in der IDE öffnen.