[英]Arduino code anomalies - LCD fails with multiple 'if' statements
[英]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.