2 Stimmen

LCD-Programmierung mit Arduino

Ich möchte, dass mein LCD "Spannung=(sensorValue)" anzeigt, aber im Moment kann ich das Programm nur erkennen lassen, welche Wert der Potentiometer hat, wenn ich es in einer Schleife platziere. Aber wenn ich es in einer Schleife platziere, wird der gesamte Bildschirm mit 1, 2, 3, 4 oder 5 je nach Einstellung des Potentiometers gefüllt.

Wenn ich es nicht in einer Schleife habe, wird die aktuelle Einstellung des Potentiometers auf dem Bildschirm angezeigt und ändert sich nicht, wenn der Potentiometer gedreht wird.

Wie kann ich die Ergebnisse einer Schleife außerhalb einer Schleife platzieren, sodass ich "Spannung=sensorValue)" haben kann?

Hier ist mein Programm:

#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);  

void setup()
{
    lcd.init();                      
    lcd.backlight();
    int sensorPin = A0;
    int sensorValue = 0;
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    lcd.print("Spannung=");
}

void loop()
{
    int sensorPin = A0;
    int sensorValue = 0;
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    lcd.print(sensorValue);
}

1voto

Martin Beckett Punkte 92477

Du hast ihn gebeten, den Wert auszugeben und er tut es - er gibt jeden Wert aus!

Ich vermute, du möchtest, dass er nur gedruckt wird, wenn sich der Wert ändert

int sensorValue = 0;
int prevValue = 0;

void loop()
{    
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    if (sensorValue != prevValue) {
       lcd.print(sensorValue);
       prevValue == sensorValue;
    }
}

Alternativ könntest du 'n' Rückmeldungen ausgeben, damit der neue Wert über den alten gedruckt wird, falls dein Display lcd.print das unterstützt

0voto

Matthew Murdoch Punkte 29886

Es klingt so, als ob print() jedes Mal, wenn es aufgerufen wird, den Bildschirm der vorherigen Daten löscht (obwohl die relevanten Dokumentationen und Bibliothekscode verfügbar hier und hier unklar sind).

Wenn das der Fall ist, müssen Sie den String Spannung= in der Schleife zusammen mit dem Sensorwert ausgeben. Versuchen Sie, Ihren Code wie folgt zu ändern:

#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);  
int sensorPin = A0;

void setup()
{
    lcd.init();                      
    lcd.backlight();
}

void loop()
{
    int sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    String display = "Spannung=";
    display += sensorValue;
    lcd.print(display);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X