接下來看一下 Arduino MCU + Analog/Digital Sensor 的簡單示範範例(溫溼度計) :
Arduino Mega2560 + DHT11 Sensor(Without LED Shield)
此圖由 fritzing 製作而成, 請自行下載使用
此圖由 fritzing 製作而成, 請自行下載使用
再來看看真實的Arduino在IOT 的實際應用, 由 Arduino AVR + Digital Seosor(DHT 11) + 1602 LCD Keypad Shield + LED, 所組合而成的簡易型溫濕度計, 如下圖
|
要如何讓溫濕度的感應器(DHT11 Sensor)所測得的數據顯示在 2*16 的LCD 螢幕上, 同時更新 溫濕度數據時, 讓紅色的LED燈亮一下, 這樣我們也可以看到溫濕度感應器(DHT11 Sensor, PIC 3-1)是有作用中, 所以來看一下 Arduino IDE 的 程式是如何寫的:
PIC 3-1
/* 將DHT11測得的溫濕度顯示在LCD顯示器 */
#include <LiquidCrystal.h> //使用LiquidCrystal Library
#include <dht11.h> //使用DHT11 Library
LiquidCrystal lcd(8,9,4,5,6,7); //初始設定LCD1602 Keypad 的顯示器的介面
dht11 DHT11; //定義DHT11 物件
#define DHT11PIN 2 //定義讀取資料的 Pin腳
void setup() {
lcd.begin(16, 2); // 設定LCD有2列16欄
Serial.begin(9600);
}
void loop() {
lcd.setCursor(0, 0); //將游標設定在第一行第一個位置(column 0, line 1)
int chk = DHT11.read(DHT11PIN); //檢查DHT感測器的回應
switch (chk) {
case 0:
lcd.print("Humidity:");
lcd.print((float)DHT11.humidity, 1);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Tempure:");
lcd.print((float)DHT11.temperature, 1);
lcd.print("oC"); // 無法顯示度,只好用小寫的O表示
digitalWrite(3, HIGH);
delay(1000);//Wait rest of 1 second recommended delay before
//accessing sensor
digitalWrite(3, LOW);
break;
case -1:
lcd.print("Checksum error");
break;
case -2:
lcd.print("Time out error");
break;
default:
lcd.print("Unknown error");
break;
}
delay(1000); //延遲 1 秒
}