2015-05-13 63 views
1

所以我建立這個:http://www.instructables.com/id/Automatically-water-your-small-indoor-plant-using-/?ALLSTEPS計劃幫助

問題:我設置了水時間爲5分鐘,等待時間爲1小時,水還在不停地運行,5分鐘後仍未停止。

有沒有另外一種方法來編寫這個程序?

他提供該方案是

int motorPin = A0; 
int blinkPin = 13; 

int watertime = 300000; // how long to water in miliseconds 
int waittime = 3600000; // how long to wait between watering 

void setup() 
{ 
    pinMode(motorPin, OUTPUT); 
    pinMode(blinkPin, OUTPUT); 
} 

void loop() 
{ 
    digitalWrite(motorPin, HIGH); 
    digitalWrite(blinkPin, HIGH); 
    delay(watertime); 
    digitalWrite(motorPin, LOW); 
    digitalWrite(blinkPin, LOW); 
    delay(waittime); 
} 

回答

1

Arduino的UNO最大整數值是32767(16位有符號整數)。所以水文和等待時間都太長而不能存儲在變量中。嘗試使用延遲(1000)控制每秒運行一次的循環來減慢時基,然後使用秒而不是毫秒來表示水位和等待時間。

順便說一句,有一個專門的Arduino一個計算器網站:https://arduino.stackexchange.com/

1

的Arduino UNO整數是16位寬,只使用unsigned long類型變量或使用#define。

#define watertime 300000 
#define waittime 3600000 

// some code... 
delay(watertime); 
// more code... 
delay(waittime);