Mixly,初學Arduino的最佳圖形化編程工具

Arduino憑藉不斷豐富的擴展性及適用性毫無爭議的成為極客愛好者的首選硬體平台。Arduino越來越火,想學的人也越來越多。但對於初學者,打開官方編程軟體Arduino IDE,看到一行行的文本代碼,一下就頭大了。編程能力跟不上,硬體開發也下不去手啊。

麻省理工在2006年推出的兒童編程軟體Scratch,提出了一個非常好的編程入門解決方案——積木式圖形界面。(Scratch的靈感則來自於樂高積木,詳見:西摩爾·派普特,他的研究啟發了樂高機器人的問世)之後,谷歌推出了Blockly,一套積木式圖形編程JavaScript庫。通過圖形界面的「搭積木」式操作,Blockly可以生成JS、Python、Php代碼。接著Blockly開源庫,你甚至可以為任何計算機程序開發圖形化編程工具。

Mixly是一款基於Blockly的免費開源的圖形化Arduino編程軟體,由北京師範大學教育學部創客教育實驗室傅騫教授團隊開發。同樣為Arduino圖形化編程工具,國內我們常見的還有ArduBlock和S4A(Scratch for Arduino)。前一陣,因為要舉辦一場Arduino入門培訓活動,我們特地將三者做了一下比較。

一條原因就先把S4A從備選工具中排除出去:無法離線運行。Scratch最初軟體設計時,並未考慮與硬體的通信,S4A的出現讓Scratch可以通過串口與Arduino通信,而通信則意味著S4A全程充當的是信息中轉。我們希望給初學者選擇一個功能相對更專業的工具,因此先放棄S4A。

再詳細對比一下Mixly和ArduBlock。

無論從功能的專業性還是豐富性,Mixly都勝出。

我們先看一下Mixly的界面,是典型的「圖形化積木式」編輯界面,整體布局簡潔明快。

左側區域為Blocks分類區;中部為編程區域;最右側圖標分別對應程序居中、程序塊放大、縮小顯示及刪除;底部灰色工具欄為功能菜單;最下方為信息顯示區域。

除了常見的if/else條件語句、for/while、數學運算、埠讀寫、布爾運算等基本程序操作外,Mixly還提供了更專業化的細節功能。

完整類型的變數聲明。

完善的子程序(可返回數據)。

數組/列表支持。

觸發中斷及定時中斷。

串口通訊(支持軟串!)。

脈衝檢測。

扇出。

Arduino廠商眾多,Mixly提供了對Makeblock、DFroboot、Microduino、Seeedstudio等廠商的一系列企業庫擴展。

ArduBlock雖然也提供了非常多的企業庫支持,我們在實際使用中發現Ardublock的產品庫雖數量多,但會存在各家入門套件元件不全或不匹配的情況。對於圖形化編程,若沒有對應的元件block,元件就無法使用。Mixly企業庫雖數量少但各家入門套件中元件完整,非常適合初學者使用。

在一些細節功能上,Mixly還有不少貼心的設計(科技學堂的小夥伴們非常之喜歡)。

下圖是Mixly和ArduBlock的界面和右鍵菜單對比,Mixly的排列方式更適合閱讀,理解更直觀

Mixly支持程序塊向左拖出編程窗、拖拽至垃圾桶、delete鍵及右鍵delete四種刪除方式,Ardublock僅支持第一種。

Mixly有一個非常酷的代碼禁用方式,你可以選擇不需運行的積木塊,右鍵菜單選擇後把它們「凍」起來。這跟程序員老司機使用「注釋」來取消代碼運行一個意思。當你需要對比測試不同思路方法或者一次編寫多個對比程序時,「凍」住不用的代碼很方便。

上圖左邊為正常程序,右為凍結程序。

Mixly還支持程序摺疊。編寫長程序或包含不同子程序模塊的程序時,編寫完成的程序摺疊起來,程序清晰易讀。

經過一系列的對比,我們認為對於初學者,尤其是沒有編程基礎的初學者,Mixly是一款非常易上手,功能強大,支持豐富的編程工具。藉助這樣一款優秀的編程工具,你能夠更快的體驗到做硬體「創客」的樂趣,一邊創造一邊熟悉編程知識。在積累了足夠的經驗之後,你也可以順暢的升級到代碼式編程工具,做更深入高效的硬體編程開發。

往期Arduino系列文章推薦:

1)當樂高遇見Arduino:如何從外部控制樂高組件

2)當樂高遇見Arduino:樂高PM2.5 探測儀

3)當樂高遇見Arduino:樂高喊你吃飯啦~

4)當樂高遇見Arduino:近場紅外控制樂高的實現

5)為了聽聖誕黑膠唱片,我們DIY了一架唱片機

文章首發:微信公眾號「科技學堂」

科技學堂官網: http://www.sciclass.cn

科技學堂由中國科協支持,為科技教師、科技教育從業者提供互聯網學習資源


推薦閱讀:

【圖形化學習 Arduino】(三)串口通信
【圖形化學習 Arduino】(五)串口調試四神器
電氣小混混的環境盒子——持續更新
當樂高遇見Arduino:樂高喊你吃飯啦~
Arduino可通過哪些方式把數據發送到互聯網

TAG:Arduino | 编程 | 硬件 |