0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

做為IT人的你 趁年輕學(xué)點(diǎn)Python吧

h1654155971.7688 ? 來(lái)源:未知 ? 作者:伍文輝 ? 2018-05-06 09:03 ? 次閱讀

曾幾何時(shí),流行過(guò)這么一句話:再不瘋狂我們就老了!這是青春的再召喚,還是獻(xiàn)給青春的挽歌,個(gè)中滋味,也許只有內(nèi)心自知!

AI蓬勃發(fā)展的今天,IT巨頭都在悄悄布局,做為IT人的你,是否也準(zhǔn)備好了?雖說(shuō)Python不是進(jìn)入AI領(lǐng)域的最佳編程語(yǔ)言,但毫無(wú)疑問(wèn),Python是進(jìn)入其中并探索AI奧秘非常流行的編程語(yǔ)言。所以,趁著還年青,無(wú)論是心理還是身理,亦或是職業(yè)生涯的青春期,學(xué)點(diǎn)Python吧!

Adafruit推出的Metro M0 Express開(kāi)發(fā)板,集MCU開(kāi)發(fā)與Python一體,確實(shí)是入門(mén)Python的極佳開(kāi)發(fā)板。純Python學(xué)習(xí),不免枯燥,如果還能在開(kāi)發(fā)板上點(diǎn)個(gè)燈,是不是會(huì)更好一點(diǎn)!(話外音:還是枯燥!)

除了Python,還可以使用Arduino來(lái)開(kāi)發(fā)、測(cè)試,也算是一專(zhuān)多能了。

先看板,再點(diǎn)燈,此乃學(xué)習(xí)電子的不二法門(mén)(個(gè)人經(jīng)驗(yàn),切勿模仿)。

初看,這貨不是Arduino板么?其實(shí)不是滴,雖具其形,但內(nèi)心更強(qiáng)大。Metro M0 Express擁有一顆 ATSAMD21G18芯,相比ATmeg328來(lái)說(shuō),在主頻及存儲(chǔ)方面都有極大的提升。引腳全面兼容Arduino UNO。

供電方面,新增了7V~9V DC供電接口,DC Jack規(guī)格為5.5/2.1mm,極性內(nèi)正外負(fù),旁邊還有一個(gè)物理開(kāi)關(guān),手動(dòng)打開(kāi)或關(guān)斷電源。

與Arduino不同的是,GPIO接口不再使用過(guò)孔,而是使用貼片式,開(kāi)發(fā)板背面整體一塊,配合Metro Express的大大Logo,更顯大氣。

硬件配置方面,MCU型號(hào)為ADSAMD21G18,最高運(yùn)行主頻為48MHz,3.3V工作電壓。存儲(chǔ)組合則為256KB的Flash存儲(chǔ)加32KB的SRAM;另外還板載了一片4MB的SPI存儲(chǔ),進(jìn)一步擴(kuò)充了存儲(chǔ)需求。 Metro Express的主要特性如下:

? ATSAMD21G18核心,最高運(yùn)行主頻為48MHz

? 256KB/32KB的存儲(chǔ)組合

? 2MB SPI Flash存儲(chǔ)擴(kuò)展

? 32.768KHz晶振

? 3.3V電壓調(diào)節(jié)器,最大支持500mA電流

? 原生USB支持,不再需要FTDI轉(zhuǎn)串口支持

? 硬件串口/I2C/SPI支持

? PWM輸出

? 25個(gè)GPIO,工作電壓為3.3V

? SWD調(diào)試接口

? 電源開(kāi)關(guān)

值得指出的是,25個(gè)GPIO可除了可以復(fù)用做數(shù)字/模擬引腳外,其中還包括了一個(gè)真正的模塊輸出引腳A0。另外原生的USB支持,免去了類(lèi)似FTDI之類(lèi)的轉(zhuǎn)換芯片,USB接口除了可以充當(dāng)串口通訊設(shè)備外,還可以連接鍵盤(pán)、鼠標(biāo)及MIDI設(shè)備。

另外在開(kāi)發(fā)板上也集成了一個(gè)SWD調(diào)試接口,只是不知道在Arduino環(huán)境里如何使用它?

先不管這些了!上個(gè)電看看。

使用MicroUSB轉(zhuǎn)換線連接開(kāi)發(fā)板的USB口與PC連接,測(cè)試用的PC上安裝的是Windows 10系統(tǒng)。當(dāng)開(kāi)發(fā)板與PC連接后,通過(guò)USB給開(kāi)發(fā)板供電。上電后開(kāi)發(fā)板的三色LED燈循環(huán)變換顯示顏色,另外指示串口通信的TX指示燈開(kāi)始閃爍。

Windows 10自動(dòng)檢測(cè)到串口設(shè)備并安裝了正確的驅(qū)動(dòng)程序,如下

另外PC上會(huì)多出一個(gè)大容量存儲(chǔ)磁盤(pán),其中包含了PYTHON啟動(dòng)代碼及相關(guān)的資源,如下

其中main.py里面包含了相關(guān)的功能代碼。在串口的輸出如下

這個(gè)默認(rèn)的程序有點(diǎn)復(fù)雜,對(duì)于初學(xué)者來(lái)說(shuō),咱們來(lái)嘗試寫(xiě)個(gè)簡(jiǎn)單的點(diǎn)燈程序,也算是第一個(gè)hello world程序。

我們知道在PC上寫(xiě)Python程序,有很多的IDE可供選擇。那么在為MCU寫(xiě)代碼時(shí),有什么好的IDE可供選擇呢?Adafruit官方推薦使用Mu來(lái)作為Metro M0 Express的IDE。從官網(wǎng)下載并安裝Mu程序,啟動(dòng)后畫(huà)面如下

界面比較樸素,沒(méi)有什么噱頭!不過(guò)這個(gè)IDE提供了一個(gè)REPL控制臺(tái),這是個(gè)很實(shí)用的程序。當(dāng)然你也許會(huì)想,用VSCode行不?用Spyder行不?當(dāng)然也行,不過(guò)我們知道Python程序都提供了一個(gè)REPL環(huán)境供用戶獲取幫助或?qū)嶒?yàn)簡(jiǎn)單的代碼,這個(gè)時(shí)候這些IDE就沒(méi)有用了,因?yàn)檫@些IDE都是基于PC端的Python解釋器!

先寫(xiě)一段簡(jiǎn)單的Python代碼,與MCU無(wú)關(guān),純粹是驗(yàn)證Python解釋器。

代碼如下

import time

s = 0

for i in range(10):

print(i)

time.sleep(1)

print('s = {}'.format(s))

將代碼保存為sum.py,如下

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í)生效了,如下

可以看到咱們期望的結(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)境,如下

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

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

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

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

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

很光棍的一段代碼,當(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也不例外,如下

確定后,就可以在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)

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

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

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

這是正常現(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è)文件,如下

從附錄給出的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)吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    28877

    瀏覽量

    266236
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84080
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185927

原文標(biāo)題:再不學(xué)點(diǎn)Python,咱真老了

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    周立功寫(xiě)給學(xué)單片機(jī)的年輕人 經(jīng)典勵(lì)志

    周立功寫(xiě)給學(xué)單片機(jī)的年輕人經(jīng)典勵(lì)志
    發(fā)表于 08-11 18:39

    怎么學(xué)點(diǎn)

    怎么學(xué)點(diǎn)陣PCB打樣找華強(qiáng) http://www.hqpcb.com/3 樣板2天出貨
    發(fā)表于 10-22 20:08

    年輕人該怎么正確應(yīng)對(duì)高血壓

    ,含鹽或鈉的調(diào)味料,罐頭、腌制品、蛋黃、動(dòng)物內(nèi)臟、動(dòng)物性脂肪要避免攝食??啥鄶z取多元不飽和脂肪酸,如新鮮魚(yú)肉,對(duì)血壓控制及日后冠狀動(dòng)脈粥狀硬化有幫助。  年輕人該怎么正確應(yīng)對(duì)高血壓,做為年輕人來(lái)說(shuō)
    發(fā)表于 04-01 16:25

    年輕人的困惑

    的發(fā)展方向也非常地迷茫。他們甚至不知道自己究竟適合什么行業(yè),能做什么?他們應(yīng)該選擇跳槽、轉(zhuǎn)行?還是去考研充電呢?面對(duì)種種困惑?作為年輕人又該有怎樣的選擇呢?作為IT愛(ài)好者來(lái)說(shuō),單片機(jī)嵌入式開(kāi)發(fā)工作
    發(fā)表于 11-11 16:36

    放下的浮躁心

    種種困惑?作為年輕人又該有怎樣的選擇呢?作為IT愛(ài)好者來(lái)說(shuō),單片機(jī)嵌入式開(kāi)發(fā)工作是一個(gè)不錯(cuò)的選擇。發(fā)燒友專(zhuān)業(yè)單片機(jī)嵌入式培訓(xùn)技術(shù)解決的職場(chǎng)困惑,深圳單片機(jī)培訓(xùn),西鄉(xiāng)單片機(jī)嵌入式培訓(xùn),技術(shù)咨詢qq2116084661
    發(fā)表于 06-03 15:51

    Python 之父 退出Python 核心決策層,而轉(zhuǎn)居幕后

    歲了,那創(chuàng)始退出我想也有身體的原因!畢竟不是誰(shuí)都想“活到老,干到老”的。還是 Linus 好,鎮(zhèn)得住,不服就噴服!遲早都會(huì)發(fā)生的。如同佛陀涅磐的時(shí)候,弟子問(wèn)他以后如何修行,佛陀答:以戒為師?;蛟S
    發(fā)表于 07-14 17:45

    年輕人,以后讓AI給你升職加薪

    進(jìn)行提問(wèn)和打分,有時(shí)候會(huì)讓覺(jué)得Ta沒(méi)能完全看出深藏于靈魂的才華。但是,如果有一天對(duì)面坐的不再是一個(gè)“”,那么這樣的面試,能想象嗎?
    發(fā)表于 08-28 09:16

    機(jī)器Python仿真軟件介紹

    相關(guān)知識(shí)機(jī)器Python仿真軟件介紹軟件安裝使用Python的第一步現(xiàn)在,我們將嘗試使該機(jī)器移動(dòng)。 有關(guān)的RoBIOS命令是int VWSetSpeed(int linSpeed,
    發(fā)表于 12-20 07:53

    榮耀10全新上市,一起來(lái)看看它對(duì)“年輕人”的理解

    和30年的手機(jī)發(fā)展歷程相比,「榮耀」這個(gè)名字顯的年輕奔放,卻不稚嫩青澀。而榮耀的定位也很契合它的標(biāo)簽——向年輕人輸出優(yōu)質(zhì)的產(chǎn)品和文化。
    的頭像 發(fā)表于 05-07 16:12 ?5473次閱讀

    淺談Python語(yǔ)言

    python是目前市面上,我個(gè)人認(rèn)為是最簡(jiǎn)潔&&最優(yōu)雅&&最有錢(qián)途&&最全能的編程語(yǔ)言,沒(méi)有之一。所以既然決定了要學(xué)習(xí)python,那么就需要先下一個(gè)決心,至少?zèng)Q定要做為自己的主力語(yǔ)
    發(fā)表于 10-09 09:45 ?1561次閱讀

    馬云、雷軍、李彥宏等大佬告訴年輕人是否要買(mǎi)房

    眼下對(duì)于年輕人來(lái)說(shuō),最大的負(fù)擔(dān)可能就是買(mǎi)房了,而且市場(chǎng)環(huán)境在倒逼著年輕人盡早去考慮房子這樣的大事,但是對(duì)于不少年輕人來(lái)說(shuō),想要擁有自己的一套房子,傾盡一家之力或許都不一定能搞定,所以年輕人
    發(fā)表于 11-28 15:29 ?2076次閱讀

    小米CC9評(píng)測(cè) 契合年輕人需求的全功能拍照旗艦

    的相關(guān)產(chǎn)品也往往被冠以“年輕人的第一個(gè)**”,但是,小米手機(jī)真的了解年輕人的審美和喜好嗎?年輕人需要的只是高性價(jià)比嗎?
    的頭像 發(fā)表于 07-10 10:29 ?4352次閱讀

    Python寫(xiě)機(jī)器上位機(jī)

    Python寫(xiě)GUI的插件比較多,常用的有Tkinter、pyqt5,本將使用pyqt5寫(xiě)機(jī)器的上位機(jī)。Tkinter 是 Python的標(biāo)準(zhǔn) GUI 庫(kù),是Python推薦使用的界
    發(fā)表于 05-09 11:10 ?0次下載
    <b class='flag-5'>Python</b>寫(xiě)機(jī)器<b class='flag-5'>人</b>上位機(jī)

    轟趴館要如何搞定這屆年輕人?

    年輕人在追求什么?”隨著00后與90后逐漸成為當(dāng)前的消費(fèi)主力,這個(gè)問(wèn)題的答案變得愈加重要。作為消費(fèi)主力,年輕人可能不再關(guān)注消費(fèi)所具備的社會(huì)價(jià)值和附加價(jià)值。被消費(fèi)主義洗腦的人其實(shí)只是少數(shù),更多
    的頭像 發(fā)表于 02-28 14:23 ?515次閱讀
    轟趴館要如何搞定這屆<b class='flag-5'>年輕人</b>?

    詳解pcb光學(xué)點(diǎn)是什么

    詳解pcb光學(xué)點(diǎn)是什么
    的頭像 發(fā)表于 10-12 10:36 ?1366次閱讀