---
# System prepended metadata

title: Homework01-土壤感測器

---

---
type: slide
---


## 數位整合設計
### 授課教師：馮嘉慧(wanda@stust.edu.tw)
課程TA：張翊芠、黃筱萱

---

### HW01
:computer:土壤濕度偵測與 LCD 顯示
![101020008-3-600x450](https://hackmd.io/_uploads/H1QGyiLnJx.jpg =200x) ![104030001-1_04-600x450](https://hackmd.io/_uploads/BkjGkjUh1l.jpg =200x)

使用土壤濕度感測器偵測土壤狀態，透過 if...else 條件判斷土壤狀態（乾燥、適中、過濕），在LCD面板上即時顯示土壤濕度狀態

##### ==<font color="ff7e33">LCD顯示內容只能以英文顯示或使用標點符號以表情的形式呈現土壤狀態</font>==

---

#### 硬體連接
將LCD連接至I2C接腳，土壤感測連接至A0
![HW01](https://hackmd.io/_uploads/Sy0aZ3I2yx.png =700x)

---

### 宣告區
```javascript=
#define moisture_pin A0   //宣告土壤感測器使用的接腳編號為A0
#include <Wire.h>         //引用I2C通訊函式庫
#include "rgb_lcd.h"      //引用lcd函式庫


rgb_lcd lcd;              //建立lcd物件

const int colorR = 50;    //紅色背光數值範圍0~255
const int colorG = 50;    //綠色背光數值範圍0~255
const int colorB = 50;    //藍色背光數值範圍0~255
```

---

### setup區(初始化設定)
```javascript=11

void setup(){
    
 pinMode(moisture_pin, INPUT);    //將土壤感測器接腳初始化
 lcd.begin(16, 2);                //設定lcd硬體規格為 16格,2列
 lcd.setRGB(colorR, colorG, colorB); //帶入宣告區設定的lcd數值

 lcd.setCursor(0,0);        //指定游標位置為第0格,第0列

 lcd.print("Soil Status:"); //在lcd第0列上印出字串Soli Status:
 }

```

---

### loop區(迴圈)
```javascript=23
void loop() {
 int moistureValue = analogRead(moisture_pin);//獲取土壤數據 
 lcd.print("        ");     //清空第1列，避免殘留字符
 lcd.setCursor(0,1);        //指定游標位置為第0格,第1列

if(moistureValue < 200){    //定義水分<200為乾燥
  lcd.print("Too Dry :|");  //在lcd第1列上印出字串Too Dry :|
}else if(moistureValue >= 200 && moistureValue <=500){     
 //定義水分>=200與水分<=500為適中
  lcd.print("Moderate :)"); //在lcd第1列上印出字串Moderate :)
}else{                      //否則
  lcd.print("Too Wet :(");  //在lcd第1列上印出字串Too Wet :(
}
  delay(100);               //間隔0.1秒,再進行下一次讀取
}
```

---

### 影片
![S__40353817_0](https://hackmd.io/_uploads/r1_fdhU31x.jpg =300x)![S__40353818_0](https://hackmd.io/_uploads/Skn3_2Lhyl.jpg =307x)![S__40353819_0](https://hackmd.io/_uploads/B16t_3I2Je.jpg =302x)
連結:https://youtu.be/54tZyD-uDcQ

