Hallo zusammen:
ich grüble schon einige Stunden über folgenden Effekt:
gegeben ist ein Drehpotentiometer am Analogeingang A0, ein 2009er und ein 16x4 LC-Display,
entsprechend dem untenstehenden Code lese ich den momentanen Wert an A0 ein und gebe ihn auf der zweiten Zeile des Displays aus.
Zur besseren Lesbarkeit (und zu Fingerübungszwecken)

) bemühe ich eine Funktion "mach4", den eingelesenen Wert zwischen 0 und 1023 auf 4 Stellen zu formatieren, also mit führenden Leerzeichen aufzufüllen.
Im Ergebnis erhalte ich dieses Format (die Ausgabe endet immer unterhalb des Buchstabens "t" vom oberen Wort "Start",
aber ich bekomme nur maximal den Wert "996" bis "998" !
Alles ab 1000 wird nicht dargestellt, ich bemerke sogar einen spürbaren Leerweg bis zum Ende des Drehweges, ohne dass sich ein höherer Wert als 998 einstellt.
Für Debuggingzwecke habe ich eine weitere Ausgabeanweisung zur Ausgabe des ursprünglichen Zahlenwertes unter der eigentlichen Ausgabeanweisung eingebaut und hier auskommentiert,
daran sehe ich, dass durchaus am Ende des Drehweges der Wert bis auf 1023 steigt.
Kann sich mal jemand die Zeilen unten in der Funktion zu Gemüte führen,vielleicht sehe ich einfach das Simpelste nicht mehr.
Gruß
Manfred
/*
LCD Ausgabeversuche / Analogwerte am Port A0
Die Schaltung:
Anschluss 1M Dreh-Potetiometer zwischen +5V und GND,
Mittelabgriff an Analog-Eingang AD0 (Pin AD0)
Ausgabe des Eingangswertes (0-1023) auf LCD Zeile 2
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int analog_pin = A0; // Analogport 0
int einlesewert = 0; // Variable erhält den digitalen Wert 0 bis 1023 des Analogwertes
int ausgabewert = 0; // Variable erhält den auszugebenden Wert
String ausgabe; // Ausgabezeichenkette
void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 4);
// Startmeldung auf die erste LCD Zeile
lcd.print("Wert am Eingang");
}
void loop() {
einlesewert = analogRead(analog_pin);
//
ausgabe = mach4(einlesewert); // Funktion formatiert auf 4 Stellen
lcd.setCursor(0, 1);
lcd.print(ausgabe);
// lcd.print(" ");
// lcd.print(einlesewert);
delay(250);
}
String mach4(String eingabe) // Eingabe auf 4 Stellen formatieren
{
eingabe = eingabe.trim(); // evtl. "white spaces" entfernen
int l = eingabe.length(); // Variable l hält die Länge (1-4 Zeichen)
String ergebnis; // Rückgabevariable
switch (l)
{
case 1:
ergebnis = " " + eingabe; // plus 3 führende Leerzeichen
break;
case 2:
ergebnis = " " + eingabe; // plus 2 führende Leerzeichen
break;
case 3:
ergebnis = " " + eingabe; // plus 1 führende Leerzeichen
break;
ergebnis = eingabe; // unverändert 4 Zeichen
}
return ergebnis;
}