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"
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 ....;
}
Eingebunden und verwendet wird das später, dann z.B. so.
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
Lesezeichen