Hallo,
finde den Bauvorschlag sehr gut und habe mich mal damit befaßt. Leider zeigte mein Display nach dem Start nur sonderbare Zeichen statt eines Textes.
Also herantasten und der Ursache auf den Grund gehen bis ein erwarteter Text angezeigt wird:
Für das monochrome Display die Adafruit_SSD1306-Bibliothek eingebunden. Diese ist jedoch standardmäßig auf 128x32 Pixel eingestellt, kann in der Headerdatei angepaßt werden.
Bibliothek kopieren und unter anderem Namen (bspw. Adafruit_SSD1306_128x64) einbinden, dann hat man beide Varianten verfügbar.
je nach Display ist die I2C-Adresse 0x3D (Standard für 128x64) oder 0x3C (für 128x64 mit geerdetem SA0), siehe auch Adafruit_SSD1306.h. Die Adresse kann mit einem I2CScanner am Arduino herausgefunden werden - oder einfach ausprobieren, das Display bleibt ansonsten dunkel.
Im Standard zeigt mein Display 8 Zeilen a 16 Zeichen an, die Schrift ist klar aber sehr klein. Über einen ganzzahligen Faktor (z.B. 2) läßt sich die Schriftgröße anpasssen, damit reduzieren sich jedoch die Anzahl der Zeilen sowie Zeichen je Zeile -> kaum Text anzeigbar
eine "schmale" Schriftart suchen und einbinden (eine mit Adafruit kompatible Datei kann unter https://blog.squix.org/2016/10/font-crea...-gfx-fonts.html generiert werden)
Mit der neuen Schriftart waren die Zeilen "nach oben" verschoben, eine entsprechende Anmerkung findet sich in der adafruit-gfx-graphics-library. Kann mit einem "setCursor(x,y)" behoben werden.
Soweit bekam ich dann zumindest mal Zeichen in gut lesbarer Größe, Positionierung und Anzahl/Zeile auf das Display.
Nun ans Eingemachte und die Meßwerte inklusive Einheiten anzeigen:
die Deklaration der Variablen v, vmax und weg auf float umstellen (long bzw. int ergeben nur Ganzzahlen, mit den Berechnungen gehen damit die Nachkommastellen verloren)
Für eine einfachere/genauere Berechnung bzw. Anpassungsmöglichkeit auf andere Maßstäbe wurde eine Konstante vmodel eingeführt und mit 170.222799705 initialisiert. Das entspricht mit Raddurchmesser 10,38mm und Maßstab 1:87 den zurückgelegten Metern/Stunde bei 1U/min.
Anzeige von Ganzzahlen (Integer oder Long) in der print/println()-Funktion ist unproblematisch, bei Gleitkommazahlen erscheint ein "?" anstelle des Wertes
Wer sich damit befaßt findet heraus dass in Arduino die Ausgabe von Gleitkommazahlen a la "%f" nicht implementiert ist. Der Einfachheit halber kann man "String(wert, nachkommastellen)" verwenden.
Das Ergebnis (auch wenn das Display blau scheint, es ist gleichmäßig weiß):
Zur Anwendung kamen bei mir
Für den Einbau am Wagen sind bestellt
Zur Programmierung des Pro Mini benötigt man noch einen FTDI-Adapter (Achtung: oft Mini-USB-Anschluß), idealerweise ist die VCC zwischen 3.3 und 5V umschaltbar, der Arduino läßt sich einfach aufstecken, ca. 1,25 EUR
https://www.aliexpress.com/item/High-Qua...2826575637.htmlWer direkt aus China beziehen will: bei Aliexpress registrieren, Artikel suchen und in den Warenkorb packen. Zahlung per Kreditkarte, Paypal (evtl. + Gebühr) oder einfach per Giropay. Stellenweise gelten Mindestestellwerte für die einzelnen Zahlungsarten, sieht man im Vorfeld leider nicht. Man sollte nur darauf achten pro Bestellung/Händler den Wert von ca. 20 EUR nicht zu überschreiten. Andernfalls fällt Einfuhrumsatzsteuer an und man muß die Sendung ggf. beim zuständigen Hauptzollamt abholen.
Bei Angabe des Wohnortes ein "DE-<PLZ> " voranstellen, bspw. "DE-55116 Mainz". Im Standard werden die Sendungen meist mit der PLZ nach dem Bundesland adressiert und schonmal durch Adreßermittlung verzögert. Mit dem genannten Präfix läßt sich das wunderbar vermeiden.
Mein Sketch inkl. Schriftart und angepaßter Adafruit_SSD1306_128x64.h-Datei. Die Schriftartendatei gehört ins Messwagen-Projektverzeichnis. Das Adafruit-zip einfach in die "libraries"-Verzeichnisstruktur der Arduino-Software entpacken, dann ist diese auch für andere Projekte verfügbar. Am einfachsten erklärt sich die Struktur, wenn man vorher über die Bibliotheksverwaltung "Adafruit SSD1306" einbindet, die Arduino-Verzeichnisstruktur im Windows-Explorer öffnet und zu "libraries" navigiert.
[attachment=0]Messwagen_1.2.zip[/attachment]
Für den Speicherplatzbedarf die Arduino-Ausgabe beim Kompilieren:
Der Sketch verwendet 18492 Bytes (60%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1637 Bytes (79%) des dynamischen Speichers, 411 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.