Pages: [1] 2   Go Down
Author Topic: Messwert auf einem LCD ausgeben  (Read 1177 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo liebes Forum,
ich versuche einen Messwert auf einem LCD auszugeben. Ich kann die Bezeichnung als String ausgeben,
leider funktioniert die Ausgabe des Messwertes vom Analogeingan1 vom Typ "int" nicht (sieht irgendwie komisch aus). Kann es sein dass man auf dem LCD nur "Char" ausgeben kann?

int U_soll;
...
void loop()
{
  lcd.print("Vsoll = ");
  lcd.setCursor(8, 0);            // set the cursor to column 0, line 1
  lcd.print(U_soll);
...
Vielen Dank für eure Hilfe
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielleicht was in der Richtung?

Code:
lcd.print(U_soll/10000+'0');
lcd.print((U_soll/1000)%10+'0');
lcd.print((U_soll/100)%10+'0');
lcd.print((U_soll/10)%10+'0');
lcd.print(U_soll%10+'0');

Ggf. musst Du U_soll als "unsigned int" definieren.
« Last Edit: April 19, 2011, 09:46:15 am by Joghurt » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Joghurt,
das bringt leider auch nichts. Eine Skalierung habe ich auch bereits mehr fach ausprobiert.
die ausgabe auf meine LCD sieht immer noch so aus:
Vsoll = XC xxxxx
X steht für Zeichen die ich nicht kenne und nicht deuten kann. Die letzten 5 "x" flimmern, das liegt vielleicht an der Schleife ohne delay.
HAt jemand einen Tipp für mich.
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Was ist denn U_Soll ?
Ist das ein Kommawert?
Ich hatte auch so ein Problem bei meinen versuchen mit der Waage.
Habe selber noch nicht viel Ahnung!
Bin bei meiner Waage hingegangen und habe den Wert zerpflückt.
Worauf man auch vielleicht noch achten muss:
Wenn Du zu schnell Werte auf dem Display aktulaisierst die sich verändern kann man nix mehr lesen.
Bei der Waage trage ich den Wert erst ein wenn er fest steht und bei meiner Uhr
wird das Display im Sekundentakt aktualisiert.

Aber leider kann ich Dir nicht genau sagen woran das liegt, sorry!

Gruß Thorsten
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo MueThoS,
ich habe mir den Messwert jetzt auch auf die Serielleschnittstelle gpackt. Hier bekomme ich eine klare Anzeige in Ganzenzahlen.
wenn ich den Messwert einzeln auf dem Display ausgebe bekomme ich ein "s" oder ein "su".

Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habe die Ausgabe in die VoidSetup geschoben, das funktioniert. Ist aber leider noch nicht befriedigend.
Logged

Gurkengraeber
Guest
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Floppy !

in http://www.earthshineelectronics.com/files/ASKManualRev5.pdf  ( Projekt 12 )

wird beschrieben, wie man mittels der Modulo-Funktion Nachkommastellen bekommt.

Falls es das ist, was du meinst...

MfG
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist nicht das Problem, die Anzeige funktionirt jetzt, ich bin mir aber noch nicht sicher warum. Ich glaube das Problem ist die Trägheit des Displays. Die Ausgabe funktioniert nur mit einem Ausreichenden Delay und nicht in der Void Loop. Bis das diese Funktion funktioniert ist noch eine Menge Gehirnschmalz erforderlich. Ich würde gerne zur Laufzeit einen Parameter mittels Poti-Eingabe ändern, die Potispannung möchte ich auf dem LCD darstellen. Ich befürchte ich benötige einen weiteren Zustand den ich mit einem Schalter definiere. In diesem Zustand wird die Regelung ausgesetzt und nur die Poti-Eingabe aktiviert.
Das währe allerdings nicht befriedigend. 
Hat jemand eine andere Idee?
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sag doch erstmal was du genau haben willst und zeige mal deinen kompletten Code.
Ich kann mir nicht vorstellen das etwas in der setup geht und in der loop nicht es sei denn wegen der schnellen Ansteuerung.
Vielleicht können die Profis Dir schneller helfen wenn sie sehen was Du da geschrieben hast.
Wie gesagt als ich mein Display zu schnell angesteuert habe konnte ich auch nichts mehr erkennen.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Display dient nur zur kontrolle der Eingabewerte. Die Hauptaufgabe ist es eine Positions- und Geschwindigkeitsregelung für einen Linearantrieb in Abhängigkeit eines Stromsignals das mit 80Hz-200Hz wechselt zu realisieren. Die Regelung funktioniert bereits recht gut, nur mit der Anzeige meines Potiwertes hapert es noch. Ein Potiknopf mit Skala ist etwas zu archaisch, für eine moderne Maschine.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast Du irgendwo in Deiner Schleife einen Befehl, der das LCD löscht? Ein lcd.clear() oder so?

Lass das mal weg, gehts dann?
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ohne Code ist das nur raterei
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo MueThoS,
"Hast Du irgendwo in Deiner Schleife einen Befehl, der das LCD löscht? Ein lcd.clear() oder so?"
Nein, habe ich nicht.

Ich muss versuchen die Ausgabe aus der Hauptschleife heraus zu bekommen, dann könnte es gehen. Ich habe aber noch keine richtig gute Idee. Daher kann ich auch keinen Code veröffentlichen. Vielleicht habt Ihr ein Beispiel?

Die Ausgabe funktioniert jetzt auch mit "float"-Daten, aber nur wenn ich ein "Delay" nach der lcd.print()-Funktion schreibe:
 
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0, 0);
  lcd.print("Vsoll = ");
  lcd.setCursor(0, 1);            // set the cursor to column 0, line 1
  lcd.print((U_soll));
  delay (5000);
   
warum diese erst nicht funktionierte, kann ich leider nicht sagen. (Ist jetzt auch nicht mehr so wichtig)

Ein Fehler war, dass das "Delay" zu klein war.
Ich habe auch gelernt, wenn man die Daten-"Pins" in umgekehrter Reihenfolge anschließt, Zeigt das LCD schwarze Balken.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pack mal den begin(16,2) in die setup() und den Rest in die loop().

Und den kompletten Code zu sehen wäre wirklich hilfreich. smiley-wink
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es scheint im trocken Lauf (ohne Maschine) zu funktionieren.
 
Ich habe jetzt folgendes Konstrukt gebaut:

voit loop ()
{
  Poti2V=analogRead(poti2Pin); 
 
if (Poti2V != Poti2Valt)
{
  U_soll=Poti2V;

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0, 0);
  lcd.print("Vsoll = ");
  lcd.setCursor(8, 0);            // set the cursor to column 0, line 1
  lcd.print((U_soll*6/1024)); 
  delay (500);   
}
Poti2Valt=analogRead(poti2Pin);
}

 Ich hoffe nur dass die Maschinenregelung jetzt auch noch funktioniert.
Viele Grüße
Logged

Pages: [1] 2   Go Up
Jump to: