Цикл Arduino не останавливается - только с меньшими счетчиками. Ардуино Нано Каждый
Я не могу объяснить себе, почему этот код в некоторых случаях работает правильно, а в некоторых - нет. Вот такая ситуация:
Я пытаюсь переключить реле с помощью Arduino Nano. Поэтому в качестве ориентира я взял пример "Blink". Он должен включиться примерно на 5 минут и выключиться примерно на 25 минут. Вот код:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(2, OUTPUT); // sets PIN 2 as switcher for the relay
}
// the loop function runs over and over again forever
void loop() {
int count = 0;
int run_pump = 300; // 5 Min run
int stop_pump = 1500; // 25 Min stop
digitalWrite(LED_BUILTIN, LOW); // turn the LED off (HIGH is the voltage level)
digitalWrite(2, HIGH); // turn the pump on
while(count < run_pump) {
count++;
delay(1000); // wait for a second
}
count = 0;
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on by making the voltage LOW
digitalWrite(2, LOW); // turn the pump off
while(count < stop_pump) {
count++;
delay(1000); // wait for a second
}
}
если я запустил этот код на Arduino, он просто включит реле навсегда. НО: Если я установил
run_pump
а также
stop_pump
примерно на 10 сек. он будет работать нормально! Есть ли объяснение, почему это не работает с большими счетчиками? Это так сбивает с толку ....
так что этот код здесь работает абсолютно нормально, но почему приведенный выше код не работает?
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(2, OUTPUT); // sets PIN 2 as switcher for the relay
}
// the loop function runs over and over again forever
void loop() {
int count = 0;
int run_pump = 5; // 5 sec run
int stop_pump = 10; // 10 sec stop
digitalWrite(LED_BUILTIN, LOW); // turn the LED off (HIGH is the voltage level)
digitalWrite(2, HIGH); // turn the pump on
while(count < run_pump) {
count++;
delay(1000); // wait for a second
}
count = 0;
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on by making the voltage LOW
digitalWrite(2, LOW); // turn the pump off
while(count < stop_pump) {
count++;
delay(1000); // wait for a second
}
}
Надеюсь, у кого-то есть подсказка .... Спасибо! Том
1 ответ
Хорошо, ребята, я решил. Проблема заключалась в дешевом реле, которое пыталось связаться с Arduino ... Замена его на лучшее решила всю проблему. Спасибо за идею со светодиодом, это заставило покатиться по камешкам ... :)