Go Down

Topic: LCD unbemerkt aktualisieren (Read 1 time) previous topic - next topic

strohhirn

Danke für die Antworten,
doch ich bin mal wieder wie immer etwas dämlich und versteh die sketchteile nicht und kriege sie nicht in meinen sketch eingefügt.

Könnte bitte jemand einen der sketche auf mein Beispiel übertragen sodass ich vllt das ganze besser verstehe.

Hier mein Beispiel:
Code: [Select]
#include <LiquidCrystal.h>

int backLight = 29;
LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);

int ledPin = 12;// LED connected to digital pin 12
float fade;
int poti = 10;
void setup()  {
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);
  lcd.begin(20, 4);

int myEraser = 7;             // this is 111 in binary and is used as an eraser
TCCR1B &= ~myEraser;   // this operation (AND plus NOT),  set the three bits in TCCR2B to 0

int myPrescaler = 2;         // this could be a number in [1 , 6]. In this case, 3 corresponds in binary to 011.   
TCCR1B |= myPrescaler;  //this operation (OR), replaces the last three bits in TCCR2B with our new value 011

}

void loop()  {
 
fade = analogRead (poti);
fade = map(fade, 0 , 1023, 0, 255);

  analogWrite(ledPin, fade);
  lcd.setCursor(0, 0);
    lcd.print(fade);
 
}


Bei diesem sketch wird ein poti benutzt um per PWM eine LED zu steuern. Dabei wird der PWM wert auf dem LCD augegeben, wenn ich denn poti voll aufdrehe und denn wieder zurück, so bleibt die hunderter und zehner stelle stehe. Das möchte ich beispielsweise beheben. Doch ich verstehe leider eure sketchteile nicht.
Deswegen wäre es schön wenn jemand so nett wär einen der sketche auf meinen zu übertragen, damit ich einen ansatz habe.

Mfg

strohhirn
Gruß

strohhirn

jurs


Könnte bitte jemand einen der sketche auf mein Beispiel übertragen sodass ich vllt das ganze besser verstehe.


Wenn Du meine Funktion "messwertAnzeigen" zusätzlich in Deinen Sketch reinkopierst, dann würdest Du außerdem diese zwei Zeilen:
Code: [Select]

  lcd.setCursor(0, 0);
  lcd.print(fade);

ersetzen durch diese Zeile:
Code: [Select]

messwertAnzeigen(0,0,fade,4);


strohhirn

Ahhh ok, Danke. Jetzt klappts und ich hab es etwas besser verstanden.
Geht das ganze auch Linksbündig?

Und was ist das für ein befehl den du hier verwendest:
Code: [Select]
itoa (wert,buf,10);

Was bewirkt dieses itoa und was ist buf?
Gruß

strohhirn

jurs


Geht das ganze auch Linksbündig?


Ja natürlich: Da brauchst Du in der Anzeigefunktion nur die Reihenfolge vertauschen und erst
lcd.print(wert); 
und danach die for-Schleife mit Ausgabe der Leerzeichen ausführen. Dann ist die Ausgabe linksbündig und die Leerzeichen erscheinen rechts vom ausgegebenen Zahlenwert.


Und was ist das für ein befehl den du hier verwendest:
Code: [Select]
itoa (wert,buf,10);

Was bewirkt dieses itoa


http://www.cplusplus.com/reference/cstdlib/itoa/


und was ist buf?


So wie es deklariert ist ein C-String:
char buf[7];

Ich sehe übrigens gerade eine Unsauberkeit in meinem Code, statt der Zeile:
lcd.print(Wert);
setzt Du vielleicht besser:
lcd.print(buf);
(obwohl beides funktioniert)

strohhirn

Vielen Dank. Klappt wunderbar, wie ich es wollte. :)
Gruß

strohhirn

Go Up