簡體   English   中英

用Arduino進行LCD編程

[英]LCD Programming with Arduino

我希望液晶顯示器顯示“ Voltage =(sensorValue)”,但是現在,當我轉動電位計時,讓程序識別該值的唯一方法是將其置於循環中。 但是,當我將其循環放置時,根據電位計的設置,整個屏幕將充滿1s,2s,3s,4s或5s。

如果我沒有將其循環,那么打開電位器的任何設置都會在屏幕上彈出,並且如果打開電位器則不會改變。

如何將循環的結果放在循環之外,這樣我可以擁有“(Voltage = sensoreValue)”?

這是我的程序:

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

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("Voltage=");
}

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

您要求它打印讀數,並且它正在執行-它正在打印每個讀數!

我懷疑您只希望值更改時才打印

int sensorValue = 0;
int prevValue = 0;

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

或者,您可以打印'n'個退格鍵,這樣,如果您的顯示lcd.print支持,則將新值打印在舊值的頂部。

聽起來好像print()每次都在清除先前數據的屏幕(盡管此處此處的相關文檔和庫代碼尚不清楚)。

如果是這種情況,則需要在循環中打印Voltage=字符串以及傳感器值。 嘗試將代碼更改為:

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

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 = "Voltage=";
    display += sensorValue;
    lcd.print(display);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM