Hi
ich bin neu in der Programmierscene und ich habe als Projekt einen Torsionsstab ausgewählt. Dazu wird ein Alurohr eingespannt und mit ehilfe eines DMS ausgelesen.
Ich habe nun diesen Code geschrieben :
//LiquidCrystal Bibliothek
#include <LiquidCrystal.h>
// Benutzte Pins am Arduino und deklarierung der Zahlen
// LCD PINS
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// PINS und deklarierung des DMS
float sensorPin = A0; // Input Pin des DMS
float sensorValue = 0; // variable um den Wert des Sensors zu Speichern und später auszugeben
void setup()
{
//LCD
lcd.begin(16, 2); // Start der Bibliothek
lcd.setCursor(0,0); // Ausgabe bei Zeile 1, Spalte 0
lcd.print(""); // Ausgabe der Message
Serial.begin(9600); // Baudrate bestimmen
}
void loop() // Schleife starten
{
// Wert des Sensors auslesen
sensorValue = analogRead(sensorPin);
delay(1000); // Es soll jede Sekunde neu der Wert ausgegeben werden
Serial.print("sensor = " ); //Deklarierung des Ausgabewertes
Serial.println(sensorValue);
lcd.setCursor(0,1); // Curser bei Zeile 2, 1. Spalte
lcd.print(sensorValue); // Sensorwert auf das Display ausgeben
}
Der LCD gibt jedoch nur den Wert in einer Zeile aus. Wenn ich nun noch Spannung vor dem ausgegebenen Wert haben möchte, was müsste ich dann verändern ?
Der LCD gibt jedoch nur den Wert in einer Zeile aus. Wenn ich nun noch Spannung vor dem ausgegebenen Wert haben möchte, was müsste ich dann verändern ?
danke für die schnelle antwort!
das mit den bytes werde ich mal ausprobieren bei integer hat dies nicht funktioniert. Wenn ich den DMS mit dem Poti genullt habe hat der Serielle Monitor den Wert 0 angezeigt der LCD jedoch nicht dieser lag dann bei knappen 100.
tobiibot:
Wenn ich den DMS mit dem Poti genullt habe hat der Serielle Monitor den Wert 0 angezeigt der LCD jedoch nicht dieser lag dann bei knappen 100.
Du musst auch berücksichtigen, dass das lcd.print den Rest der Zeile hinter der Ausgabe nicht löscht. Ist der ausgegebene Wert mal 3-Stellig gewesen, und dann wird nur ein 1- oder 2-stelliger Wert ausgegeben, bleibt die 2. bzw. 3. Ziffer im LCD stehen, und es sieht nach einer ganz anderen Zahl aus. Das Löschen der 'alten' Ziffern musst Du selbst machen, z.B. indem Du immer hinter der Zahl ein " " ausgibst.
tobiibot:
danke für die schnelle antwort!
das mit den bytes werde ich mal ausprobieren bei integer hat dies nicht funktioniert. Wenn ich den DMS mit dem Poti genullt habe hat der Serielle Monitor den Wert 0 angezeigt der LCD jedoch nicht dieser lag dann bei knappen 100.
Du solltest int bzw. unsigned int nehmen. Byte reicht nur bis 255. Analogread liefert einen Wert bis 1023. Kommt es zu Werten über 255, wird bei byte die Zahl modulo 255 genommen, was bestimmt sehr störend wäre.
Es gibt noch die Funktion lcd.clear();
Damit wird das komplette LCD gelöscht.
Es ist aber besser leerzeichen hinter den zahlen zu schreiben, weil das Display flackert bei lcd.clear() und es dauert etwas länger.