---
# System prepended metadata

title: IoT 第三次聚會 課程講義

---

# IoT 第三次聚會 課程講義
## 大綱
* 運用溫度顯示器與LCD顯示器，做出一個能顯示出溫濕度的小儀器。

## 接線表
### DHT11
|Src|Dst|備註|
|:-:|:-:|:-:|
|VCC|5V||
|GND|GND||
|DATA|隨你高興|但要接在Digital的腳位上|

### Nokia 5110 LCD
|Src|Dst|備註|
|:-:|:-:|:-:|
|RST Pin|pin 6(Uno Rev3)|串聯10k電阻|
|SCE Pin|pin 7(Uno Rev3)|串聯1k電阻|
|D/C Pin|pin 5(Uno Rev3)|串聯10k電阻|
|DIN Pin|pin 4(Uno Rev3)|串聯10k電阻|
|CLK Pin|pin 3(Uno Rev3)|串聯10k電阻|
|VCC Pin|3.3V|串聯10k電阻|
|LED Pin|可變電阻中間pin腳|可變電阻其餘兩個pin接至3.3V及GND|
|GND Pin|GND||
### LCD 1602A
|Src|Dst|備註|
|:-:|:-:|:-:|
|1 VSS Pin|GND|電源負極|
|2 VCC Pin|5V|電源正極|
|3 Vo Pin|可變電阻中腳|調整對比|
|4 RS Pin|腳位 2|D0~D7放入資料暫存器 (1) 或指令資料暫存器 (0)|
|5 RW Pin|GND (寫入)|讀取 (1) 或寫入 (0) LCD|
|6 E Pin|腳位 3|可寫入 (1) 或不可寫入 (0) LCD|
|7 D0 Pin|不接|資料位元 0|
|8 D1 Pin|不接|資料位元 1|
|9 D2 Pin|不接|資料位元 2|
|10 D3 Pin|不接|資料位元 3|
|11 D4 Pin|腳位 4|資料位元 4|
|12 D5 Pin|腳位 5|資料位元 5|
|13 D6 Pin|腳位 6|資料位元 6|
|14 D7 Pin|腳位 7|資料位元 7|
|15 A(+) Pin|5V|背光電源正極|
|16 K(-) Pin|GND|背光電源負極|
### LCD 1602A接腳圖
![](https://i.imgur.com/Lycur1k.png)


## 相關程式碼
#### DHT11
```cpp
// some example code here.
#include "DHT.h"
#define dhtPin 10
#define dhtType DHT11

DHT dht(dhtPin, dhtType);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity(); // 讀取濕度
  float t = dht.readTemperature(); // 讀取攝氏溫度
  float f = dht.readTemperature(true); // 讀取華氏
  if (isnan(h) || isnan(t) || isnan(f)) { // 檢查資料是否為數值
    Serial.println("無法從DHT傳感器讀取！");
    return;
  }
  Serial.print("濕度:");
  Serial.print(h);
  Serial.print(" ");
  Serial.print("攝氏溫度:");
  Serial.print(t);
  Serial.print("*C ");
  Serial.print("華氏溫度:");
  Serial.print(f);
  Serial.print("*F\n");
  delay(3000);//延時1秒
}
```
#### Nokia 5110
```cpp
#include <PCD8544.h>

PCD8544 lcd;

void setup() {
   lcd.begin(84, 48);
}
void loop() {
  int a = 822;
  lcd.setCursor(0, 0);
  lcd.print("Hello");
  lcd.setCursor(0, 1);
  lcd.print("Lab ");
  lcd.print(a);
  delay(2000);
  lcd.clear();
  delay(1000);
 }
```
#### LCD1602A
```cpp
#include <LiquidCrystal.h>
#define RS 2
#define E 3
#define D4 4
#define D5 5
#define D6 6
#define D7 7

LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // 建構 lcd 物件

void setup() {
  lcd.begin(16,2); // 定義LCD為 2列 16行
  lcd.clear(); // 清除螢幕
}

void loop() {
  lcd.setCursor(0,0); //設定游標在螢幕的第0行 第0列
  lcd.print("time:");
  lcd.print(millis() / 1000); // 印出執行秒數
  lcd.setCursor(0,1); // 設定游標在 第1列 第0行
  lcd.print("lab 822");
}
```
[Library 連結](https://drive.google.com/open?id=1V1uT87rLM5SEMQlaxA-UxGRm6k7M2BTA)

## 延伸閱讀
[DHT11 Humidity and Temperature Sensor Datasheet](https://www.mouser.com/ds/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf)
[Interfacing-nokia-5110-lcd-with-arduino](https://create.arduino.cc/projecthub/muhammad-aqib/interfacing-nokia-5110-lcd-with-arduino-7bfcdd)
[Arduino 液晶顯示器](http://yhhuang1966.blogspot.com/2015/03/arduino_25.html)