Arduino草图不​​会循环

时间:2017-08-08 04:14:44

标签: arduino

这个问题包括我为爱好种植者操作蘑菇温室的代码。我已经有一个现有的工作程序,但后来升级了一些硬件元素,并认为我可能会从我的程序中减少一些脂肪,并添加一些更复杂的功能。在这样做的过程中,我创建了一个程序,该程序将在没有错误的情

该程序由Arduino Mega 2560运行。其他硬件包括RTC模块,HTU21DF湿度/温度传感器和继电器模块。该设备根据RTC时间的逻辑语句操作灯和风扇,并根据HTU21DF传感器的读数激活雾泵。 (稍后会更多地提到这一点)。

请问,如果有人可以查看这段代码并告诉我问题出在哪里,我非常希望用更准确的HTU传感器来安装它来替换我的DHT11(boo)。

#include <LiquidCrystal_I2C.h>
#include <Adafruit_HTU21DF.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27,16,2);
Adafruit_HTU21DF htu = Adafruit_HTU21DF();


void setup() {

  pinMode(22, OUTPUT);
  pinMode(23, OUTPUT);
  pinMode(24, OUTPUT);
  pinMode(50, OUTPUT);

   Serial.begin(38400);

 setTime(18,30,50,4,1,16);

 Serial.println("HTU21D-F test");

 if (!htu.begin()) {
   Serial.println("Couldn't find sensor!");
   while (1);
 }
}

void loop() 
{
 digitalClockDisplay();
 fanTimer(); 
 lightTimer();
 humiditySensor();
}

void digitalClockDisplay(){

 // digital clock display of the time
 // lcd.setCursor(0, 0);
 Serial.print("Time ");
 Serial.print(hour());
 printDigits(minute());
 printDigits(second());
 Serial.println();
}

void printDigits(int digits){
 // utility function for digital clock display: prints preceding colon and leading 0
 Serial.print(":");
 if(digits < 10)
 Serial.print('0');
 Serial.print(digits);
} 

void fanTimer(){
if (
    ( minute() >= 0 && minute() < 4)
    //|| ( minute() >= 12 && minute() < 14)
    || ( minute() >= 20 && minute() < 24)
    //|| ( minute() >= 32 && minute() < 34)
    || ( minute() >= 40 && minute() < 44))
    //|| ( minute() >= 52 && minute() < 54))
{
  digitalWrite ( 23, LOW );
}
else
{
  digitalWrite ( 23, HIGH );
}    
}

void lightTimer(){
if ( hour() >= 6 && hour() < 18)
{
digitalWrite ( 22, LOW );
}
else
{
  digitalWrite ( 22, HIGH);
}
}

void humiditySensor() {
 float h = htu.readHumidity();

  // lcd.setCursor(0,1);
  Serial.print( "Hum: "); 
  Serial.println(htu.readHumidity());
  delay(500);


  if (h <= 95)
  {
    digitalWrite (50, HIGH);
  }
  else 
  {
    digitalWrite (50, LOW);
  }
}

2 个答案:

答案 0 :(得分:1)

基本上,您的代码在设置中唯一可以卡住的地方是湿度传感器初始化过程htu.begin(),它无法连接到传感器或传感器&#39;的回应并不像预期的那样。 您应确保正确连接,包括电源引脚和两条数据线。

但是,您还应该在串行输出中收到一条消息,说明:&#34;无法找到传感器!&#34;

您需要提供更多信息,例如:

  • 根据你得出的信息&#34;它会陷入设置&#34;?
  • 你从串口输出中得到什么?
  • 您升级了哪些硬件元素,是否单独测试过它们?

为了便于排除故障,我建议逐个测试每个主要组件 - 例如,运行与HTU21D-F传感器库捆绑在一起的示例草图,看看是否有效。

答案 1 :(得分:0)

这是令人尴尬的,但在审查了我的布线后(我不敢相信我这样做了)我在面包板上打开了+/-线。我换了电线,没有问题了......我发誓,布线一直是我的问题!!!