ArduBlock

簡介

感謝法國人持續在更新ArduBolck的插件,一樣要使用Blockly的程式,那為什麼要使用ArduBolck呢?

一,為了下一階段學習

是為了讓學生在接下來的程式學習更方便,因為接下來進入大學之後,多數的學校一定會學習C++,在這樣的前提之下,

我還是希望學生透過學習ArduBolck,來先習慣C的架構,等真的走入程式學習階段可以減少一部分的困擾。

二,C語言困擾:語法

第一次接觸C語言的人,大概還來不及發揮創意,就會無數的語法除錯給搞死,

所以,透過Blockly的接頭模式,只要能接的,語法大概就沒什麼大錯。

Back to Top

下載及啟動

最新的載點-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

修改編輯器字型的字體大小。

點選檔案/偏好設定

進入偏好設定後,可以修改編輯器字型大小。

接下來依序點選

  1. 工具/板子/UNO
  2. 工具/序列埠/COM27(此數字,依查看UNO安裝時所得COM各有不同)
  3. 工具/ArduBlock Maxi

Back to Top

ArduBlock編輯軟體環境簡介

會出現兩個編輯視窗,在左側的為Arduino IDE,為Arduino原始的編輯環境。

在右側的是ArduBlock為外掛於rduino IDE的圖控語言。即為本次教材主要的使用環境。

工具列:除常見的檔案開啟/儲存之外,以上傳編輯完成的程式碼到Arduino UNO。

Back to Top

程式架構說明

#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作點燈的動作時,會有二種要求,

  1. 熄滅/點亮:這種情況就是數位輸出,意即只有二種狀態的輸出。
  2. 要求亮度大小:如果我們想要亮一點,或暗一點時,而不只是全亮或全暗時,就是要使用所謂的類比輸比。

接下來就對感測器讀取資訊時,會有二大類的感測器:

  1. 按鈕類:其所讀取的資訊,就只有5V或0V的差別,就是所謂的數位輸入。
  2. 可變電阻類:所讀取的資訊,會有0~5V不同程度的電壓值,就是所謂的類比輸入。

Back to Top

數位輸出

電路圖說明:

在UNO上,有一顆LED,它是和PIN 13直接連接,可以用來ON/OFF的動作。

在積木區的接腳類,主要都用來進行I/O腳位進行類比及數位動作的積木,也有一些常見功能的積木。

指令練習:

再點選工具列的上傳指令,就可以發現UNO板上的LED點亮。

當完成上列的指令時,可以點亮LED,但如果我們要讓LED有閃爍的功能時,程式是不是如下呢?(大誤)

會發現程式根本不如預期,所以,我們需要一下能夠設定延遲時間的積木。

在控制積木區中的delay MILL的積木是功能是用設定動作的延持時間:

如果程式改成這樣,會造成什麼問題呢?

Back to Top

類比輸出

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波形

參考程式

牛刀小試:

試看看,製作一個能夠重複執行,漸亮後又漸暗的燈光。

Back to Top

數位輸入

為什麼要加電阻呢?這是很重要的喔,一共有二種接法,一種叫上拉電阻,一種叫下拉電阻。他有不同的工作方式和特性,這可要搞清楚喔

Switch connected using pull-down resistor

Switch connected using pull-up resistor

程式碼:

就可以觀看上述二種接線的差異。

Back to Top

類比輸入

程式碼: