Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino循环不会停止-仅使用较小的计数器。Arduino纳米_C++_Automation_Arduino_Relay_Garden - Fatal编程技术网

C++ Arduino循环不会停止-仅使用较小的计数器。Arduino纳米

C++ Arduino循环不会停止-仅使用较小的计数器。Arduino纳米,c++,automation,arduino,relay,garden,C++,Automation,Arduino,Relay,Garden,我无法向自己解释为什么这段代码在某些情况下能正常工作,而在某些情况下不能正常工作。情况如下: 我正试着用Arduino Nano切换继电器。因此,我以“眨眼”为例作为指导。它应该打开大约5分钟,然后关闭大约25分钟。代码如下: // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an out

我无法向自己解释为什么这段代码在某些情况下能正常工作,而在某些情况下不能正常工作。情况如下:

我正试着用Arduino Nano切换继电器。因此,我以“眨眼”为例作为指导。它应该打开大约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通信。。。用一个更好的解决了整个问题。感谢LED的创意,这带来了一些石头滚动…:)

绝对相同的东西与for循环。。。小计数器工作。这可能是硬件问题。检查是否可以控制LED而不是继电器。测试时,完全断开继电器与电路板的连接,以确保不会干扰。如果是硬件问题,则检查电源。如果您从arduino板为继电器供电,可能会使电压调节器过载,过一段时间后,电压下降,您将得到复位。如果你的电路板在泵开启几秒钟后复位,那么它就会显示出环路被卡住的样子。还要确保您没有直接从IO引脚运行继电器。你需要一个晶体管(和抑制电压尖峰的二极管)。嘿@Bill2462,谢谢你的想法!我检查了一下,它工作正常。这导致人们认为它可能是任何其他硬件部件,比如继电器。这是一个便宜的继电器,上面有中文字母,这是邪恶的根源!不知道为什么,但它对阿杜尼诺说:“我在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
  }
}