本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

带有温湿度的Arduino时钟
发布时间:2021-05-24
分享到:
带有温湿度的Arduino时钟
发布时间:2021-05-24
分享到:

该项目是一个不使用rtc制作的arduino时钟,DHT11温湿度传感器作为检测装置,并通过液晶显示屏显示温度和湿度。

硬件部件:

软件应用程序:

原理图:

代码:

#include <SimpleDHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int h = Your  hours here;
int m = Your minutes here;
int s = seconds here;
int flag = 0;
int TIME = 0;
const int hs = A0;
const int ms = A1;
int state1 = 0;
int state2 = 0;
int pinDHT11 = 11;
SimpleDHT11 dht11(pinDHT11);

void setup()
{
   pinMode(hs,INPUT_PULLUP);
  pinMode(ms,INPUT_PULLUP);
  lcd.init();
  lcd.init();
  lcd.backlight();
  lcd.print("Made by - ");
 lcd.setCursor(0,1);
 lcd.print("Harshit");
 delay (3000);
 lcd.clear();
}
void loop()
{
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess){
    return;
  }
  lcd.setCursor(0, 0);
  s = s + 0.50;
  lcd.print("TIME:" );
  lcd.print(h);
  lcd.print(":");
  lcd.print(m);
  lcd.print(":");
  lcd.print(s);
  if (flag < 12) lcd.print(" AM");
  if (flag == 12) lcd.print(" PM");
  if (flag > 12) lcd.print(" PM");
  if (flag == 24) flag = 0;
  delay(1000);
 lcd.clear();
  if (s == 60)
  {
    s = 0;
    m = m + 1;
  }
  if (m == 60)
  {
    m = 0;
    h = h + 1;
    flag = flag + 1;
  }
  if (h == 13)
  {
    h = 1;
  }
  state1 = digitalRead(hs);
  if (state1 == 0)
  {
    h = h + 1;
    flag = flag + 1;
    if (flag < 12) lcd.print(" AM");
    if (flag == 12) lcd.print(" PM");
    if (flag > 12) lcd.print(" PM");
    if (flag == 24) flag = 0;
    if (h == 13) h = 1;
  }
  state2 = digitalRead(ms);
  if (state2 == 0)
  {
    s = 0;
    m = m + 1;
  }

 s=s+1;
 if(s==60){
  s=0;
  m=m+1;
 }
 if(m==60)
 {
  m=0;
  h=h+1;
 }
 if(h==13)
 {
  h=1;
  flag=flag+1;
  if(flag==2)flag=0;
 }
  lcd.setCursor(0,1);
  lcd.print("Temp= ");
  lcd.setCursor(5,1);
  lcd.print((int)temperature);
  lcd.setCursor(7,1);
  lcd.print("C");
  lcd.setCursor (9,1);
  lcd.print("H=");
  lcd.setCursor(11,1);
  lcd.print((int)humidity);
  lcd.setCursor(13,1);
  lcd.print("%");
}

补充:

  • 该项目使用arduino nano作为编程板。需要在代码中设置时间:

(在无效设置之上)

  • 使用简单的DHT库,该库可与DHT11传感器配合使用,并将秒的增加率更改为0.50

  • 使用了具有4个引脚的DHT 11,这是其引脚排列

  1. vcc连接arduino 5v(与DHT11传感器相同)
  2. gnd连接arduino gnd(与DHT11传感器相同)
  3. scl连接A5
  4. sda连接A4

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论