这个问题包括我为爱好种植者操作蘑菇温室的代码。我已经有一个现有的工作程序,但后来升级了一些硬件元素,并认为我可能会从我的程序中减少一些脂肪,并添加一些更复杂的功能。在这样做的过程中,我创建了一个程序,该程序将在没有错误的情
该程序由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);
}
}
答案 0 :(得分:1)
基本上,您的代码在设置中唯一可以卡住的地方是湿度传感器初始化过程htu.begin()
,它无法连接到传感器或传感器&#39;的回应并不像预期的那样。
您应确保正确连接,包括电源引脚和两条数据线。
但是,您还应该在串行输出中收到一条消息,说明:&#34;无法找到传感器!&#34;
您需要提供更多信息,例如:
为了便于排除故障,我建议逐个测试每个主要组件 - 例如,运行与HTU21D-F传感器库捆绑在一起的示例草图,看看是否有效。
答案 1 :(得分:0)
这是令人尴尬的,但在审查了我的布线后(我不敢相信我这样做了)我在面包板上打开了+/-线。我换了电线,没有问题了......我发誓,布线一直是我的问题!!!