#include <DHT11.h>
int pin=4;
DHT11 dht11(pin);
LedControl lc=LedControl(8,10,9,1);
void show2digit(int h,int t)
{
int seg1,seg2,seg3,seg4;
seg1 = h%10;
seg2 = h/10;
lc.setDigit(0,4,seg1,false);
lc.setDigit(0,5,seg2,false);
seg3 = t%10;
seg4 = t/10;
lc.setDigit(0,0,seg3,false);
lc.setDigit(0,1,seg4,false);
delay(300);
}
void setup()
{
Serial.begin(9600);
while (!Serial) {
;
}
lc.shutdown(0,false);
lc.setIntensity(0,5);
lc.clearDisplay(0);
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("temperature:");
Serial.print(temp);
Serial.print(" humidity:");
Serial.print(humi);
Serial.println();
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
lc.clearDisplay(0);
show2digit(humi,temp);
}
เมื่อวงจรทำงาน DHT11หรือโมดูลเซ็นเซอร์สำหรับวัดอุณหภูมิและความชื้นในอากาศ เมื่อเปลี่ยน
ค่าที่ DHT11 จะทำให้ค่าบน 7 segment ทั้งค่าความชื้น(humidity)และ ค่าอุณหภูมิ(temperature)
อ่านอุณหภูมิและค่าความชื้นโดยแสดงค่าจากLCD
#include <LiquidCrystal_I2C.h>#include <DHT11.h>
int pin=4;
DHT11 dht11(pin);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.begin();
lcd.setCursor(0,0);lcd.print("H = %RH");
lcd.setCursor(0,1);lcd.print("T = C");
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("temperature:");
Serial.print(temp);
Serial.print(" humidity:");
Serial.print(humi);
Serial.println();
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
lcd.setCursor(4,0);
lcd.print(humi);
lcd.setCursor(4,1);
lcd.print(temp);
delay(300);
}
ค่าที่แสดงบนจอ LCD โดยแสดงค่าความชื้นบน H = และ ค่าอุณหภูมิที่ T =
ไม่มีความคิดเห็น:
แสดงความคิดเห็น