首頁(yè) > 評(píng)測(cè) > 再不學(xué)點(diǎn)Python,咱真老了--Adafruit Metro M0 Express開(kāi)發(fā)板評(píng)測(cè)

再不學(xué)點(diǎn)Python,咱真老了--Adafruit Metro M0 Express開(kāi)發(fā)板評(píng)測(cè)

Python   Adafruit   Metro   M0   Express   開(kāi)發(fā)板   Atmel   ATSAMD21   
  • 作者:SATURN
  • 來(lái)源:21ic
  • [導(dǎo)讀]
  • 這塊板子可以看作是M0的翻版,但是把玩度高很多。首先是硬件參數(shù)提升了,更高的運(yùn)行主頻及更大的存儲(chǔ)空間,完敗Arduino UNO R3!;其次,引入了CircuitPython的新式編程語(yǔ)言,一方面程序代碼更簡(jiǎn)單,另一方面也為那些想要學(xué)習(xí)和了解Python的用戶提供了一個(gè)學(xué)習(xí)的理由;最后一點(diǎn)就是靈活的引導(dǎo)配置模式,使得在二種編程語(yǔ)言(c/c++及Python)之間可以靈活切換!

Mu聰明的地方在于它能將代碼保存到開(kāi)發(fā)板映射到PC的磁盤(pán)上,將文件命名為sum.py并保存。然后看串口中是否有輸出。然而并沒(méi)有,仍然是main.py程序的輸出!

原來(lái),CircuitPython在處理程序的執(zhí)行時(shí),會(huì)遵循一定的規(guī)則。CircuitPython會(huì)在磁盤(pán)上依次查找code.txt, code.py, main.txt及main.py,找到并執(zhí)行第一個(gè)程序。咱們將上述代碼保存為sum.py,根本不是上述文件之列,所以剛創(chuàng)建的文件根本就不會(huì)運(yùn)行!

明白了這一點(diǎn),就好辦了。只需要將sum.py更名為code.py就可以了,試試!

更名后的代碼文件即時(shí)生效了,如下

image10.png

可以看到咱們期望的結(jié)果了。

不止如此,提示還給出了一些有用的信息,比如"Auto-reload is on"這句話告訴我們,代碼文件修改并保存后會(huì)即時(shí)生效,同時(shí)我們也看到了code.py執(zhí)行會(huì)優(yōu)先于main.py。

最后一個(gè)有趣的地方在于,當(dāng)code.py執(zhí)行完畢后,我們可以按任意鍵進(jìn)入REPL環(huán)境,如下

image11.png

確實(shí)很好很強(qiáng)大!

不過(guò)我們前面提到Mu這個(gè)IDE時(shí)也說(shuō)了,Mu本身就提供了一個(gè)REPL環(huán)境,

image12.png

下面這個(gè)窗口就是REPL環(huán)境了,這是個(gè)很有用的窗口,例如我們想看看開(kāi)發(fā)板GPIO接口的命名,可以在REPL里執(zhí)行如下命令

image13.png

熟悉Arduino編程的用戶一定對(duì)A0、A1這些接口耳熟能詳,所以,如果要引用其中一個(gè)接口,按照Python的規(guī)則,應(yīng)該是board.XX,其中XX就是上面列出的名稱(chēng)了。

好,下面開(kāi)始正式點(diǎn)燈,編輯如下代碼

image14.png

很光棍的一段代碼,當(dāng)然也好懂!保存,然后就自動(dòng)運(yùn)行了?吹絃ED燈閃啊閃,串口也有對(duì)應(yīng)的輸出。

然而問(wèn)題來(lái)了,Cpython中的哪些庫(kù)可以用呢?這個(gè)可以參考官方的文檔,參見(jiàn)附錄。上面代碼中用到的一些庫(kù)都在參考資源中列出來(lái)了,花5分鐘熟悉一下!

說(shuō)了半天,CircuitPython是啥?CircuitPython是大名鼎鼎的MicroPython的再移植產(chǎn)品,專(zhuān)門(mén)為Adafruit的部分硬件定制。

