之前我們曾經在去年12月開過一堂Arduino 開發板新手入門課,提供最基本以及最簡單的入門教學,但是當時有些學員反應IDE的開發環境對於沒有程式基礎的人還是太難,希望能學習圖形化介面的課程,因此我們在3/19加開了這堂課程,主要就是基於之前的課程之上,增加Scratch圖形化介面程式的教學,更降低學習的難度。
這次的課程依然是邀請與Maker Club合作相當多次課程的Motoduino 團隊,從上午九點半開始,到下午五點半結束,課程相當紮實。Motoduino 團隊設計了14個主題,藉由這些主題,可以帶領學員從課程中認識Arduino的基本驅動,輸出入的應用,並且在 Scratch 軟體中拖拉圖像式積木指令,就可以建構程式碼,玩感測器、馬達、LED、麥克風等等實體元件。
上課講師:Motoduino 團隊介紹
成員包括 Dennis Chen, M.B. Lee, Sam Lin,本身都是資深 Maker,並長期投入開放硬體的研發及教學,專長包括網路應用程式開發、彩色影像處理、色彩管理及影像辨識、Android 手持裝置應用設計、開放硬體相關設計(Arduino/Raspberry Pi)。
這次針對Scratch的教學,新增了一位徐瑞茂老師,他之前是程式設計師,後來跨入Maker領域,徐瑞茂解釋自己踏入Maker領域,主要是要教自己的小朋友一些科學應用,想要藉由開發板的應用來引導小朋友的學習。但是,因為他平常的工作就是在寫程式,所以教小朋友的時候,就不想要再碰程式,而且程式語言也不適合年紀太小的孩子學習,因此才改用 Scratch進行教學。
▲徐瑞茂老師
STEM課程:培養動手做的習慣
美國首先提出了「STEM計劃」,代表科學(Science), 技術(Technology), 工程(Engineering), 數學(Mathematics)。STEM教育就是科學,技術,工程,數學的教育。鼓勵學生主修這四大領域的教育,也鼓勵學童即知即行,培養動手做的習慣。
而美國歐巴馬總統2015提出的「美國創新戰略」,指出美國未來的經濟成長和國際競爭力取決於創新能力。目前各個國家都在推動兒童、學生的程式設計,歐巴馬也是不留餘力的再推行,希望孩子在電腦上不要只是玩GAME。
Scratch為什麼這麼紅?
Scratch是由美國MIT實驗室開發的圖形程式介面,結合多媒體培養創意思考、設計的核心就是一種「積木式」的撰寫程式方法,讓寫程式也可以類似在玩互動遊戲一樣,培養學習的興趣。他的特色之一是可以培養創意思考的技能、協助學生發展推理邏輯,更重要的是可以培養團隊合作的能力,幫助跨領域的技能可以整合在一起。
而Arduino當年之所以會推出,在設計之初本來也是針對藝術互動需求的學生所設計的,所以出發點就是簡單易用,容易使用這塊板子做不同的應用。而且後來因為開源,有越來越多的人加入開發計畫,衍生出許多不同的玩具、自動控制、物聯網等等的應用,是目前最熱門的開發板之一。
由上面可以看出,Scratch、Arduino兩者的出發點都有相同特色,就是力求簡單、希望跨領域的人才都能應用。因此,西班牙的一個團隊,就想到把Arduino與Scratch相結合,推出S4A(Scratch For Arduino),讓人們可以用圖形化介面來控制Arduino。
不過,S4A開發了3~4年,其實並不是非常的Prowerful。不過,最近開始有2.0的版本出來(S2A,Scratch 2.0 for Arduino),威力要比之前的版本強大許多。不過2.0版本目前還有一些缺點,最大的問題就是安裝不易,在Windows、Mac上安裝不容易成功,對於一般人來說使用起來有門檻,所以沒有那麼容易普及。
還有什麼可以用在Arduino上的圖形化介面語言?
mblock
由中國的Makeblock所開發的mBot系列套件大家應該並不陌生,之前MakerClub也辦過幾次教學。而由他們同時基於Scratch 2.0為基礎所開發的開源軟體mblock,操作方便,也是圖形界面學習程式撰寫的好工具。
ArduBlock
把C的程式碼轉成圖形界面,不過比較偏向高中、高職以上,對C有概念的人才習慣使用。你也可以把它想像成是C語言版本的Scratch。
實際認識S4A
- 官網下載
當你開啟Scratch for Arduino的時候,首先你會看到下面這個介面,這個介面有四大區塊,其中只有程式積木區這裡會與Arduino有關,其它的區塊都是圖形程式介面本身的功能:
- 程式積木區(與Arduino有關)
- 程式區
- 程式展示區
- 角色區
你可以將Scratch視為是一種軟體積木,基本上就是你只要把每一個積木元件拼接好了,就可以組成一個功能,讓寫程式與玩積木一樣簡單。
所以,現在我們從積木區拖曳動作積木,拉到程式區。我們在前面說過,積木是一塊一塊堆疊起來的,因此當你要將下一個積木動作拖曳過來連接的時候,必須要看到前一個積木下方會出現白色的長條,這表示下一個積木要與他連接起來。
如果沒有出現這個白色長條,就表示兩者沒有連接上,視為兩個獨立的動作。
要讓程式依序跑下去,一定要組好(積木一定要連結上)。之後當你將你的積木動作組好後,當你在程式展示區,按下開始執行(綠色旗子),就會依據我們剛剛的設定來進行程式動作。
現在進一步來看程式區,程式區這裡有三個頁籤:程式/造型/聲音
要解釋什麼是造型,需要一併來看四大區塊中的角色區塊。什麼叫角色?簡單的定義就是只要在程式展示區裡頭可以跟我們產生互動的,都是角色。
上圖,在程式展示區中有一個Arduino的「角色」,這是可以看得到的,但是事實上在程式展示區中有兩個角色,除了Arduino板子之外,背景(程式中稱之為舞台)也算是一個角色。
好,現在我們把焦點集中在角色區,我們隨時可以新增角色,新增的方式是可以用手動自己繪圖畫出一個角色,或是也可以插入圖片來當成一個角色。
▲選擇繪製新角色時,就會叫出繪圖編輯器,手動繪出新角色
▲選擇開啟角色檔案的話,則是可以用內建的圖庫檔案來新增角色。
要注意的是,並不是所有角色都可以與Arduino積木互動,只有後面三種角色新增的方法(下圖黃色圈起來的地方),才有內建與Arduino積木互動的方式。
造型與角色有何不同?
現在你知道什麼是角色,那麼造型又是什麼呢?簡單的講,就是你可以想像一個演員(角色)可以有很多種造型,可以扮老、扮醜、扮搞笑。但是不管造型怎麼變,都是同一個角色。
舉例來說,在超級瑪利中的問號磚塊,被瑪莉歐撞擊後,會變成鐵磚塊,但是不管是哪一種造型,都是同一個磚塊,算是同一個角色。
在舉例來說,孫悟空有72變,等於有72種造型,但不管是哪一種,他都是「孫悟空」這個角色。
聲音
在程式區還有一個「聲音」的頁籤,其實就是讓你將角色增加一些事件的音效,你可以利用錄音,或是聲音檔案,來讓角色針對不同的狀態,做出聲音對應的轉變。
程式展示區
把程式寫好之後,就可以在展示區中看到成果。這裡就是整個程式的「舞台」。
展示的方法很簡單,按下右上角按綠色開始執行、紅色停止。就跟紅綠燈一樣。
▲程式展示區
實例教學:用S4A Sensor board互動感測板學程式
認識了S4A的基本環境概念後,接下來就是進入實際手動學習的時候。在這裡搭配使用的是Motoduino 團隊所開發的S4A Sensor board互動感測板,這塊板子將板子分成三等分,外接接頭、輸入、輸出的元件分別各自佔一個區塊,對於初學者學習來說這種設計很便利。
在這次的課程中,老師幾乎將這塊板子上面的所有功能都用到了。這個部分佔的教學時間最多,目的就是讓所有的學生能夠在實例中理解怎麼樣利用Scratch for Arduino來寫程式,並且在寫程式中還要瞭解到怎麼與外部的S4A感測板進行溝通,與板子上的光感測器、滑桿、蜂鳴器、麥克風、馬達等輸出入裝置進行互動。
在這個部分,主要的課程包括有:
- 利用S4A角色繪製、造型切換與LED控制
- LED與按鈕、麥克風與光感測器的應用
- 用滑桿控制學習多執行緒、變數、運算群組與聲音控制
- 蜂鳴器+滑桿控制學習S4A的大小特效與蜂鳴器
- 畫筆群組與溫度感測器的應用
- 用伺服馬達學習PWM輸出
- 光感測與PWM輸出應用
- 馬達外部電源接法與控制
由於是入門的課程,因此這次的範例都不會很困難,就算是國小的朋友也能學得很好。這次的課堂上有四位國小的學員一起來上課,領會的程度以及學習的進度一點都不輸給大朋友。
在課程的中場休息時間,徐瑞茂老師也跟學員分享他自己利用閒暇之餘,結合積木與開發板,利用Scratch製作的一些程式以及應用。他表示,自己雖然有程式設計多年的經驗,不過對於跨入Maker領域,自己其實資歷並不長。
但是,如果有想法、有創意,透過S4A將程式設計這個部分的難度大大的降低,人人都可以當個Maker,把自己的想法實現出來。
> 從 教學開始 的部分開始版面重疊到,有請文章編輯者再修改下排版或引用、插入的格式
已修正