Arduino+溫度、濕度感測器
- 2020 年 7 月 28 日
- 筆記
Arduino語言註解Arduino語言是建立在C/C++基礎上的,其實也就是基礎的C語言,Arduino語言只不過把AVR單片機(微控制器)相關的一些參數設置都函數化,不用我們去了解他的底層,讓我們不了解AVR單片機(微控制器)的朋友也能輕鬆上手。
相比Arduino,也許我們更熟悉「積體電路」這一概念。積體電路是為了實現某種特定功能的計算而設計的微小晶片。對於普通人來說,傳統的積體電路應用比較繁瑣,一般需要具有一定電子知識基礎,並懂得如何進行相關的程式設計的工程師才能熟練使用。但是Arduino的出現讓曾經只有專業人士才能使用的積體電路變為平易近人的電子設計工具,即使沒有程式設計基礎,也可以通過簡單的學習,掌握使用Arduino的方法。為了實現這一目標,Arduino從兩方面進行了努力與改進。首先,在硬體方面,Arduino本身是一款非常容易使用的印刷電路板。電路板上裝有專用積體電路,並將積體電路的功能引腳引出方便我們外接使用。同時,電路板還設計有USB介面方便與電腦連接。其次,在軟體方面,Arduino提供了專門的程式開發環境Arduino IDE。其介面設計簡潔,對於沒有接觸過程式設計的「小白」也可以輕鬆上手。
Arduino–UNO主板
Arduino–IDE
實驗一 Hello world
目標效果:列印「Hello world」 字體
硬體準備:Arduino UNO 主板
軟體準備:Arduino–IDE
電路連接:Arduino主板——電腦
程式碼:
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(“Hello world !”);
delay(1000);
}
實驗二 動態顯示器實驗
目標效果:顯示器顯示列印的文字
硬體準備:
Arduino UNO一塊
IIC1602顯示模組一個
Arduino UNO底板一塊
杜邦線若干
軟體準備:Arduino–IDE
電路連接:
GND——GND
VCC——5V
SDA——A4
SCL——A5
程式碼:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified backpack
void setup() { // activate LCD module
lcd.begin (16,2); // for 16 x 2 LCD module 設置LCD的列和行數
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
lcd.home (); // set cursor to 0,0 將游標設置為第0列第1行
lcd.print(” KeywishRobot”);
delay(1000);
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print(” “);
lcd.print(millis());
delay(1000);
lcd.setBacklight(LOW); // Backlight off delay(250);
lcd.setBacklight(HIGH); // Backlight on delay(1000);
}
實驗三 溫濕度感測器:
目標效果:螢幕顯示當前的溫度和濕度
硬體準備:
Arduino UNO一塊
IIC1602顯示模組一個
DHT11 溫濕度感測器一個
杜邦線若干
軟體準備:Arduino–IDE
電路連接:
IIC1602:
GND——GND
VCC——5V
SDA——A4
SCL——A5
DHT11:
VCC — 3.3V
GND — GND
DAT — pin8
程式碼:
/*
* 使用溫濕度感測器檢測資訊並顯示在 LCD 上
*/
#include <Wire.h> // 導入驅動 LCD 需要的庫
#include “LCD.h”
#include”dht11.h” // 導入 dht 庫,用於溫濕度感測器
#include “LiquidCrystal_I2C.h”
#define DHT11PIN 8 // 將溫濕度感測器的數據埠接至 A0
dht11 DHT11;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 是 I2C 匯流排的地址
void setup() {
pinMode(DHT11PIN,OUTPUT);
lcd.begin (16,2); // for 16 x 2 LCD module 初始橫16列、豎2行
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
// 讀取溫濕度感測器的數據
int chk = DHT11.read(DHT11PIN);
// LCD 顯示採集的溫濕度數據
lcd.setCursor(0, 0);
lcd.print(“Tep: “);
lcd.print((float)DHT11.temperature, 2);
lcd.print(“C”);
lcd.setCursor(0, 1);
lcd.print(“Hum: “);
lcd.print((float)DHT11.humidity, 2);
lcd.print(“%”);
delay(200);
}
延伸—圖形編程軟體:Scratch、mBlock
Scratch是一款由麻省理工學院(MIT) 設計開發的一款面向少年的簡易編程工具,scratch已經是少兒編程行業的基礎軟體。
mBlock 是一款面向 STEAM 教育領域的圖形化編程學習軟體,基於 Scratch 3.0 開發。它不僅能讓用戶創作有趣的故事、遊戲、動畫等作品,並且支援 Makeblock 主板和其他 Arduino 硬體的編程。
語法常用參數:
1、pinMode(介面名稱,OUTPUT或INPUT)將——介面定義為輸入或輸出介面,用在setup()函數里。
2、digitalWrite(介面名稱, HIGH或LOW)——將數字介面值至高或低。
3、digitalRead(介面名稱)——讀出數字介面的值。
4、analogWrite(介面名稱, 數值)——給一個介面寫入模擬值(PWM波)。對於 ATmega168晶片的Arduino(包括Mini或BT),該函數可以工作於 3, 5, 6, 9, 10和 11號介面。老的 ATmega8晶片的USB和 serial Arduino僅僅支援 9, 10和1 1號介面。
5、analogRead(介面名稱)——從指定的模擬介面讀取值,Arduino對該模擬值進行10-bit的數字轉換,這個方法將輸入的0-5電壓值轉換為 0到1023間的整數值。
6、delay()——延時一段時間,delay(1000)為一秒。
7、Serial.begin(波特率)——設置串列每秒傳輸數據的速率(波特率)。在同電腦通訊時,使用下面這些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200。你也可以在任何時候使用其它的值,比如,與0號或1號插口通訊就要求特殊的波特率。用在setup()函數里
8、Serial.read()——讀取持續輸入的數據。