Hallo ich möchte gern die Funktion LED13_Blink in eine Classe verschieben. Aber leider mache ich da irgenwas falsch. Kann mir da jemand helfen ? In der INO soll die Funktion Mit_Classe_LED13_BLINK(); aufgerufen werden. Die Funktion Mit_Classe_LED13_BLINK(); soll in der Teensy.cpp stehen. Und die classe in der Teensy.h Datei Fehlermeldung ist: Teensy.cpp: 16:37: error: ISO C++ forbids declaration of 'Mit_Classe_LED13_BLINK' with no type [-fpermissive] TeensyClass*: Mit_Classe_LED13_BLINK() Teensy.cpp: 16:1: error: prototype for 'int TeensyClass::Mit_Classe_LED13_BLINK()' does not match any in class 'TeensyClass TeensyClass*: Mit_Classe_LED13_BLINK() Teensy.cpp:2: In file included from Teensy.h: 15:15: error: candidate is: void TeensyClass::Mit_Classe_LED13_BLINK() void Mit_Classe_LED13_BLINK() Error compiling project sources Was muss ich änder damit die Funktion Mit_Classe_LED13_BLINK(); So funktioniert es leider nicht ! was muss ich ändern damit die Funktion Mit_Classe_LED13_BLINK(); Loop aufgerufen werden kann. Danke für eure Hilfe. MFG Michael
1.) C++-Buch besorgen 2.) Lesen 3.) Fehlermeldung des Compilers lesen
Ich lese schon komme aber nicht weiter ! habe jetzt ein void vor die Funktion geschrieben! void Ohne_Classe_LED13_BLINK() { digitalWrite(Teensy.LED13_PIN, LOW); delay(200); Serial.println("Ohne"); digitalWrite(Teensy.LED13_PIN, HIGH); delay(200); } Jetz habe ich das Problem das die Teensy nicht deklariert ist ! In der INO habe ich das gemacht oder ? TeensyClass Teensy; wenn ich in die Funktion Zahlen eintrage gehts ! void Ohne_Classe_LED13_BLINK() { digitalWrite(13, LOW); delay(200); Serial.println("Ohne"); digitalWrite(13, HIGH); delay(200); } Was muss ich machen damit Teensy auch in der Teensy.cpp erkannt wird ?
Michael K. schrieb: > Teensy.cpp: 16:37: error: ISO C++ forbids declaration of > 'Mit_Classe_LED13_BLINK' with no type [-fpermissive] > TeensyClass*: Mit_Classe_LED13_BLINK() Also ein C++ Buch würde wahrscheinlich sehr helfen. Aber als kleiner Tipp: Was steht denn in Zeile 16 und was könnte mit "no type" gemeint sein?
1 | TeensyClass::Mit_Classe_LED13_BLINK() |
2 | {
|
3 | digitalWrite(Teensy.LED13_PIN, LOW); |
4 | delay(200); |
5 | digitalWrite(Teensy.LED13_PIN, HIGH); |
6 | delay(200); |
7 | }
|
Außerdem solltest Du dir nochmal angucken, wie man auf Membervariablen (LED13_PIN) innerhalb einer Klasse zugreift.
Ich schau mir das gleich mal an! // Funktionen void TeensyClass::Mit_Classe_LED13_BLINK() { digitalWrite(LED13_PIN, LOW); //digitalWrite(13, LOW); delay(200); digitalWrite(LED13_PIN, HIGH); Serial.println("Mit"); //digitalWrite(13, HIGH); delay(200); } wenn ich das so schreibe geht es auch ! digitalWrite(LED13_PIN, LOW); Ohne Teensy. Was muss ich machen damit ich digitalWrite(Teensy.LED13_PIN, LOW); schreiben kann ???? Der Compiler kennt die Classe hier noch nicht obwohl ich hier #include "Teensy.h" geschieben habe ! Was muss ich machen ?
Michael K. schrieb: > Was muss ich machen damit ich > digitalWrite(Teensy.LED13_PIN, LOW); schreiben kann ???? > ... > Der Compiler kennt die Classe hier noch nicht > obwohl ich hier #include "Teensy.h" > geschieben habe ! Das solltest Du überhaupt nicht schreiben, jedenfalls nicht in der Klassendefinition in Teensy.cpp. Teensy ist in deinem Fall der Variablenname und TeensyClass der Datentyp. Ganz ehrlich, es wirkt als hättest Du absolut keine Ahnung, was Du da eigentlich machst. Nimm ein C++ Buch oder meinetwegen auch ein youtube-Tutorial und arbeite damit. Wenn Du nur halbwegs verstanden hast, was eine Klasse ist und wie man damit umgeht, dann kannst Du alle deine Fragen problemlos beantworten.
Michael K. schrieb: > Ich schau mir das gleich mal an! > > // Funktionen > void TeensyClass::Mit_Classe_LED13_BLINK() > { > digitalWrite(LED13_PIN, LOW); > //digitalWrite(13, LOW); > delay(200); > digitalWrite(LED13_PIN, HIGH); > Serial.println("Mit"); > //digitalWrite(13, HIGH); > delay(200); > } > > wenn ich das so schreibe geht es auch ! Wunder der Technik: kaum macht mans richtig, schon funktionierts. :-) > Was muss ich machen damit ich >
1 | digitalWrite(Teensy.LED13_PIN, LOW); |
> schreiben kann ????
Du meinst, in der Funktion TeensyClass::Mit_Classe_LED13_BLINK()? Da
kannst Du entweder
1 | digitalWrite(LED13_PIN, LOW); |
oder
1 | digitalWrite(self->LED13_PIN, LOW); |
schreiben. Da die Methode "Mit_Classe_LED13_BLINK()" ja eine Methode der Klasse TeensyClass ist, kennt sie ihre Membervariable LED13_PIN, kann im Zweifelsfalle aber über den Zeiger auf die eigene Instanz "self" auf die Membervariablen zugreifen, etwa wenn es eine globale Variable gibt, die denselben Namen wie die Membervariable hat. > Der Compiler kennt die Classe hier noch nicht obwohl > ich hier #include "Teensy.h" geschieben habe ! Der Compiler kennt die Klasse TeensyClass, aber nicht die Instanz Teensy. > Was muss ich machen ? In Deinen Beiträgen weniger Leerzeilen verwenden, nicht plenken, und C-Code in die korrekten Tags einfassen, siehe "Formatierung" direkt oberhalb des Eingabeformulars für Deine Beiträge. Außerdem möchte ich Dir WÄRMSTENS(!) ans Herz legen, ein Buch über C++ wie dieses https://www.amazon.de/gp/product/3836213850/ oder ein Online-Tutorial für Anfänger durchzuarbeiten. Durcharbeiten bedeutet: nicht nur kurz überfliegen, sondern die Beispiele abtippen, übersetzen, kleinree Änderungen daran machen und schauen, was Deine Änderungen bewirken. Ohne genauer hingeschaut zu haben, sieht dieses C++-Tutorial ganz brauchbar aus: http://www.online-tutorials.net/c-c%2B%2B-c/c%2B%2B-tutorial-teil-1/tutorials-t-1-58.html
Karl Käfer schrieb: > oder > digitalWrite(self->LED13_PIN, LOW); Du meinst natürlich
1 | digitalWrite(this->LED13_PIN, LOW); |
Ist aber nicht üblich; normalerweise lässt man "this->" weg.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.