2017年12月6日 星期三

SimpleDs18b20就是這麼簡單!

你看,這就是我釣的魚!


話說老鄭拿著一條魚向朋友炫耀,說是他自己釣回來的!
然而,朋友們都不相信,此時,老鄭的老婆剛好路過,看了一下魚
就說:「這魚確實是老鄭自己釣的!,因為,市場沒這麼小條的魚!」
老鄭:「再小.........也是魚呀!」

沒有張屠夫,還是得吃肉

標準的使用DS18B20要使用兩個程式庫, OneWire及DallasTemperature,前者是1-Wire通訊協定,後者是此元件的專用程式庫。品牌好且大家使用也沒問題,真是一好三公道,且將DS18B20的功能發揮到完美。
不過, 各位有沒有想過,前面的溫度感測器DHT22、DS18B20、MAX6755等,我們最想要的其實就只是溫度值!
正如同,喝咖啡,你可以用這個頂級咖啡機來沖泡,大約18000美元,可以給你極致的美味咖啡!
圖片來源:https://shop.forfivecoffee.com/products/la-marzocco-strada-mp

也可以用這個越南咖啡壺來沖泡,價格約10元(在越南的價格),也是咖啡
http://oceanlinktravel.vn/news-travel-guide/cafe-sua-da-thuc-qua-rieng-cua-nguoi-sai-gon.html
其實,程式庫就是工具,它可以是豪華也可以簡單,在我眼中,現有的程式庫,就像是高級遊艇,而且功能齊全,又高大上(高端大氣上檔次),不過說穿了,不就是個出海的工具嗎?咱們用保麗龍板拼一拼也是可以出海不是嗎?
別人寫的出來,很好很強大,是否自己也可以寫一個試試!咱們要的也不多,不用功能齊全(什麼設定位元解析度、一線多元件的)!就設一個小目標:自己寫一個程式庫來就讀取溫度值。

是驢子?是馬?拉出來溜一溜就知道了!

對一個初學Arduino的人來說,這有點挑戰,但也還好,花了一點時間,摸著石頭過河,先參考現有的程式庫,不懂的就找Google、Datasheet,就這樣,一步一腳印的摸著石頭過了河,算是達到自己設定的目標-->程式庫名稱:SimpleDs18b20,功能:讀取DS18B20溫度值。

程式庫的限制 


【注意:這個程式庫只能於Arduino 1pin 接1個DS18B20的情況下使用】
使用條件:
1、Arduino 1pin 只能接1個DS18B20
2、外接電源模式
在滿足上述條件下,這個程式庫就能(也只能)讀取溫度值
※注意:當接線有問題或是DS18B20故障時,會出現"-127"異常值

STEP-1-零配件清單及接線圖

此圖依序為Datasheet上之外部接線圖、材料清單及零件示意圖
此圖為Arduino與DS18B20接線圖及其局部放大,要注意的是DS18B20之接腳的接線:
1- GND 為電源地。
2- DQ 為數位資號輸入/輸出端。
3-VDD 為外接供電電源輸入端。
【注意:我使用的是Pin 7不是Pin 2喲!】

STEP-2- 程式碼說明

SimpleDs18b20既然是Simple,那就是Simple
只有一個功能,就是讀取攝氏溫度值(Get Temperature)
所以只有一個函式GetTemperature()

範例程式的第15行:
Serial.println(ds01.GetTemperature());

讀取(GetTemperature)感測器物件(ds01)的溫度值,並將其值印出

STEP-3-程式碼及輸出

// 引用程式庫SimpleDs18b20
#include <SimpleDs18b20.h&gt
//將連接Pin腳設定於pin 7
uint8_t dq_pin=7;
//建立物件ds01(它是位於pin7的DS18B20)
SimpleDs18b20 ds01(dq_pin);

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

void loop() {
    Serial.print("Ds18B20's Temperature --> ");
    // 使用GetTemperature()來讀取溫度值,並顯示
    Serial.println(ds01.GetTemperature());
    delay(1000);
}

輸出結果 


STEP-4-下載/安裝程式庫(SimpleDs18b20)

有興趣的朋友,可以到以下的連結下載試用看看!內含接線圖、範例程式及程式庫!

 SimpleDs18b20程式庫下載連結




掌握DS18B20就只要過9塊石 

自己寫程式庫很難嗎?說真的,對一個初學者而言,寫DS18B20真有點難!因為到後來,我才發覺,它的水有點深但還不會太深,摸著石頭過河後,回頭看看,喲!不多,要過DS18B20這條河,就只要過九塊石!想試試嗎?且待下回分曉!。

沒有留言:

張貼留言