Arduino Uno的程序帮助

时间:2015-05-13 00:12:22

标签: c++ arduino arduino-uno

所以我正在构建这个: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);
}

2 个答案:

答案 0 :(得分:1)

Arduino UNO最大整数值是32767(16位有符号整数)。因此,watertime和waittime都太大而无法存储在int个变量中。尝试通过使用延迟(1000)来控制每秒运行一次的循环来减慢时基,然后使用秒而不是毫秒来表示水密和等待时间。

顺便提一下,有一个专门研究Arduino的stackoverflow站点:https://arduino.stackexchange.com/

答案 1 :(得分:1)

Arduino UNO整数是16位宽,只使用无符号长变量或#define。

#define watertime 300000
#define waittime 3600000

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