简体   繁体   English

Arduino循环混乱

[英]Arduino Loop Confusion

I'm creating an auto watering system for some plants. 我正在为某些植物创建自动浇水系统。 I am using a motor to control them, and soil sensors to tell when they need water. 我正在使用电动机控制它们,并使用土壤传感器判断何时需要水。 But I'm having trouble both understanding how I should be approaching this and secondly why my code isn't working. 但是我既无法理解我应该如何实现这一目标,又难以理解为什么我的代码无法正常工作。 My problem is that the while loop is never initialized, and so the motor never stops I can tell this by my serial monitor. 我的问题是,while循环永远不会初始化,因此电机永远不会停止,我可以通过串行监视器告诉它。

      if(sensorVal1 <= thresholdDown1){
Serial.println("Plant Group 1 is Dry!");
Serial.println(sensorVal1);
Serial.println("Watering");
digitalWrite(in1, LOW); //LEFT
digitalWrite(in2, HIGH);
analogWrite(enA, 255);

delay(6250);


startTime = millis();
while(sensorVal1 <= thresholdDown1){
  Serial.println("Stopping");
    digitalWrite(in1, LOW);
digitalWrite(in2, LOW);

      if(sensorVal1 >= thresholdUp1){
     break;
   }
}



      totalTime = millis() - startTime;
      digitalWrite(in1, HIGH); //RIGHT
      digitalWrite(in2, LOW);
      delay(500);
      digitalWrite(in1, LOW); //OFF
      digitalWrite(in2, LOW);
      delay(totalTime);
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
      delay(500);
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      delay(totalTime);    
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
      delay(3000);
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);


      }

Here is a very simple logic you can try : 您可以尝试以下非常简单的逻辑:

if( sensorVal <= treshold ) {
  Serial.println("Watering");
  waterOn();
} else {
  Serial.println("NOT watering");
  waterOff();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM