使用 Arduino 进行 LCD 编程

LCD Programming with Arduino

本文关键字:编程 LCD 进行 Arduino 使用      更新时间:2023-10-16

我希望我的LCD显示"电压=(sensorValue)",但现在我可以让程序在转动电位计时识别该值的唯一方法是将其放在一个循环中。但是当我把它放在一个循环中时,整个屏幕都会充满 1、2、3、4 或 5,具体取决于电位计的设置位置。

如果我没有在循环中,那么无论电位计打开什么设置,都会在屏幕上弹出,如果电位计转动也不会改变。

如何将循环的结果放在循环之外,以便获得"(电压=传感器值)"?

这是我的程序:

#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);
}