Hallo,
ich habe zwar schon einiges mit ATMEL in ASM gemacht, aber das hilft mir hier nicht weiter! In C bin ich leider überhaupt nicht zuhause.
Wie weit bin ich gekommen?
Ich habe mit der Arduino IDE den SCD41 ausgelesen und habe auch das Display so gestaltet, wie es letztendlich aussehen soll. Siehe die beiden .ino Dateien und das Bild im Anhang.
Nun habe ich aber keine Ahnung, wie ich die ausgelesenen Daten in das Display bekomme.
Da ich bis jetzt keine Antwort bekommen habe, gehe ich davon aus, daß
die Frage zu viel Arbeit gemacht hätte.
Nicht so ungeduldig. Sonst musst du Claude fragen.
Ich möchte also die festen Werte 1000, 22,3 und 45 ersetzen durch die
Variablen co2Concentration, temperature und relativeHumidity.
Deine "Werte", die du an die Graphik übergibst, sind Texte.
Du musst also aus deinen Messwerten formatierte Texte erzeugen, damit du sie an deine Anzeigeroutine übergeben kannst, also z.B. mit sprintf();
ich habe zwar schon einiges mit ATMEL in ASM gemacht
Offensichtlich bei weitem nicht genug, sonst wäre dir sofort klar, was der fehlende Schritt zur Lösung deines Problems sein muss...
u8g2.drawStr(15,46,"1000");
ersetzen durch die
Variablen co2Concentration, temperature und relativeHumidity.
Die Methode drawStr unterstützt (vermutlich) nur Strings und die drei Variablen haben (wieder: vermutlich) eine numerischen Typ. Wenn das so ist, gibt es zwei Lösungsmöglichkeiten:
Entweder stellt u8g2 (was auch immer das ist) eine Methode bereit, die mit den numerischen Daten etwas sinnvolles anfangen kann. Dann musst du die einfach nur benutzen.
Oder es gibt keine entsprechende Funktion. Dann musst du selber einen Weg finden, aus den numerischen Daten einen String zu basteln. Das wäre übrigens auch in Assembler der Lösungsweg...
Die Methode drawStr unterstützt (vermutlich) nur Strings
Ich wage die kühne Behauptung dass
u8g2.drawStr(15,46,"1000");
im dritten Argument auch einen Pointer auf einen (variablen) String erlaubt, da das Argument "1000" nichts anderes ist als ein Pointer auf einen konstanten String.
Ich wage die kühne Behauptung dass
u8g2.drawStr(15,46,"1000");
im dritten Argument auch einen Pointer auf einen (variablen) String
erlaubt
Und ich wage die Behauptung, dass u8g2 über eine (eigentlich sogar mehrere) print-Methoden verfügt, die mit numerischen Argumenten umgehen können. Allerdings nur mit ganzzahligen.
Könnte trotzdem nützlich sein, gerade bei kleinen AVRs...
This function can print variable values and supports the F() macro.
2
Arguments: See link.
3
Returns: -
4
Note 1: This function depends on the current font mode and drawing color.
5
Note 2: Use print(u8x8_u8toa(value, digits)) or print(u8x8_u16toa(value, digits)) to print numbers with constant width (numbers are prefixed with 0 if required).
Die Methode drawStr unterstützt (vermutlich) nur Strings
Ich wage die kühne Behauptung dass
u8g2.drawStr(15,46,"1000");
im dritten Argument auch einen Pointer auf einen (variablen) String
erlaubt, da das Argument "1000" nichts anderes ist als ein Pointer auf
einen konstanten String.