我希望我的液晶显示屏显示“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);
}
答案 0 :(得分:1)
你要求它打印读数,它正在做 - 它正在打印每个读数!
我怀疑你要么只是在值改变时才打印
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支持那个新值,那么新值将打印在旧的顶部之上
答案 1 :(得分:0)
听起来print()
每次调用时都会清除以前数据的屏幕(虽然可用的here和here相关文档和库代码不清楚。)
如果是这种情况,您需要在循环中打印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);
}