除了支持Python,開(kāi)發(fā)板也支持Arduino模式開(kāi)發(fā)。按照Arduino一般的開(kāi)發(fā)模式,首先要下載并安裝對(duì)應(yīng)的板級(jí)庫(kù)文件,Metro M0 Express也不例外,如下

image15.png

確定后,就可以在Arduino的開(kāi)發(fā)板管理器里添加對(duì)應(yīng)的開(kāi)發(fā)板類(lèi)型了。這里碰到一點(diǎn)糟心的事,就是官方的PDF文檔里舉例使用的是另一款開(kāi)發(fā)板,不是針對(duì)Metro M0 Express的,花了很長(zhǎng)時(shí)間安裝后卻發(fā)現(xiàn)找不到Metro M0 Express這一開(kāi)發(fā)板型號(hào),重新在網(wǎng)頁(yè)版里找到了正確的庫(kù)文件后才解決!因?yàn)锳rduino現(xiàn)在支持的開(kāi)發(fā)板種類(lèi)太多,很多開(kāi)發(fā)板的命名也比較相似,結(jié)果往往就是找錯(cuò)了對(duì)象,鬧了笑話,浪費(fèi)了時(shí)間!

下圖是正確安裝了軟件庫(kù)后顯示的板卡名稱(chēng)

image16.png

現(xiàn)在可以打開(kāi)一個(gè)blink程序來(lái)點(diǎn)燈了,編譯并上傳的結(jié)果如下

image17.png

LED燈又開(kāi)始閃爍了。

不過(guò)問(wèn)題又來(lái)了,Python不能用了!

這是正,F(xiàn)象,現(xiàn)在的存儲(chǔ)空間被ARDUINO程序占用了,所以PYTHON當(dāng)然也就不能用了。怎么辦呢,下面是切換回Python的方法。

首先雙擊開(kāi)發(fā)板上的復(fù)位鍵,進(jìn)入bootloader模式,此時(shí)PC端映射的盤(pán)符會(huì)變成METROBOOT,里面有3個(gè)文件,如下

image18.png

從附錄給出的CircuitPython參考里下載一個(gè)擴(kuò)展名為.bin的文件,注意不要下載錯(cuò)了,必須是針對(duì)Metro M0的.bin文件,然后拖動(dòng)到映射的盤(pán)符里,等待大約15秒鐘,奇跡出現(xiàn)了,CircuitPython又出現(xiàn)了。只是此時(shí)的CircuitPython里還沒(méi)有創(chuàng)建可運(yùn)行的Python文件,自己寫(xiě)一個(gè),命名為code.py或main.py,然后丟到映射盤(pán)里,又可以了!

總體來(lái)說(shuō),Metro M0 Express還是很好玩的。首先是硬件參數(shù)提升了,更高的運(yùn)行主頻及更大的存儲(chǔ)空間,完敗Arduino UNO R3!;其次,引入了CircuitPython的新式編程語(yǔ)言,一方面程序代碼更簡(jiǎn)單,另一方面也為那些想要學(xué)習(xí)和了解Python的用戶提供了一個(gè)學(xué)習(xí)的理由;最后一點(diǎn)就是靈活的引導(dǎo)配置模式,使得在二種編程語(yǔ)言(c/c++及Python)之間可以靈活切換!

至于配置過(guò)程中碰到的文檔不一致的問(wèn)題,只能怪筆者看文檔的時(shí)候不夠細(xì)心,不過(guò)如果官方在整理文檔時(shí),針對(duì)性更具體一點(diǎn),也許用戶的體驗(yàn)會(huì)更好一點(diǎn)吧!

附錄:

CircuitPython參考:https://github.com/adafruit/circuitpython

開(kāi)發(fā)板:https://www.adafruit.com/product/3505

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開(kāi)放投稿

熱門(mén)標(biāo)簽
項(xiàng)目外包 more+