Ich denke mal, wissen tu ich es ja nicht, dass Du diese Geschichte später woanders einsetzen willst, sprich, das muss alles ausgelagert werden, dass es später eingebunden werden kann. Da fängt man wohl mit einem Programmgerüst dafür an, würde ich jetzt so machen. Ich mache ein Beispiel. Dauert etwas ...
Programmierst Du auch mit Arduino IDE ?
MfG
- - - Aktualisiert - - -
Es gibt bei Klassen Methoden und Varibalen, die nach außen nutzbar sein sollen und damit "sichtbar" sind, also aufgerufen werden können und es gibt das Gegenteil, Methoden und Variablen, die nur innerhalb der Klasse verwendet werden und damit "privat" sind, also nicht nach außen sichtbar.
Folgende Dateien könnten im Verzeichnis "libraries" im Arduino-Ordner gespeichert werden (dann dort Verzeichnis "MeinCode" und darin beide Dateien, *.h und *.cpp), damit sie in anderem Arduino-Code eingebunden werden können.
Beispiel für "MeinCode.h"
Code:#ifndef MeinCode_h #define MeinCode_h #include <Arduino.h> class MeinCode //Klasse "MeinCode" { //Alle öffentlichen Variablen und Methoden hier bekanntgeben public: byte val1, val2; //Variablen MeinCode(unsigned long bps); //Methode "MeinCode" - Hauptkonstruktor ... wird beim Instanziieren automatisch mit der Klasse aufgerufen boolean SendRequest(void); //Methode von "MeinCode" //alle nicht öffentlichen Variablen und Methoden hier bekanntgeben private: void ClearRBuffer(void); //Methode boolean get2Chars(void); //Methode int a; //Variable unsigned long lastMillis; //Variable byte tv1, tv2; //Variablen }; #endif
Beispiel für "MeinCode.cpp"
Eingebunden und verwendet wird das später, dann z.B. so.Code:#include <Arduino.h> #include <MeinCode.h> //----------------------------------------------------- //Hauptkonstruktor //----------------------------------------------------- MeinCode::MeinCode(unsigned long bps) { ..... } //----------------------------------------------------- boolean MeinCode::SendRequest(void) { ClearRBuffer(); .... return ...; } //----------------------------------------------------- void MeinCode::ClearRBuffer(void) { .... } //----------------------------------------------------- boolean MeinCode::get2Chars(void) { .... return ....; }
Code:#include <MeinCode.h> MeinCode meineInstanz(); //Hauptkonstruktor aufrufen, Instanz erzeugen (initialisieren von irgendwas im Code der Klasse "MeinCode") void setup() { } void loop() { //Methoden (Funktionen) der Klasse "MeinCode" können über meine Instanz angesprochen werden if(meineInstanz.SendRequest()){ . ... } //Variablen können wie Methoden meiner Instanz angesprochen werden Serial.print(meineInstanz.val1); }
Für mehr Informationen siehe hier z.B. (da gibts noch zahlreiche andere Links im Netz) http://www.mintgruen.tu-berlin.de/ro...n:objektorient
MfG







Zitieren


Lesezeichen