关于 Arduino Uno 的程序帮助
Program help on 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);
}
Arduino UNO 最大整数值为 32767(16 位有符号整数)。因此 watertime 和 waittime 都太大而无法存储在 int
变量中。尝试通过使用 delay(1000) 来控制每秒运行一次的循环来减慢时基,然后使用秒而不是毫秒来表示水时间和等待时间。
顺便说一下,有一个专门研究 Arduino 的 Whosebug 站点:https://arduino.stackexchange.com/
Arduino UNO 整数是 16 位宽,只需使用无符号长变量或#define。
#define watertime 300000
#define waittime 3600000
// some code...
delay(watertime);
// more code...
delay(waittime);
所以我正在构建这个: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);
}
Arduino UNO 最大整数值为 32767(16 位有符号整数)。因此 watertime 和 waittime 都太大而无法存储在 int
变量中。尝试通过使用 delay(1000) 来控制每秒运行一次的循环来减慢时基,然后使用秒而不是毫秒来表示水时间和等待时间。
顺便说一下,有一个专门研究 Arduino 的 Whosebug 站点:https://arduino.stackexchange.com/
Arduino UNO 整数是 16 位宽,只需使用无符号长变量或#define。
#define watertime 300000
#define waittime 3600000
// some code...
delay(watertime);
// more code...
delay(waittime);