2014年3月22日 星期六
[Arduino Starter Kit 06] Love-O-Meter TMP sensor 熱感應元件應用
Love-O-Meter 是一個感應體溫的裝置,隨著體溫的升高,LED 燈會逐漸亮起來。簡單的來說,Starter kit 認為這個可以測試對方看到你體溫會不會身高,升越高就越有愛拉!
本篇利用到 TMP36 溫度感應元件,簡單的介紹可以看這篇 溫度感應器 Temperature Sensor - TMP35/36/37。
Step 1. 準備材料:
紅色 LED x3
220 ohm 電阻 x3
TMP36 溫度感應器 x1
Step 2. 接線圖:
Step 3 原理與解說
Love - O - Meter 先用溫度感應器偵測周遭溫度,以室溫 20℃ 為基本,設定亮燈條件:
IDE sketch 如下:
// 定義 A0 pin 為 sensorPin,const 定義這個變數不可變更 (read-only)
const int sensorPin = A0;
// 定義室溫 20℃ 為基本比較溫度
const float baselineTemp = 20.0;
void setup(){
// 開啟 serial connection 視窗,讓我們可以在電腦上看到 TMP36 讀取到的數據
Serial.begin(9600);
// 設定 Pin 2~4 為輸出模式,並且先不亮燈
for(int pinNumber = 2; pinNumber<5; pinNumber++){
pinMode(pinNumber,OUTPUT);
digitalWrite(pinNumber, LOW);
}
}
void loop(){
// 讀取 A0 的訊號儲存到 sensorVal 這個變數中
int sensorVal = analogRead(sensorPin);
// 在電腦上顯示 sensorVal 的值,為 0~1023 間的數字,代表 0~5V 間的電壓
Serial.print("sensor Value: ");
Serial.print(sensorVal);
// 將讀取訊號轉換成電壓 (0~5V)
float voltage = map(sensorVal,0,1023,0,5)
// 在電腦上顯示換算後的電壓值
Serial.print(", Volts: ");
Serial.print(voltage);
// 將電壓轉換成溫度,公式解說可看這篇,溫度感應器 Temperature Sensor - TMP35/36/37
Serial.print(", degrees C: ");
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
// 如果溫度低於 baseline 溫度 (20℃),關掉所有 LED
if(temperature < baselineTemp){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
} // 如果高於 baseline 溫度 2~4℃,打開一顆 LED
else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
} // 如果高於 baseline 溫度 4~6℃,打開兩顆 LED
else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
} // 如果高於 baseline 溫度 6℃,LED 全開
else if(temperature >= baselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1);
}
影片:
影片中可以看到我把手放到 sensor 上,sensor 感受到體溫的時候,LED 燈就會亮起來,手拿起來溫度下降的時候 LED 會熄燈。最後一個畫面可以看到電腦上監控的溫度。
photo credit: Ðeni (break) via photopin cc
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言
Anything That's Worth Chatting