回顧上兩期創(chuàng)客利器版塊,我們主要介紹了電子類和機械類的工具。本文主要講解一些常見的創(chuàng)客必備入門軟件類工具,從基于文本編程的Arduino IDE、Processing 3到電子繪圖Fritzing,再到積木式圖形化編程的Scratch 2.0、S4A、Ardublock、App Inventor 2,三維建模AUTODESK 123D Design、SolidWorks和3DS MAX,最后到常用單片機與機器人調(diào)試軟件,筆者將帶領(lǐng)大家一同學(xué)習(xí)每款軟件操作技法。
......
Arduino IDE
Arduino IDE(集成開發(fā)環(huán)境)是針對Arduino硬件進(jìn)行編程的工具。什么是Arduino?可以問度娘,這里不做過多介紹。Arduino不僅在硬件上使用USB上傳程序,而且在軟件中提供了豐富的庫加以支持,這使得Arduino的門檻非常低,因此使用它進(jìn)行創(chuàng)作的人也越來越多。Arduino IDE使用C/C++語法,并將程序抽象為setup和loop兩個部分:程序一開始執(zhí)行且僅執(zhí)行一次setup函數(shù),它通常負(fù)責(zé)初始化操作,隨后程序不斷地執(zhí)行l(wèi)oop函數(shù)。
此外Arduino IDE還把輸入輸出封裝為函數(shù),屏蔽了底層寄存器的修改,如pinMode、digitalRead、digitalWrite、analogRead、digitalWrite等,同時還提供了Serial、SPI.h、Wire.h(即I2C)等通訊協(xié)議的庫函數(shù)。我們只需要很簡單的三行代碼就能實現(xiàn)LED一閃一滅的效果:
Arduino IDE還提供了豐富的示例供初學(xué)者參考(文件菜單中的示例選項)。如果有興趣你還可以嘗試http://arduino.org/中最新的編程軟件Arduino Studio。
Processing
Processing是一種具有革命前瞻性的新興計算機語言,它的概念是在電子藝術(shù)的環(huán)境下介紹程序語言,并將電子藝術(shù)的概念介紹給程序設(shè)計師。它使用Java語言進(jìn)行開發(fā),是Arduino IDE的前身。其官方網(wǎng)站中提供了大量的類庫,涉及串行通信、網(wǎng)絡(luò)、視頻與可視化、聲音、GUI、3D、動畫等各個方面。下圖是Processing 3.0中Topics/Drawing/Pattern的示例程序,除去注釋只需要12行代碼,就實現(xiàn)了跟隨鼠標(biāo)繪制正圓,并隨著鼠標(biāo)移動速度改變大小的效果:
隨著JavaScript、Python以及Ruby的流行,Processing也逐漸支持這三種編程語言,即p5.js、Processing.py以及ruby-processing。這使得它已不僅僅是一門編程語言,而更像是一門面相藝術(shù)學(xué)習(xí)方式,使得我們可以通過編程學(xué)習(xí)、教學(xué),甚至制作互動裝置。下圖頁面的動態(tài)3D方格背景(http://p5js.org/,使用p5.js制作)可以隨著鼠標(biāo)移動而變化:
此外,由于Processing可以使用串行通信,因此它也可以和Arduino通過串口通信。因為Arduino自帶的串口監(jiān)視器比較簡單,僅支持文本輸入輸出,因此我們可以將Processing與Arduino結(jié)合,使Arduino程序更加具有交互藝術(shù)性。
Fritzing
Fritzing將電子產(chǎn)品作為每一個人的創(chuàng)意素材。它同樣是開源軟件,讓每個人記錄其產(chǎn)品原型并與他人分享。Fritzing也常作為課堂上學(xué)習(xí)電子學(xué)的工具,甚至還可以制作PCB。下圖是一個簡單的使用案例:
AUTODESK 123D CIRCUITS
Autodesk的123D Circuits也是一個不錯的工具,除了與大家分享自己的作品、定制PCB之外,其Electronics Lab還可以進(jìn)行一些模擬仿真:
Scratch 2.0
目前Scratch是由麻省理工學(xué)院(MIT)媒體實驗室所開發(fā)的一款面向青少年的圖形化簡易編程軟件。使用者只需將色彩豐富的指令方塊組合,便可創(chuàng)作出多媒體程序、互動游戲、動畫故事等作品。最常用的版本有1.4(已經(jīng)停止更新)和2.0。Scratch將一百多塊積木分為十大類,通過積木的組合我們就能實現(xiàn)出各種效果。下圖程序腳本詢問了用戶出生年份,然后展示計算結(jié)果:
Scratch適合各個年齡階段的人群學(xué)習(xí)編程,國內(nèi)已有許多小學(xué)和中學(xué)開始教授Scratch。它可以實現(xiàn)計算機科學(xué)中的許多概念,例如遞歸、字符串操作、查找、排序等。下面展示的案例出自于《動手玩轉(zhuǎn)Scratch 2.0編程》:
Scratch不僅可以制作純軟件項目,也支持與硬件的互動。官方標(biāo)準(zhǔn)Scratch支持PicoBoard和LEGO WeDo,但是這遠(yuǎn)遠(yuǎn)不能滿足廣大愛好者的需求。由于Scratch是開源軟件,因此越來越多的機器人廠家和創(chuàng)客空間修改出更具特色的版本。與Scratch同類型的軟件還有Snap!(也稱為BYOB),它的編程功能更加強大,如支持局部變量、獲取HTTP數(shù)據(jù)、字符串解析、執(zhí)行JavaScript腳本等。
Scratch還有一個適合于更小的孩子(5-7歲)學(xué)習(xí)編程的版本ScratchJr,有安卓和IOS兩個版本。它能讓孩子們創(chuàng)作交互式故事和游戲,通過積木的簡單卡合就能實現(xiàn)角色的跑動、跳躍、跳舞和唱歌等效果。下圖是ScratchJr的程序截圖: