2015年10月16日 星期五

「arduino簡易溫濕度計」應用國中生物


arduino簡易溫濕度計,可應用於:
第五章:受器-->中樞神經-->動器,神經傳導實做。
第六章:測試人呼出的氣體含有水氣。
剩下裝盒,製作「學生用說明書」,即可在課堂上玩。


材料:
Arduino UNO  (板子有更便宜的)
LCD1602
I2C接口   (建議去找焊接好的)
杜邦線40p公母 (夠四組用)

注意事項:
(1)需自行焊接LCD1602、I2C接口,後來有找到幫忙焊好也更便宜,但還沒買。
(2)杜邦線可以做出四組,我把「紅橙黃綠」當運動神經,「黑白灰」當成感覺神經。
(3)接法:
I2C-->杜邦線-->Arduino板
GND-->紅-->GND
VCC-->橙-->5V
SDA-->黃-->A4
SCL-->綠-->A5

DHT11:
DAT-->黑-->D3
VCC-->白-->3.3V
GND-->灰-->GND

(4)需要函式庫
https://github.com/adafruit/DHT-sensor-library
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

程式:
================================
/*    將DHT11測得的溫濕度顯示在LCD與序列阜視窗 */ 

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <dht.h>                 //使用DHT11 Library
LiquidCrystal_I2C lcd(0x27,16,2); 
dht DHT;     //定義DHT11 物件
#define dht_dpin 3  //定義讀取資料的 Pin腳 

void setup() {     
    Serial.begin(9600);  
    delay(300);             //Let system settle   
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  lcd.begin(16,2);

void loop() {  
  { 
   lcd.setCursor(0, 0); 
   int chk = DHT.read11(dht_dpin);  

      switch (chk) {     
   case 0:       
     lcd.print("Humidity:");       
     lcd.print((float)DHT.humidity, 1);       
     lcd.print("%");       
     lcd.setCursor(0, 1);       
     lcd.print("Tempure:");       
     lcd.print((float)DHT.temperature, 1);       
     lcd.print("oC");          
           break;     
   case -1:       
     lcd.print("Checksum error"); 
     break;     
   case -2:       
     lcd.print("Time out error"); 
     break;     
   default:       
     lcd.print("Unknown error"); 
     break;   
  }
 { 
  DHT.read11(dht_dpin);   //去library裡面找DHT.read11  
  Serial.print(DHT.temperature);
  Serial.print(",");
  Serial.println(DHT.humidity);  
  }  
   }  
   delay(2000); 
================================
參考資料:
http://ming-shian.blogspot.tw/2014/05/arduino19dht11.html
http://blogger.gtwang.org/2015/02/ywrobot-arduino-lcm-1602-iic-v1-lcd-display.html

這是我之前沒用I2C,所以arduino的腳位被佔滿,只好用擴充板,這樣成本會提高。

沒有留言:

張貼留言