2015-05-13 2 views
1

Так я строил это: http://www.instructables.com/id/Automatically-water-your-small-indoor-plant-using-/?ALLSTEPSПрограмма помощи на Arduino Uno

Задачи: установить время воды до 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-разрядное целое число). Таким образом, как водяное, так и временное пространство слишком велики для хранения в переменных int. Попробуйте замедлить время, используя задержку (1000) для управления циклом, который выполняется один раз в секунду, а затем выражайте время и время, используя секунды вместо miliseconds.

Кстати, есть StackOverflow сайт, который специализируется на Arduino: https://arduino.stackexchange.com/

1

Arduino UNO целых числа являются 16-битными, просто использовать неподписанные длинные переменные или #define.

#define watertime 300000 
#define waittime 3600000 

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