![](/img/trans.png)
[英]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.