發表文章

目前顯示的是有「PyMata」標籤的文章

Python可以這樣玩(21):LM35 與 DHT11

圖片
我決定把這兩個感應器一起討論,因為這兩種感應器都不屬於 I2C ,為了節省時間,我就把這兩個感應器一起接在麵包板上面,一起讀取數據。 不過,這兩種感應器的程式寫法非常不同,而且連接的 PIN 也非常不同, LM35 必須使用 Analog PIN 來讀取資料, DHT11 則必須用 Digital PIN 來讀取資料。 線路如何接?請參考下圖,接法很簡單,兩個模組都有三個腳位,分別是 VCC 、 GND 與 OUT ,請將 VCC(+) 接在 5V , GND(-) 接地,接下來就是 OUT , LM35 請接到 A0 , DHT11 請接到 D7 。 首先談 LM35 ,利用 Arduino 開發板上的類比輸入,讀取溫度感測 IC 上的值,轉成實際溫度然後透過 Serial port 傳輸至電腦,而電腦這端則是利用序列監視器 ] 來接收。 Arduino 這邊的程式很簡單,先初始化 serial port ,然後再經由 A0 讀入 LM35 的感測值,要注意這個感測值是 10 位元 (bits) ,根據 LM35 的 datasheet 得之,正確溫度的計算方式是每 10mV(0.01V) 增加一度 C ,也就是說 0V 代表 0 度 C , 0.1 V(10*0.01V) 代表 10 度 C ,以此類推。因為每次讀回 10bit 的資料 n ,我們要將 n 換成電壓值 : (5V/1024)*n ,又每 10mv 增加一度,所以實際溫度 =(5V/1024)*n/10mV = (500/1024)*n 。 算出實際溫度之後,利用 Serial.print() 函數將資料輸出至 Serial port 傳輸至電腦 ( 我的系統是 COM4) ,此時的資料是字串型式 ( 每筆資料都是整數兩位數,小數兩位數,加上小數點共五個字元, EX:  28.93) 。 void setup()  {   Serial.begin(9600);  } void loop() {   float x;   int n;   n = analogRead(0);   x = 500.0 * n ...