繁体   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