這是第一個比較像完整作品的 Arduino 作業:一個簡易的溫溼度計,功能是顯示溫度與濕度,有一個按鈕可以切換顯示哪一項,顯示的地方是在一個 1602 的LCD顯示幕上面。

所需要的零件有:

  1. 1. Arduino *1
  2. 2. 按鈕 *1
  3. 3. 電阻10k *2
  4. 4. 1602 LCD 顯示幕 (I2C界面) *1
  5. 5. DHT 11 溫濕度感應器 *1 (或是其他替代方案也可以)
  6. 6. 單心線若干

 

10k的電阻是做為按鈕的上拉(或下拉,看你想要怎麼接)電阻、以及 DHT11 的上拉電阻。

DHT 11 的函式庫可以在網路上找到,我是順便練習看 spec 然後自己寫一個。

1602 LCD 的函式庫要用這個:https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

一開始的時候是用這個: http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

雖然他說已經針對 Arduino 1.0 做了修正,可是我還是試不出來,甚至以為是 LCD 壞了,後來才發現是函式庫問題,卡了好久。他的舊版是可以在 Arduino 0.22 版運作無誤,可是新版在 Arduino 1.0, 1.0.1, 1.0.2 我都試不出來。好險有找到可以用的函式庫,不然我應該暫時改不出來,囧rz

因為做作業的時候,手上沒有按鈕,就只好拿舊電腦拆下的按鈕先將就著用 XDD

以下是完成圖:

按鈕尚未按下時,顯示濕度

IMG_20121216_230209

按鈕按下之後顯示溫度

IMG_20121216_230220  

有幾個小技巧:

濕度的最大值99、溫度的最大值40、溫度的度C字元,還有下面的長條圖是我自己加上去的,這些圖案必須自己手繪,LCD 函式庫中的範例有。這項作業剛好將8個可自訂字元用完:99、40、度C、左邊線、右邊線、方塊、左邊線+方塊、右邊線+方塊。

把溫濕度的數值轉換成長條圖可以自己算,或是採用內建的函式 map() 可以將某一段數值對應到另一段數值,這邊的例子就是濕度的 0~99 對應到 0~16 (因為每行可以顯示16個字元)。

大家一起來玩 Arduino 吧!!

arrow
arrow
    文章標籤
    arduino dht11 LCD 1602
    全站熱搜

    koukaipan 發表在 痞客邦 留言(6) 人氣()