1

我希望我的 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);
}
4

3 回答 3

1

这是我上周想出的。感谢所有提供意见的人!

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  

void setup() {}

void loop()
{ lcd.init();                      
lcd.backlight();

int VoltsInput = A0;
int VoltsRange = 0;
int VoltsPercent = 0;

VoltsRange = (5.0/1023.0) * analogRead(VoltsInput);
VoltsPercent = (((5.0/1023.0) * analogRead(VoltsInput)) / 5) * 100;

lcd.print(VoltsRange);
lcd.print("V    ");

lcd.print(VoltsPercent);
lcd.print("%");}
于 2012-04-25T16:02:09.870 回答
0

将其放入 loop() 并使用 delay() 函数,以便您的程序每隔几秒而不是每毫秒从 pot 中读取一次值。

于 2012-04-19T14:20:33.963 回答
0

听起来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);
}
于 2012-04-21T13:17:07.187 回答