Arduino-我需要修改代码以插入延迟

Arduino-我需要修改代码以插入延迟,arduino,Arduino,我正在运行Arduino Nano(带一个RasPi发送给Thingspeak)。它可以测量我办公室里不同的东西,温度、嗡嗡声、二氧化碳,还可以给我的植物浇水。:-) 我的植物浇水代码有一个小问题 以下是我希望它做的事情: Loop Measure Soil moisture If > 60 run pump for 2 seconds Delay 180 seconds (this delay goes for all sensors)

我正在运行Arduino Nano(带一个RasPi发送给Thingspeak)。它可以测量我办公室里不同的东西,温度、嗡嗡声、二氧化碳,还可以给我的植物浇水。:-)

我的植物浇水代码有一个小问题

以下是我希望它做的事情:

Loop
        Measure Soil moisture
        If > 60 run pump for 2 seconds
        Delay 180 seconds (this delay goes for all sensors)
Loop
        Measure Soil moisture
        If > 60 run pump for 2 seconds
我有个问题!这就是代码的实际功能:

Loop
        Measure Soil moisture
        If > 60 run pump for 2 seconds
        Delay 180 seconds (this delay goes for all sensors)
Loop
        Measure Soil moisture
        If > 60 run pump for 2 seconds
这意味着它只是不断地浇水,比水吸收水的速度快得多

请帮我把耽搁的时间安排好

谢谢。:-)

这是我正在运行的代码:


void loop()
{
  int temp = 0, hum = 0, moist = 0, level = 0, co2_ppm = 0;
  moist = read_soil_moisture(soil_pin);
  temp = read_temp();
  hum = read_humidity();
  level = read_water_level(water_pin);//reads water level

  co2_ppm = CO2_PPM();
  //print_sensor(hum, temp, moist, level,co2_ppm);

  temp = read_temp();
  if (temp >= 3)
  {
    temp -= 3;
  }
  else
  {
    temp = 0;
  }

  log_sensor(hum, temp, moist, level, co2_ppm); //prints values of sensors to UART
  if (moist > 60)
  {

    digitalWrite(pump, LOW);//Setting relay pin high
    delay(2000);//keeps relay pin high for 2 seconds
    digitalWrite(pump, HIGH);//Setting relay pin low
  }
  else
  {

    digitalWrite(pump, HIGH);//keep relay pin low

  }
  delay(180000);//take a reading every 180 seconds


Github repo:

当水分传感器完全干燥且完全暴露在水中时,您是否有水分传感器的读数? 当我看你的github回购协议时,水分值是一个百分比,它随着水分的增加而增加。
当湿度已经超过60时打开泵只会增加传感器值。

当湿度传感器完全干燥且完全暴露在水中时,您是否有湿度传感器的读数? 当我看你的github回购协议时,水分值是一个百分比,它随着水分的增加而增加。
当湿度已经超过60时,打开泵只会增加传感器值。

泵是否从不停止,或者延迟是否刚好小于180秒?您可以尝试编写
180000L
,这样编译器就不会将其转换为int(并且它喜欢将每个数字转换为int;))好吧,情况是一切正常,所有传感器每180秒读取一次。但是,当土壤湿度传感器读数>60时,泵运行2秒,停止,运行2秒,以此类推。。。我之所以停止,是因为电厂溢流,但我认为当读数为时,它将停止。为什么当您将输出设置为低时,您的评论会说高,反之亦然?它是否从未停止泵送,或者延迟是否仅小于180秒?您可以尝试编写
180000L
,这样编译器就不会将其转换为int(并且它喜欢将每个数字转换为int;))好吧,情况是一切正常,所有传感器每180秒读取一次。但是,当土壤湿度传感器读数>60时,泵运行2秒,停止,运行2秒,以此类推。。。我停止它是因为植物溢出,但我假设它会在读数时停止,这就是为什么当你将输出设置为低时,你的评论会说高,反之亦然?嘿,弗雷德,我使用格罗夫传感器,它在干燥时读数高,潮湿时读数低。实际上,现在一切都很好。:-)你可以在这里查看读数。谢谢你的参与。嘿,弗雷德,我用的是格罗夫传感器,干燥时读数高,潮湿时读数低。实际上,现在一切都很好。:-)你可以在这里查看读数。谢谢你的参与。