先說(shuō)觀點(diǎn)阶女,很多人問(wèn)我開(kāi)始學(xué)習(xí)Arduino的時(shí)候颊糜,用什么編碼軟件學(xué)習(xí)哩治?我一般推薦mBlock軟件——雖然我不喜歡MakeBlock的硬件——mBlock這個(gè)軟件還是很好用的。
目前比較流行的Arduino開(kāi)源硬件圖形化編程有mBlock衬鱼、魔爪业筏、咔噠爸爸、Mixly鸟赫、ArduBlock蒜胖、Mind+等軟件,非圖形化的編程軟件一般就是Arduino惯疙、Processing翠勉、Sublime+Arduino插件,甚至是Vim都是可以的霉颠。
但是我一般強(qiáng)烈推薦mBlock——MakeBlock不給我一分錢——因?yàn)閙Block是基于Scratch 2.0開(kāi)發(fā)的对碌,能夠?qū)崿F(xiàn)物理計(jì)算Physical Computing,小學(xué)生現(xiàn)在逐步將熟悉Scratch蒿偎,學(xué)習(xí)Scratch之后再使用mBlock來(lái)對(duì)Arduino編程朽们,銜接非常緊密,最重要的是mBlock可以實(shí)現(xiàn)傳感器與舞臺(tái)的互動(dòng)——其實(shí)就是上位機(jī)程序——可以實(shí)現(xiàn)更多創(chuàng)意诉位,而這時(shí)Mixly骑脱、ArduBlock等不具備的。
開(kāi)源硬件編程軟件的分類
從編程的形式上分:
- 純粹的文本編程軟件苍糠,比如Arduino叁丧、Processing等,純粹使用c語(yǔ)言進(jìn)行編程岳瞭,對(duì)于初高中生拥娄,有編程基礎(chǔ)的人來(lái)說(shuō)開(kāi)發(fā)效率高,編程速度快
- 圖形化的編程軟件瞳筏,但是不帶舞臺(tái)稚瘾,以Mixly、ArduBlock(我從未見(jiàn)過(guò)如此之丑的軟件)為代表姚炕,實(shí)現(xiàn)了圖形化的開(kāi)源硬件編程摊欠,但是無(wú)法實(shí)現(xiàn)傳感器與舞臺(tái)的互動(dòng),或者說(shuō)無(wú)法實(shí)現(xiàn)類似S4A——上位機(jī)——程序柱宦。
- 類Scratch的圖形化編程軟件些椒,如mBlock、魔爪:mBlock可以看做是Scratch 2.0時(shí)代的S4A掸刊,舉個(gè)簡(jiǎn)單的例子免糕,Scratch里面有當(dāng)角色被單擊、或者某個(gè)鍵被按下的時(shí)候,可以控制硬件的LED燈说墨。這些是指利用在線編程模式,就是先燒錄一個(gè)固件到硬件苍柏,然后實(shí)時(shí)修改代碼塊尼斧,硬件體現(xiàn)變化。
這樣小學(xué)生們就可以有很多豐富的創(chuàng)意熄捍,把軟硬件結(jié)合起來(lái)烛恤,這是我最看重的。
開(kāi)源硬件編程軟件的另外一種分類
根據(jù)上面的分類余耽,開(kāi)源硬件編程軟件其實(shí)就分為兩類:
- 帶舞臺(tái)的缚柏,可以實(shí)現(xiàn)Arduino控制器、傳感器和舞臺(tái)角色的互動(dòng)
- 不帶舞臺(tái)的碟贾,從這個(gè)角度來(lái)說(shuō)币喧,Mixly、ArduBlock和Arduino袱耽、Processing是同一類的軟件
其實(shí)mBlock吧杀餐,對(duì)于開(kāi)源硬件的支持是很有限的,遠(yuǎn)不如Mixly支持的傳感器多朱巨,Mixly支持的廠家和傳感器都多史翘,但是小學(xué)生階段并不需要太復(fù)雜的傳感器,很簡(jiǎn)單的舵機(jī)冀续、電機(jī)琼讽、LED、聲音傳感器沥阳、光敏傳感器等用mBlock提供的Arduino基本編程功能都可以實(shí)現(xiàn)的吠昭,基本上就是讀、寫IO引腳的狀態(tài)韩脏,或者讀取值晌杰。
就像只要順序、判斷功炮、循環(huán)可以實(shí)現(xiàn)復(fù)雜的程序一樣溅潜,Arduino只需要有限的代碼塊,也可以實(shí)現(xiàn)很多開(kāi)源硬件的編程薪伏。
當(dāng)然如果Mixly下一步如果實(shí)現(xiàn)了舞臺(tái)功能滚澜,我肯定會(huì)擁抱Mixly的。
Mixly還有個(gè)問(wèn)題是嫁怀,基于Blockly編程设捐,設(shè)計(jì)思路并不是很接近小學(xué)生借浊,對(duì)于中學(xué)生是沒(méi)有問(wèn)題的,作為中學(xué)生開(kāi)源軟件編程入門萝招,然后轉(zhuǎn)c是可以的蚂斤。
當(dāng)前國(guó)內(nèi)的圖形化編程軟件很多,有的是不開(kāi)源槐沼,免費(fèi)使用的曙蒸,有的是免費(fèi)使用的,雖然都是圖形化編程岗钩,有的是基于Scratch 2.0的纽窟,比如mBlock和魔爪;有的是基于Blockly的兼吓,比如Mixly和AppInventor臂港;還有的是基于Scratch 3.0的,也就是Scratch Blocks周蹭;然后就是有的公司提前開(kāi)始行動(dòng)趋艘,基于Google和MIT媒體實(shí)驗(yàn)室合作的Scratch Blocks開(kāi)發(fā)的軟件;然后目前Google Blockly Games現(xiàn)在也比較流行凶朗;再就是有基于伯克利大學(xué)的Snap來(lái)開(kāi)發(fā)的瓷胧,比如樹(shù)上科技的ScratchPi軟件,跟Scratch非常類似棚愤,比較好用呢搓萧。
在mBlock或者說(shuō)Scratch 2.0的基礎(chǔ)上,很多公司開(kāi)發(fā)定制了自己的軟件宛畦,比如咔噠爸爸——據(jù)說(shuō)是一個(gè)工程師爸爸為兒子開(kāi)發(fā)的——kBlock軟件瘸洛;KittenBot等,包括美科的軟件次和。
這些在Scratch 2.0基礎(chǔ)上開(kāi)發(fā)的軟件反肋,有的是自己重新實(shí)現(xiàn)了固件,比如mBlock自己寫了底層踏施,自己定義了協(xié)議石蔗;
很多別的公司也是在Scratch 2.0基礎(chǔ)上開(kāi)發(fā)了自己的固件,然后實(shí)現(xiàn)了在線編程畅形;甚至還有的公司直接在mBlock基礎(chǔ)上二次開(kāi)發(fā)养距,僅僅是自己組了一些套件,然后根據(jù)Scratch的標(biāo)準(zhǔn)來(lái)寫擴(kuò)展日熬,實(shí)現(xiàn)了自己的代碼包:
而且可以自己設(shè)計(jì)硬件棍厌,然后寫固件硬件,定義自己的接口,每家的硬件無(wú)論是MakeBlock自己家的耘纱,咔噠爸爸敬肚,還是張曉勝老師的桌面試驗(yàn)箱,都是自己定義了固件束析,接口帘皿,自己做了適配
實(shí)際上還有一種方式,就是在瀏覽器里對(duì)Arduino盡心改變成畸陡,需要安裝Scratch官方的插件,作為中介通信虽填;像諾丁科技做的東西是在線云編譯丁恭。
其實(shí)像Mind+、ArduBlock這些開(kāi)源軟件斋日,后來(lái)都不維護(hù)了牲览,是很可惜的,當(dāng)然自己用的也少恶守。
這種