2012-04-18 101 views
1

我想讓我的LCD顯示「電壓=(傳感器值)」,但現在我可以讓程序在轉動電位計時識別該值的唯一方法是,如果將其放入一個循環中。但是當我把它放在一個循環中時,根據電位器的設置位置,整個屏幕會被填充1s,2s,3s,4s或5s。用Arduino進行液晶LCD編程?

如果我沒有在一個循環中,然後無論設置電位器是什麼將彈出在屏幕上,並將不會改變,如果電位器轉動。

我怎樣才能把一個循環的結果放在一個循環之外,所以我可以有「(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

[與Arduino的LCD編程]的可能重複(http://stackoverflow.com/questions/10220673/lcd-programming-with-arduino) – 2012-04-20 19:07:25

回答

0

把它放在循環(),並使用延遲()功能,讓你的程序讀取鍋每毫秒值每隔幾秒鐘,而不是。

+0

謝謝,Sudar!我想我可能已經知道了。 – Eduardo 2012-04-25 16:00:37

0

聽起來像print()每次調用時都會清除以前數據的屏幕(儘管相關文檔和庫代碼可用herehere尚不清楚)。

如果是這種情況,您需要在迴路中打印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); 
} 
+0

謝謝,馬修!我會試試這個代碼。 – Eduardo 2012-04-25 15:59:34

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("%");} 
+0

恭喜修復!如果可以,請確保將您的答案標記爲「已接受」,以便其他人能夠從您的成功中學習。乾杯〜 – 2012-04-25 16:20:03