【发布时间】:2018-05-02 20:11:56
【问题描述】:
我正在 Arduino Uno 上制作一个数字时钟项目。我被要求做的事情是在不使用 RTC 模块的情况下制作一个显示在 LCD 上的数字时钟。但我还想添加一些东西,例如 DHT11 温度和湿度传感器。我想在第一行显示 TIME:HH:MM:SS,在第二行我想显示 TEMP(*C):XX.YY,稍等片刻,清除第二行(我使用空白空格),然后显示 HUM(%):XX.YY。不断地。我只是想将第二行延迟 2 秒,同时从温度更改为湿度,以便清楚地查看温度和湿度值。但它会延迟整个系统,并且时间值也随着延迟时间而消失。我只希望时钟一直显示并分别显示温度和湿度。这是我下面的代码:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>
#define dht_apin 2
LiquidCrystal_I2C lcd(0x27, 16, 2);
dht DHT;
int h=14; //hour
int m=50; //minute
int s=20; //second
int flag;
int TIME;
const int hs=8;
const int ms=9;
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
delay(1000);
lcd.setCursor(0,0);
s=s+1;
lcd.print("TIME:");
lcd.print(h);
lcd.print(":");
lcd.print(m);
lcd.print(":");
lcd.print(s);
delay(400);
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;
}
//Temperature and humidity
DHT.read11(dht_apin);
lcd.setCursor(0,1);
lcd.print("TEMP(*C):");
lcd.print(DHT.temperature);
delay(2000);
lcd.setCursor(0,1);
lcd.print(' ');
lcd.setCursor(0,1);
lcd.print("HUM(%):");
lcd.print(DHT.humidity);
delay(1000);
}
谢谢!
【问题讨论】:
-
查看如何使用计时器。每次调用
delay函数时,您都会阻塞其他所有内容,因此时间会停止。
标签: arduino arduino-uno