Guten Tag, derzeit bastle ich an einer Möglichkeit mehrere I2C Displays anzusprechen. Was ich mir bisher mal gebastelt habe, ist angehängt. Ursprünglich war es ein Programm, da ich damit getestet habe. Nach fortschreitender Entwicklung habe ich mich entschieden eine Klasse daraus zu machen. Mein Problem ist nun leider, dass ich nicht weiss, wie ich in diese Klasse die nötigen Funktionen zum Warten bekomme. z.B. delay, besser wäre millis(), um mir in der Klasse eine eigene Kleine Warteprozedur zu bauen. Habe bei mir mal nachgeforscht, die Funktionen werden in der Arduino.h gelistet, aber sobald ich die Einbinde will er auch eine Setup und Loop-routine haben :-/ Gibts da irgendeinen Trick oder eine Lib die sich darauf spezielisiert hat? Mag idealerweise auch nicht noch massig Zeilen einbauen um auf Taktfrequenz etc. zu Testen und das Delay dann darauf aufbauend nachzubauen. MfG, mossi
Vor der Klassendeklaration #include <arduino.h> einbinden.
> Was ich mir bisher mal gebastelt habe, ist angehängt.
No.
Mist, hatte den Thread erst an falscher Stelle gemacht und dann neu hier, dabei vergessen. Das mit Arduino.h hatte ich bereits versucht, allerdings scheint diese dann die Deklaration von setup() und loop() zu erwarten. Oder gibts da einen Trick?
Habe mal die Arduino.h wieder eingebunden und leere funktionen für setup() und loop() gemacht. Lässt sich zwar kompilieren, aber hat das nicht evtl irgendwelche negativen effekte? Immerhin wird man eine main.cpp haben, welche die i2cdisplay.cpp einbindet. Da die Arduino.h über irgendwelche Programmteile dann scheinbar die setup() und loop() aufruft, werden dann die setup und loop in i2cdisplay.cpp auch laufen? Weil das wäre ja nicht sehr wünschenswert. MfG mossi
Vorschlag:
3 Dateien!!! (im selben Verzeichnis)
Eine ino, mit dem Hauptprogram inc. setup() und loop()
Eine i2cdisplay.h und eine i2cdisplay.cpp
Das wäre eine saubere Nummer.
Und dann klappt das auch.
> Immerhin wird man eine main.cpp haben,
Von mir aus main.ino, aber nicht main.cpp
Wo ist dein header *.hpp, welchen du includest? Du brauchst auch noch eine main um deine klasse zu testen. Im arduino jargon heißt das setup und loop.
Bisher hatte ich keine .hpp Habe mal eine gebaut, da ich bisher noch nicht soo viel Ahnung von Headerfiles habe, bin ich nicht ganz sicher ob das so richtig ist. Hab dementsprechend auch die .cpp angepasst. Leider meldet mir mein lcd.ino beim Kompilieren es findet die .hpp nicht -.-
Malte O. schrieb: > Leider meldet mir mein lcd.ino beim Kompilieren es findet die .hpp nicht > -.- Dann solltest du dich mal darüber schlau machen, wie man in der Arduino Umgebung sog. Libraries einbindet. Die müssen auf bestimmte Verzeichnisse. Dann werden sie auch gefunden. Jedesmal, wenn du dir aus dem Web für deinen Arduino eine fertige 'Lib' holst, holst du dir in Wirklichkeit ein cpp und ein hpp File. Das wird in der Umgebung installiert, indem es einfach an eine bestimmte Stelle im Dateibaum kopiert wird. Ob man das dann auch noch irgendwo registrieren muss, weiss ich nicht, aber ich programmier ja auch nicht Arduino. Such dir halt mal einfach im Web irgendeine Arduino Komponente und sieh dir an, wie die zu 'installieren' ist. Und genau dasselbe machst du auch mit deinem Zeugs.
Habe mir das nochmal angeguckt und überarbeitet. Langsam komme ich glaube ich dahinter, wie die Headerfiles auszusehen haben. Vielen Dank auf jeden Fall, dass ihr euch das anguckt. lcd.ino: In function 'void setup()': lcd.ino:11:7: error: invalid user-defined conversion from 'MOLCD*' to 'const MOLCD&' [-fpermissive] In file included from lcd.ino:2:0: i2cdisplay.h:33:5: note: candidate is: MOLCD::MOLCD(int, int, int) <near match> MOLCD(int id,int lines=2,int chars=16); MfG mossi
Im übrigen: Wenn ich mir deinen Code so ansehe: ein C++ Buch könnte auch nicht schaden. Das hagelt Syntax Errors von oben bis unten.
Fange erst mit cpp an. Habe bisher nur Headerlose c-Files geschrieben und ansonsten mit VB.net und Java programmiert^^
1 | MOLCD lcd1; |
2 | |
3 | void setup(){ |
4 | Serial.begin (115200); |
5 | delay(15); |
6 | lcd1=new MOLCD(0x3f); |
7 | }
|
8 | ...
|
wieso 'new'. lcd1 IST bereits ein Objekt. Das muss nicht mehr angelegt werden.
1 | MOLCD lcd1( 0x3f ); |
sagte ich schon, dass du Literatur brauchst? Das gilt bei C++ noch viel mehr als es bei C gilt.
Malte O. schrieb: > Kannst du gute C++-Literatur empfehlen? Für C++ gibt es massenhaft Literatur. Normalerweise würde ich sagen: geh am Samstag in eine Buchhandlung, blättere die vorhandenen Bücher durch, versuch vielleicht man eines der Kapitel vom Anfang zu lesen und finde raus, mit wessen Stil du am besten zurecht kommst. Die Amazon Rezension lesen, ist auch hilfreich. Ich persönlich hab mit dem Stroustrup angefangen. Aber das war vor 20 Jahren. Seit dem hat sich am Buchsektor einiges verändert.
:
Bearbeitet durch User
Dann werde ich mal ein wenig rumsuchen, vielen Dank für die Hilfe und die Tipps :) LG, mossi
Karl Heinz schrieb: > Ich persönlich hab mit dem Stroustrup angefangen. Aber das war vor 20 > Jahren. Bist Du da immer noch nicht durch? ;-) schnell fort MfG Paul
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.