大佬们求助,不知道为什么dht11温湿度模块测量失败。-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 327|回复: 0

[未解决] 大佬们求助,不知道为什么dht11温湿度模块测量失败。

[复制链接]
发表于 2022-4-22 22:37 | 显示全部楼层 |阅读模式
求助大佬们,DHT11模块不知道为什么单独测的时候测量成功了,连在一起的时候就测量不出温度。
下附代码
#include <DS3231.h>
#include <Servo.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <Wire.h>
#include <DHT.h>

#define DHTPIN A4     // 连接到 DHT 传感器的数字引脚
#define DHTTYPE    DHT11     // DHT 11
DHT dht(DHTPIN, DHTTYPE);

    // 定义矩阵键盘
const byte ROWS = 4; // 四行
const byte COLS = 4; //四列
char keys[ROWS][COLS] = {
  {'1','2','3',':'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 };// 将键盘 ROW0、ROW1、ROW2 和 ROW3 连接到2,3,4,5Arduino 引脚。
byte colPins[COLS] = { 6, 7, 8, 9 };// 将键盘 COL0、COL1 、COL2和COL3 连接到6,7,8,9 Arduino 引脚
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );      //  创建矩阵键盘

DS3231  rtc(SDA, SCL);
Servo servo_test;      //initialize a servo object for the connected servo  
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)

//int angle = 0;   
// int potentio = A0;      // 初始化电位器的 A0 模拟引脚

int t1, t2, t3, t4, t5, t6;
boolean feed = true;    // 闹钟条件
char key;
int r[6];

void setup()
{
  servo_test.attach(10);   // 将伺服电机的信号引脚连接到arduino的pin10
  dht.begin();
  rtc.begin();
  lcd.begin(16,2);
  servo_test.write(55);
  Serial.begin(9600);
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
}



void setFeedingTime()
{
  feed = true;
   int i=0;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Set feeding Time");
   delay(400);  
  lcd.clear();
  lcd.print("HH:MM");
  lcd.setCursor(0,1);
      char j = 0;

  while(1)
  {
    key = kpd.getKey();
    if(key!=NO_KEY){
      lcd.setCursor(j,1);
      lcd.print(key);
      r[i] = key;
      i++;
      j++;
      if (j == 2)
      {
        lcd.print(":");
        j++;
      }
      delay(500);
    }
    if (key == 'D')
    {
      key=0; break;
    }
  }
}

void loop()
{
  lcd.setCursor(0,0);
  int buttonPress;
  buttonPress = digitalRead(A3);
  if (buttonPress==1)
   setFeedingTime();
  Serial.println(buttonPress);
  
   lcd.print("Time:  ");
   String t = "";
   t = rtc.getTimeStr();
   t1 = t.charAt(0);
   t2 = t.charAt(1);
   t3 = t.charAt(3);
   t4 = t.charAt(4);
   t5 = t.charAt(6);
   t6 = t.charAt(7);
   
   lcd.print(rtc.getTimeStr());
   lcd.setCursor(0,1);
   float te = dht.readTemperature();
   float h = dht.readHumidity();
   if (isnan(h) || isnan(te))
   {
    Serial.println("Failed to read from DHT sensor!");
   }
   lcd.print("T:");
   lcd.print(te);
   lcd.print("C");
   lcd.print("H:");
   lcd.print(h);
   lcd.print("%");

   if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& feed==true)
     {
      servo_test.write(100);                   //将舵机旋转到指定角度的命令
       delay(400);   
      servo_test.write(55);
      feed=false;
     }
}   
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:31 , Processed in 0.079795 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表