我希望我的 LCD 显示“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;
}
}
或者,如果您的显示器 lcd.print 支持,您可以打印“n”个退格键,以便新值打印在旧值之上
关于c++ - 使用 Arduino 进行 LCD 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220673/