寫這篇文章是因為最近在梳理Arduino學習筆記,回想起自己當初第一次接觸Arduino時候的那種懵懂和興奮,現在還記憶猶新,當時只希望對於Arduino各種秘密馬上能知曉,可惜當時的網際網路沒有那麼多學習資源,只能是自己慢慢摸索,走了不少的彎路,甚至是犯了錯誤。現在回想起來主要是當時對於Arduino的基礎性知識不明確、不系統,因此想分享一些系統的基礎知識給初學者,先和你聊聊5個Arduino的基本功能。
1、數字輸出
我們可以使用數字輸出功能,控制一個LED燈,確保此電路正確,還可以控制電機,製造出聲音甚至操控更多設備。
以Arduino UNO為例,0-13、A0-A5都可以接,使用digitalWrite(管腳,HIGH/LOW)命令,使用之前要使用pinMode(管腳, OUTPUT);設置該管腳為輸出狀態。下圖為Mixly中的「數字輸出模塊",可以看到管腳的選擇範圍以及取值範圍。
提醒:不同的數字傳感器觸發(燈亮、蜂鳴器鳴叫)方式不一樣,有的是低電平觸發,有的是高電平觸發,請注意區分,當初我也是傻傻的搞不清。
參考Arduino代碼如下:
void setup(){
pinMode(0, OUTPUT);
}
void loop(){
digitalWrite(0,HIGH);
}
2、模擬輸出
我們可以使用模擬輸出功能控制LED燈的亮度,不僅是使LED發光或者熄滅,還可讓它停留在兩者之間的某種亮度上。此外,我們甚至可以控制電機的轉速。
模擬輸出所能接的管腳不像數字輸出,只能接幾個PWM管腳:3、5、6、9、10、11,這點請你一定注意,這也是我有過慘痛的教訓的。如下圖Mixly當中的模擬輸出模塊所示,請注意觀察右側的代碼區,如果你是使用Arduino IDE直接代碼編程,那麼其命令就是:analogWrite(管腳,0-255);不需要使用pinMode命令。請你注意模擬輸出的取值範圍是0-255。
參考Arduino代碼如下:
void setup(){
}
void loop(){
analogWrite(3,0);
}
3、數字輸入
數字輸入功能可以讓我們獲知簡單傳感器的狀態,例如:按鈕、傾角開關。
數字輸入我們可以通過傳感器上的電位器(下圖光線傳感器中間藍色的突起,上面有十字架)調整我們需要的臨界值,這個也是初學者會忽略的地方。
數字輸入命令:digitalRead(管腳);管腳可以是0-13、A0-A11,使用該命令前要使用pinMode(管腳, INPUT);將該管腳設置為輸入狀態。米思齊的編程模塊如下圖所示:
參考Arduino代碼如下(使用了串口輸出):
void setup(){
pinMode(0, INPUT);
Serial.begin(9600);
}
void loop(){
Serial.println(digitalRead(0));
}
4、模擬輸入
我們可以使用模擬輸入功能讀取模擬傳感器的連續信號,而不只是開/關狀態的信號,例如:光線傳感器、電位計模塊。
模擬輸入使用analogRead(管腳);管腳只能是A0-A7,不需要使用pinMode。Mixly中的模塊如下:
參考Arduino代碼如下(使用了串口輸出):
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println(analogRead(A0));
}
5、串行通信
這使我們能夠與計算機進行溝通和數據交換,讓我們能夠監視正在運行的Arduino接收或者發送的數據。
使用時,先設置波特率,如下面的Arduino代碼所示:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("hello");
}
這個案例是串口輸出。串口輸出有很多種形式,你可以像下圖一樣,在mixly中一一進行嘗試。
還有串口輸入,請看下圖代碼:
參考Arduino代碼如下:
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.readString() == "a") {
Serial.println("hello");
}
}
最後,建議大家看我的另一篇文章Arduino教程┃Arduino主板大盤點,你用過哪些呢?
了解各種類型的主板管腳及功能,不同的創意選擇不同的主板。
天天初始化,每天學一點。初始化工作室專注於Arduino、Scratch、樂高的學習以及「STEM+」課程的實施,如果你需要更多相關課程,請「關注」我,謝謝。