ich möchte mit dem Arduino eine Temperatur an Pin 3 auswerten und Anzeigen lassen. Anzeige soll seriell auf dem Monitor erfolgen und auf dem LCD Display. Funktioniert soweit. Seriell wird der Temperaturwert angezeigt. Auf dem LCD erscheinen komische Zeichen und ab 65 °C wird auf dem Display ein A angezeigt für 66 ein B und so weiter.
Der gleiche wert wird auf dem LCD also in ASCII ausgegeben auf dem Monitor aber korrekt.
Wie bekomm ich das geändert?
dies ist Programmiert:
#include <LCD4Bit_mod.h>
#include <LiquidCrystal.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2); //Displayzeilen
void setup ()
{
Serial.begin(9600); //initialisieren serielle Schnittstelle auf 9600 Baud
Serial.println("Start");
lcd.clear();
lcd.printIn("Start");
}
void loop()
{
int sensorLesen = analogRead(3); //lesen den Sensorwert in Pin A3 ein
int temperatur = (5.0 * sensorLesen * 100 / 1024-35); //Umrechnung in Grad Celsius bei Betriebsspannung von 5 Volt, -35 Korrektur des Meßwertes
Serial.print("Temperatur: "); //Ausgabe auf serieller Konsole
Serial.print(temperatur);
Serial.println(" C");
lcd.clear();// Ausgabe auf Display
lcd.printIn("Temperatur ist:");
lcd.cursorTo(2, 0); //line=2, x=0
lcd.print(temperatur);
delay(1000); //1 Sekunde Pause,
}
die Variable temperatur wird als int deklariert also als Ganzzahl.
Ich denke vom LCD Display wird dann dieser Wert als Wert aus einer ASCII-Tabelle interpretiert. Diese Tabelle enthält auch zunächste "komische Zeichen" und ab 65 kommen Großbuchstaben. Ich kenne die Bibliotheken
die bibliotheken hab ich beim Display dazu runtergeladen
das display funktioniert ja auch soweit
mit float wird jetzt im seriell mit 2 stellen hinter komma angezeigt z.bsp 12.31
im Display ist jetzt nur noch der text zu sehen die variable gar nicht mehr
Du schreibst auf das Display keine Zahl sondern ein Zeichen und die Zahl ist der Zeichencode des Displays der teilweise mit dem ASHII- Code identisch ist.
Das könnte Dir weiterhelfen: http://www.daniweb.com/software-development/c/threads/35242
Grüße Uwe
die Seite ist bestimmt später für mich mals sehr hilfreich leider bin ich im englischen nicht ganz so fit,
auf jedenfall ist schon mal klar das die variable falsch vom Display ausgewertet wird...
ich habe leider nicht das Display welches Du verwendest, deshalb arbeite ich nach dem Prinzip "trail and error" ohne selbst testen zu können. Aber versuch mal folgenden Code:
// Bedeutet wie folgt
// * LCD RS pin to digital pin 12
// * LCD Enable pin to digital pin 11
// * LCD D4 pin to digital pin 5
// * LCD D5 pin to digital pin 4
// * LCD D6 pin to digital pin 3
// * LCD D7 pin to digital pin 2
void loop()
{
int sensorLesen = analogRead(3); //lesen den Sensorwert in Pin A3 ein
float temperatur = (5.0 * sensorLesen * 100 / 1024-35); //Umrechnung in Grad Celsius bei Betriebsspannung von 5 Volt, -35 Korrektur des Meßwertes
Serial.print("Temperatur: "); //Ausgabe auf serieller Konsole
Serial.print(temperatur);
Serial.println(" C");
joh371:
ich nehme an das der fehler in der libary von lcd4bit.... liegt, kennt ihr ne andere bessere die verwendbar wäre
Deine Bibliothek hat scheinbar die Funktion fürs Printen von Zahlen nicht drin. Nimm die Standardbibliothek aktueller Arduino-Versionen, die versteht seit einiger Zeit auch 4bit-Verbindungen.
Hab leider kein LCD um das selbst zu testen - Conrad ist einfach zu Teuer was 20x4 angeht, und wenn ich mir schon ein LCD hole, dann möchte ich auch eins wo man ein User-Interface drauf aufbauen kann.