大家好我是阿俊 這次帶來的實作是 溫度感測 大家都知道 溫度計 對我很有很多種用途 例如 發燒 可以用體溫計來測量 市面上 許許多多的溫度測量的工具 其原理 在溫度晶片裡 有個探測器 他能依照環境的變化 而發送不同的值 然而再將這個值 透過公式換算 而得到我們所謂的 溫度 這次我使用 LM35 溫度探測 來實作 以下是實作的影片
我先說明 影片裡的目的 常溫下 顯示綠燈 變冷了則顯示藍燈 過熱則顯示紅燈
材料準備
Arduino 板子
數條連接線
1K歐姆 X3
LM35 X1
LED X 3 RGB
麵包板
官方程式編譯器 arduino-1.X.X以上版本
接下來式電路圖
這次電路 要注意的是LM35的腳位對應 其餘的都在其他篇講過了~
左邊對應著板子上的5V電源 中間為模擬引腳接入感測器的 右邊為接地
再來是程式碼
//ARDUINO 新手實作 溫度感測 by 阿俊~~
#define LM35 A1 // 定義LM35 為模擬引腳A1
int ledb =5; // 定義LED藍 腳位5
int ledg =4; // 定義LED綠 腳位4
int ledr =3; // 定義LED紅 腳位3
int val =0; // 將LM350值設為0
float temp = 0; // 將溫度浮動值設為0
void setup(){
pinMode(ledb,OUTPUT); // 定義LED為輸出腳
pinMode(ledg,OUTPUT); // 定義LED為輸出腳
pinMode(ledr,OUTPUT); // 定義LED為輸出腳
Serial.begin(9600); // 設定監控視窗傳輸速度
}
void loop(){
val = analogRead(LM35); // 感值來源為LM35所測的值
temp = (125*val)>>8; //溫度計算公式 125/2^8 = 125/256=0.4882812
Serial.print(“Tep=”); // 監控視窗句子前添加’Tep’
Serial.print(temp); // 在監控視窗裡顯示”temp”的值
Serial.println(” C”); // 在監視窗家裡 加上單位
delay(150); // 延遲0.15秒
if (temp<25) // 假設溫度小於25 則執行下列式
{
digitalWrite(ledb, 1);
digitalWrite(ledr, 0);
digitalWrite(ledg, 0);
}
else if (temp<35) // 則假設溫度小於35 則執行下列式
{
digitalWrite(ledg, 1);
digitalWrite(ledb, 0);
digitalWrite(ledr, 0);
}
else if(temp>35) // 則假設溫度大於35 則執行下列式
{
digitalWrite(ledr, 1);
digitalWrite(ledg, 0);
digitalWrite(ledb, 0);
}
}
由上面程式 有一段是 將LM35傳入的值 透過公式換算 就可以得到 目前溫度的值 在將溫度來做事件變化的指標 還有這是發現 使用了 else if 之前有說過在 Arduino 新手實作(二) 光控開關 講過 if 和 else 的用法 這次改用 else if 為何這樣做? 光控開關中 只使用了 開和關 2個事件 2個動作 這次有三個事件 三個動作條件判斷 因為在程式控制中 我給的條件多餘2的時候 必須要給他一個指標 沒錯 else if 就是用在這個時候 !~
結尾 這次實作 了解到 另外一種 條件辨別 讓程式 按照你想要的去運行 這次實作應該不會太難 也多了一種感測器的使用方法 謝謝大家 by 阿俊~

為何我的LM35讀出來的值會出現負的阿 而且溫度一值下降
版主回覆:(05/04/2015 07:13:14 AM)
不然你先試試 我的程式在運行看看 看是否是 硬體上的問題
請問用ds18b20的程式跟上頭的程式差不多嗎?
版主回覆:(05/11/2015 07:56:59 PM)
溫度感測也可以用在 這個程式喔! 只要能把阻值回傳 Analog in 端 都可以表示出來 喔!
不好意思 因為我剛接觸arduino程式這塊 可以麻煩把程式打出來嗎? 謝謝
版主回覆:(05/11/2015 08:29:08 PM)
試著想想 同樣溫度感測元件 程式是否通用 該做怎樣的修改 才可以符合 希望能幫到你 學程式不難 我也是入門學習中的人 希望能幫到你
謝謝你 剛剛試出來了
請問一下 我將您的程式做了更動,元件也改變了一些
想做出:當溫度高於設定值蜂鳴器響,低於設定值時LED亮
可是溫度在監控視窗中卻呈現不穩定跳動
這樣是LM35本身壞掉嗎?
恩 我解決了樓上的問題了
但是我又發現 我的監控視窗所顯示的溫度都是很低溫
而且將其加熱顯示溫度反而下降
懇請大大解答
版主回覆:(06/21/2015 08:54:27 PM)
程式沒問題的話 看看LM35正負接腳有沒有接好
想問一下如果想將溫度顯示在網頁上面,有相關的語法嗎??
目前ARDUINO可以顯示溫度
安安請問遺下 我照著您的接法接線 但為啥我開監控視窗卻讀不到溫度= =請問 是板子的問題還是lm35的問題?
請問如果我要加裝風扇,溫度高時風扇轉動如到30度開始作動溫度低時風扇停止作動如24度,我該怎麼打程式碼及要準備哪些器材,剛接觸這類東西謝謝
請問這支程式的標頭檔是?
請問如果我要加裝風扇,溫度高時風扇轉動如到35度開始作動溫度低時風扇停止作動如25度,我該怎麼打程式碼及要準備哪些器材