包括在這個問題是我已經放在一起經營蘑菇溫室愛好種植者的代碼。我已經有了一個現有的工作程序,但是已經升級了一些硬件元素,並且認爲我可以減少程序中的一些脂肪,並添加一些更復雜的功能。在這樣做的時候,我創建了一個程序,該程序可以在沒有錯誤的情況下進行編譯,但不會在設置中卡住。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);
}
}
是否打印「無法找到傳感器!」? – Piglet