Also, dass eine Grafikfunktion auf zwei Displays angewendet werden kann.
Ständig haut der Compiler mit das raus. Was stimmt denn da nicht. Das ist doch bloss Übergabe eines C++ Objektes per Zeiger an eine Funktion dessen Methoden ich dann benutze. Wenn man das void durch int ersetzt kommt neuer Murks.
E:\Embedded\ESP32\USB_Power_Meter\grafik.ino:107:21: error: variable or field 'DrawPowerGraph' declared void
void DrawPowerGraph(Adafruit_SSD1306* oled) {
^~~~~~~~~~~~~~~~
E:\Embedded\ESP32\USB_Power_Meter\grafik.ino:107:21: error: 'Adafruit_SSD1306' was not declared in this scope
E:\Embedded\ESP32\USB_Power_Meter\grafik.ino:107:21: note: suggested alternative: 'Adafruit_SPIDevice_h'
void DrawPowerGraph(Adafruit_SSD1306* oled) {
^~~~~~~~~~~~~~~~
Adafruit_SPIDevice_h
E:\Embedded\ESP32\USB_Power_Meter\grafik.ino:107:39: error: 'oled' was not declared in this scope
void DrawPowerGraph(Adafruit_SSD1306* oled) {
^~~~
ich habe keine Ahnung von Arduino, aber vermutlich hast Du einen Header
vergessen einzubinden.
Header ist mit drin vorne im Namensgebenden Modul des Sketches.. Habe den auch nochmal verdoppelt für das Modul . Ändert nichts. Lief ja alles vorher auch. Nur eben mit oled1 und oled2. Nur neben ohne Übergabe.
Ich glaube ich habe es. Es ist leider nicht egal wo die Funktion steht. Kopiere ich sie in das Hauptmodul, also wo auch der Include steht läuft das einwandfrei durch.
Das Problem dürfte also tief im Bauch der Arduino IDE liegen. das ist bei defines genauso, die im Hauptmodul sind überall bekannt. Die aus den anderen Modulen nur im Modul slebst.
Da lobe ich mir doch bare metal Programmierung der Cortexe, mit Headern, make Datei usw. Da weiss man genau was abgeht.
Eine Forward Deklaration für die Funktion im Hauptsketch könnte helfen. Ich mag solche Automatismen auch nicht, PlatformIO ist da schon besser und bietet mehr Möglichkeiten und vor allem auch eine Benennung der verwendeten Referenzen.
Das Problem dürfte also tief im Bauch der Arduino IDE liegen
unter anderem ist das der Grund, warum ich nichts mit der Arduino IDE mache.
Obwohl, wenn man ein Projekt mit ESPIDF baut, weiß man auch nicht so genau, was da alles im Hintergrund passiert. Jedenfalls ist das ne ganze Menge.
Aber wenigstens kann ich mich drauf verlassen, dass alles C/C++ konform läuft. ;-)