ArduBlock
簡介
感謝法國人持續在更新ArduBolck的插件,一樣要使用Blockly的程式,那為什麼要使用ArduBolck呢?
一,為了下一階段學習
是為了讓學生在接下來的程式學習更方便,因為接下來進入大學之後,多數的學校一定會學習C++,在這樣的前提之下,
我還是希望學生透過學習ArduBolck,來先習慣C的架構,等真的走入程式學習階段可以減少一部分的困擾。
二,C語言困擾:語法
第一次接觸C語言的人,大概還來不及發揮創意,就會無數的語法除錯給搞死,
所以,透過Blockly的接頭模式,只要能接的,語法大概就沒什麼大錯。
下載及啟動
最新的載點-0.67.4版
http://duinoedu.com/dl/logiciels/arduino/arduino_augmente/version_duinoedu/DERNIERE_VERSION/
下載後,直接解壓縮。
因為,在本校課程之中,常使用motor shield,在ArduBlock中 常用Adafruit馬達的指令,所以需要將Adafruit-Motor-Shield-library納入Arduino的library資料夾中.
請至
https://github.com/adafruit/Adafruit-Motor-Shield-library
點選右上角的下載的選項。
解壓縮後將,資料夾內的資料夾複製。(請注意一定要注意是第二層的資料夾)
後貼到Arduino的librariesh的資料夾中。
直接點擊Arduino,開啓Arduino IDE .
為方便操作起見,故將Arduino應用程式在桌面建立起捷徑。
點擊桌面的Arduino的捷徑 ,進入Arduino IDE
修改編輯器字型的字體大小。
點選檔案/偏好設定
進入偏好設定後,可以修改編輯器字型大小。
接下來依序點選
- 工具/板子/UNO
- 工具/序列埠/COM27(此數字,依查看UNO安裝時所得COM各有不同)
- 工具/ArduBlock Maxi
ArduBlock編輯軟體環境簡介
會出現兩個編輯視窗,在左側的為Arduino IDE,為Arduino原始的編輯環境。
在右側的是ArduBlock為外掛於rduino IDE的圖控語言。即為本次教材主要的使用環境。
工具列:除常見的檔案開啟/儲存之外,以上傳編輯完成的程式碼到Arduino UNO。
程式架構說明
#include<***.h>
//引用所需要的標頭檔
//程式的基本架構可以分為setup()和loop(),兩個基本函式
void setup()
{
//在setup()函式之中,負責起始化相關參數及功能
}
void loop()
{
//loop()函式的功能是重復執行指定的功能
//直到程式結束為止
}
在使用ArduBlock時,所使用的程式架構積木如下:(說明如上)
它在積木區的控制類,主要都用來進行程式順序及邏輯判斷的積木
【何謂數位/類比】
數位訊號是資料轉換成所對應的「0」與「1」的二進位資料,而類比訊號即與數位訊號對應,類比訊號是連續的訊號。而數位訊號在傳輸時,具不易受干擾的優點。
數位訊號
類比訊號
接下來,要介紹的就是在Arduino最重要的四個語法:
ArduBlock程式積木
Arduino程式語法
digitalWrite()
analogWrite()
digitalRead()
analogRead()
功能
對數位輸出腳位設置Hi/Lo狀態
對類比輸出腳位設置出力(0~255)大小
讀取數位輸入腳位的狀態(Hi/Lo)
讀取類比輸入腳位的狀態(0~1024)
備註
以下會針對這四個重要積木作練習,首先就其概念作一下說明。
如果我們要讓Arduino對一顆LED作點燈的動作時,會有二種要求,
- 熄滅/點亮:這種情況就是數位輸出,意即只有二種狀態的輸出。
- 要求亮度大小:如果我們想要亮一點,或暗一點時,而不只是全亮或全暗時,就是要使用所謂的類比輸比。
接下來就對感測器讀取資訊時,會有二大類的感測器:
- 按鈕類:其所讀取的資訊,就只有5V或0V的差別,就是所謂的數位輸入。
- 可變電阻類:所讀取的資訊,會有0~5V不同程度的電壓值,就是所謂的類比輸入。
數位輸出
電路圖說明:
在UNO上,有一顆LED,它是和PIN 13直接連接,可以用來ON/OFF的動作。
在積木區的接腳類,主要都用來進行I/O腳位進行類比及數位動作的積木,也有一些常見功能的積木。
指令練習:
再點選工具列的上傳指令,就可以發現UNO板上的LED點亮。
當完成上列的指令時,可以點亮LED,但如果我們要讓LED有閃爍的功能時,程式是不是如下呢?(大誤)
會發現程式根本不如預期,所以,我們需要一下能夠設定延遲時間的積木。
在控制積木區中的delay MILL的積木是功能是用設定動作的延持時間:
如果程式改成這樣,會造成什麼問題呢?
類比輸出
Arduino的輸出只能輸出數位訊號,即0和1,那想輸出2.5V時,要怎麼辦呢?Arduino是利用所謂PWM(脈波寬度調變)的模擬方式,透過控制數位訊號1/0變化,當成通電和不通電來看待。當需要輸出佔空比為25%的能量時,在單位時間內的數位輸出僅25%的數位波型為高電位(即1或Hi),獲得一個模擬類比的能量,即意用數位訊號「假裝」成類比訊號。
Arduino的類比輸出值為0~255,加上Arduino的工作電壓為5V,如果想模擬輸出2.5V的話,其類比輸出值應設定127。
Arduino的類比輸出腳是和數位輸出共用,在板子上的數位輸出部分,有標示~的部分,才有支持PWM的類比輸出,其分別為第3、5、6、9、10、11腳,一共是六支腳而已。
PWM波形
參考程式
牛刀小試:
試看看,製作一個能夠重複執行,漸亮後又漸暗的燈光。
數位輸入
為什麼要加電阻呢?這是很重要的喔,一共有二種接法,一種叫上拉電阻,一種叫下拉電阻。他有不同的工作方式和特性,這可要搞清楚喔
Switch connected using pull-down resistor
Switch connected using pull-up resistor
程式碼:
程式碼: