Feste Texte und variable werte auf einem LCD Display in einer Funktion anzeigen

Hallo zusammen,

habe gerade einen Arduino Uno bekommen bzw. die ersten programmierversuche unternommen.
Bei dem angefügten Sketch komme ich irgendwie nicht weiter.

Ich möchte auf dem Display welches in der Funktion aufgerufen wird zum einen festen Text anzeigen lassen z.B. "Innentemperatur" als auch z.B. den Wert der über einen Sensor ermittelt worden ist.

Ohne Funktion hab ich das hinbekommen, bei Verwendung einer Funktion jedoch nicht.

Für Tipps währe ich Dankbar

#include <LiquidCrystal_I2C.h>

#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);//Deffinition Display (Adresse,Zeichen,Zeilen)

void setup() {

lcd.init();//Aktivieren LCD Display

lcd.backlight();//Display Licht einschalten  

Serial.begin(9600);//serieller Monitor aktiviert//optional

}

void loop() {

delay(1000); 

LCD();//LCD Display Funktion deffinieren

}
void LCD(){

lcd.setCursor(0, 0);//erstes Zeichen, erste Zeile

lcd.print("Display");

lcd.setCursor(0,1);//erstes Zeiche, zweite Zeile

lcd.print("funktioniert");

Serial.println("Display ist angeschaltet und beleuchtet");//Prüfanzeige auf seriellen Monitor//optional

}

Hallo
Ja dann mach das doch
Eine variable definieren, ihr einen Wert zuweisen , dann anzeigen

int wert;
wert=100;
LCD.print(wert);

Und was passiert in deinem Fall?
Da dein Beispiel immer dasselbe macht, kann man wohl nicht so viel erkennen, nachdem einmal

Display
funktioniert 

zu sehen ist.

Suchst Du sowas?

#include <LiquidCrystal_I2C.h>

#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);//Deffinition Display (Adresse,Zeichen,Zeilen)

void setup()
{
  lcd.init();//Aktivieren LCD Display
  lcd.backlight();//Display Licht einschalten
  Serial.begin(9600);//serieller Monitor aktiviert//optional
}

void loop()
{
  LCD();//LCD Display Funktion deffinieren
}
void LCD()
{
  lcd.setCursor(0, 0);//erstes Zeichen, erste Zeile
  lcd.print("Display         ");
  lcd.setCursor(0, 7);
  lcd.print(getTemperature());
  lcd.setCursor(0, 1); //erstes Zeiche, zweite Zeile
  lcd.print("funktioniert");
  Serial.println("Display ist angeschaltet und beleuchtet");//Prüfanzeige auf seriellen Monitor//optional
}

int getTemperature()
{
  // Pseudofunktion, die immer mal wieder eine neue Zahl ausgibt
  int test = -127;
  if (millis() % 1000 == 0)
  {
    test++;
  }
  if (test > 126) test = -127;
  return test;
}

Rein informativ: den Display im loop zu aktuallisieren, ohne das sich die Werte ändern ist eine ganz schlechte Idee....

es geht nicht in erster Linie um das "Display" sondern wie bekomme variable Werte wie z.B die von Temperatur, oder Drucksensoren ,Feuchtigkeit,.... die ausserhalb einer Funktion ermittelt werden an ein Funktion übergeben und innerhalb dieser dann weiterverarbeitet zu werden.
Die Ergebnisse sollen dann z.B. auf einem Display angezeigt werden können oder zur weiteren verwendung an zusätzliche Berechnungen, Funktionen o.ä. weitergegeben werden.
Das Display dient nur zur sporadischen visuellen Kontrolle und soll bei nichtgebrauch deaktiviert werden( desshalb im Loop)

Danke für alle Tipps

Du suchst Funktionsparameter.

Gruß Tommy

Eventuell meinst Du sowas:

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);//Deffinition Display (Adresse,Zeichen,Zeilen)

void setup()
{
  lcd.init();//Aktivieren LCD Display
  lcd.backlight();//Display Licht einschalten
}

void loop()
{
  delay(1000);
  uint16_t wert1 = random(0, 25000);
  uint16_t wert2 = random(0, 50000);
  lcd_anzeige(wert1, wert2);//LCD Display Funktion deffinieren
}
void lcd_anzeige(uint16_t w1, uint16_t w2)
{
  lcd.setCursor(0, 0);//erstes Zeichen, erste Zeile
  lcd.print("Wert1   Wert2");
  lcd.setCursor(0, 1); //erstes Zeiche, zweite Zeile
  char buf[21] = {'\0'};
  snprintf( buf, sizeof(buf), "%5u   %5u", w1, w2 );
  lcd.print(buf);
}

http://www.cplusplus.com/reference/cstdio/snprintf/?kw=snprintf

Dafür gibt es mehrere Varianten.
Entweder über globale Variablen oder mit Übergabe an die Funktion, die dann entweder so, das die Änderung der Variablen nur innerhalb der Funktion gültig ist und der Ursprungswert erhalten bleibt, oder Änderung erfolgt dann am Ursprungswert, oder als weitere Variante kannst Du den verarbeiteten Wert als Rückgabewert übergeben.

Such Dir aus, was Du möchtest.

Danke an alle ich glaube das ich es verstanden habe.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.