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

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

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

怎樣使用MicroPython在樹莓派Pico上進(jìn)行編程呢?

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-08-17 09:39 ? 次閱讀

Python 編程語言是為臺(tái)式機(jī)、筆記本電腦和服務(wù)器等計(jì)算機(jī)系統(tǒng)開發(fā)的。像 Raspberry Pi Pico 這樣的微控制器板更小、更簡(jiǎn)單、內(nèi)存也更小,這意味著它們不能運(yùn)行與大型 Python 語言相同的 Python 語言。這就是 MicroPython 誕生的意義。

MicroPython 最初由 Damien George 開發(fā),于 2014 年首次發(fā)布,是一種專門為微控制器開發(fā)的 Python 兼容編程語言。它包含了許多主流 Python 的特性,同時(shí)添加了一系列新的特性,旨在利用 Raspberry Pi Pico 和其他微控制器板上燈可用的設(shè)備。如果你以前與 Python 編程過,你會(huì)立即發(fā)現(xiàn) MicroPython 很熟悉。如果沒有,不要擔(dān)心,這是一個(gè)學(xué)習(xí)起來很容易的語言!

Thonny Python IDE 介紹

53399d7a-3c4d-11ee-ac96-dac502259ad0.jpg

A 工具欄 – 工具欄提供基于圖標(biāo)的快速訪問系統(tǒng),用于常用的程序功能,如保存、加載和運(yùn)行程序。

B 腳本區(qū)域 – 腳本區(qū)域是編寫 Python 程序的位置。它被分割成你的程序的主要區(qū)域和 顯示行數(shù)的少量側(cè)邊距。

C Python 控制臺(tái) – Python 控制臺(tái)允許你鍵入單個(gè)指令,當(dāng)你按下回車鍵時(shí),這些指令就會(huì)運(yùn)行,并提供有關(guān)運(yùn)行程序的信息。這也稱為 REPL,用于「讀取、評(píng)估、打印和循環(huán)」。

D 解釋器 – Thonny 窗口的右下角顯示并允許你更改當(dāng)前的 Python 解釋器——用于運(yùn)行你的程序的 Python 版本。

Thonny 連接到 Pico

在開始用 MicroPython 編程之前,需要設(shè)置所謂的集成開發(fā)環(huán)境(IDE)。Thonny,一個(gè)流行的 Python 和 MicroPython IDE,已經(jīng)預(yù)裝在 Raspberry Pi OS 上。如果你在另一個(gè) Linux 發(fā)行 版、Windows 或 macOS 上使用Pico,請(qǐng)打開 Web 瀏覽器,訪問 thonny.org,并單擊頁面頂部的下載鏈接,下載用于你的操作系統(tǒng)的 Thonny 和 Python 包安裝程序。

作為一個(gè)集成的開發(fā)環(huán)境,Thonny 將你需要編寫或開發(fā)的所有不同工具聚集在一起或集成到單個(gè)用戶界面或環(huán)境中。有許多不同的 IDE——有些允許你使用多種不同的編程語言進(jìn)行開發(fā),而另一些則像 Thonny 一樣專注于單一語言。

當(dāng)你的 Pico 已經(jīng)連接到樹莓派時(shí),點(diǎn)擊 Thonny 窗口的右下角,上圖區(qū)域 D。這里顯示了你當(dāng)前的解釋器,它負(fù)責(zé)接受你輸入的指令,并將它們轉(zhuǎn)換成計(jì)算機(jī)或微控制器可以理解和運(yùn)行的代碼。通常解釋器是在 Raspberry Pi 上運(yùn)行的 Python 的副本,但是為了在你的 Pico 上運(yùn)行你的程序,需要對(duì)它進(jìn)行修改。

在顯示的列表中,查找「MicroPython(Raspberry Pi Pico)」,然后單擊它。如果你在列表中看不到它,請(qǐng)仔細(xì)檢查你的 Pico 是否正確插入 microUSB 數(shù)據(jù)線,以及 micro USB 數(shù)據(jù)線是否正確插入到樹莓派或計(jì)算機(jī)。

535da486-3c4d-11ee-ac96-dac502259ad0.jpg

看看 Thonny 窗口底部的 Python 控制臺(tái): 你會(huì)看到它現(xiàn)在輸出顯示「MicroPython」,并告訴你,它正在運(yùn)行在「Raspberry Pi Pico」。恭喜你,你已準(zhǔn)備好了編程環(huán)境。

第一個(gè) MicroPython 程序:Hello, World!

開始編寫第一個(gè)程序時(shí),請(qǐng)單擊 Thonny 窗口底部的 Python Shell 區(qū)域,只需在底部「>>>」提示符的右側(cè),輸入以下指令之后回車。

print("Hello, World!")

53663740-3c4d-11ee-ac96-dac502259ad0.jpg

你會(huì)看到你的程序立即開始運(yùn)行:Python 將在相同的 Shell 區(qū)域響應(yīng),并打印出「Hello, World!」,這是因?yàn)?Shell 與運(yùn)行在你的 Pico 上的 MicroPython 解釋器直接相連,后者的工作是查看你的指令并解釋它們的含義。這就是所謂的互動(dòng)模式,你可以把它想象成與某人面對(duì)面的對(duì)話:你剛說完話,對(duì)方就會(huì)做出回應(yīng),然后等著你接下來說什么。

使用 Shell 為 Pico 編程有點(diǎn)像電話對(duì)話:當(dāng)你按下回車鍵時(shí),你的指令將通過 microUSB 線發(fā)送到運(yùn)行在 Pico 上的 MicroPython 解釋器;解釋器查看你的指令并執(zhí)行,然后通過 microUSB 線把執(zhí)行結(jié)果發(fā)送回給 Thonny。

不過,你不必通過 Shell 在交互模式下編程。點(diǎn)擊 Thonny 窗口中間的腳本區(qū)域,然后再次輸入你的程序:

print("Hello, World!")

當(dāng)你這次按下回車鍵時(shí),除了在腳本區(qū)域中獲得新的空白行外,什么都沒發(fā)生。要使此版本的程序工作,你必須單擊 Thonny 工具欄中的「運(yùn)行」圖標(biāo),或單擊「運(yùn)行」菜單,然后單擊「運(yùn)行當(dāng)前腳本」。

你會(huì)被詢問是否要保存程序到這臺(tái)電腦,即 Raspberry Pi,或「MicroPython device」,即 Pico。單擊「MicroPython device」,然后鍵入一個(gè)文件名,如 Hello_World.py,然后單擊 OK 按鈕。

5390ea4e-3c4d-11ee-ac96-dac502259ad0.jpg

一旦你的程序保存好,它就會(huì)自動(dòng)在你的 Pico 上運(yùn)行。你會(huì)看到兩條消息出現(xiàn)在 Shell 區(qū) 域的底部的 Thonny 窗口:

>>> %Run -c $EDITOR_CONTENT
Hello, World!

其中第一行是 Thonny 的指示,告訴 Pico 上的 MicroPython 翻譯運(yùn)行腳本區(qū)域的內(nèi)容:「EDITOR_CONTENT」。第二個(gè)是程序的輸出——你讓 MicroPython 打印的信息。恭喜你!現(xiàn)在你 已經(jīng)以交互模式和腳本模式寫了兩個(gè) MicroPython 程序,并成功地在你的 Pico 上運(yùn)行了它們!

還有一件事需要解決,就是重新加載你的程序。按窗口右上角的「X」鍵關(guān)閉 Thonny,然后再次加載它。這次不是編寫一個(gè)新程序,而是點(diǎn)擊 Thonny 工具欄中的「Open」圖標(biāo)。

就像當(dāng)你保存你 的程序時(shí),你會(huì)被詢問是否要保存到「This computer」或你的「MicroPython device」。點(diǎn)擊「MicroPython device」,你會(huì)看到你已經(jīng)保存到你的 Pico 的所有程序的列表。

在列表中查找 Hello_World.py,單擊選擇它,然后單擊OK。你的程序?qū)⒓虞d到 Thonny,準(zhǔn)備好被編輯或你再次運(yùn)行它。

循環(huán)和代碼縮進(jìn)

與標(biāo)準(zhǔn) Python 程序一樣,MicroPython 程序通常從上到下運(yùn)行。它依次運(yùn)行每一行,在進(jìn)入下一 行之前通過解釋器運(yùn)行它,就像你在 Shell 中逐行輸入它們一樣。

但是,僅僅逐行運(yùn)行指令列表的程序并不是很聰明——因此,MicroPython 就像 Python 一樣,有自己的方法來控制程序運(yùn)行的順序,即縮進(jìn)。

通過單擊 Thonny 工具欄中的新圖標(biāo)創(chuàng)建一個(gè)新程序。你不會(huì)失去現(xiàn)有的程序,相反,Thonny 將在腳本上方的區(qū)域創(chuàng)建一個(gè)新的標(biāo)簽。輸入以下兩行開始你的程序:

print("Loop starting!")
for i in range(10):

第一行向 Shell 輸出一條簡(jiǎn)單的消息,就像你的 Hello World 程序一樣。第二行開始一個(gè)定義的循環(huán),它將重復(fù)-循環(huán)-一個(gè)或多個(gè)指令的一組次數(shù)。一個(gè)變量i被賦值給循環(huán),并給出一系列數(shù)字。range 指令從數(shù)字 0 開始計(jì)次,但永遠(yuǎn)不會(huì)到達(dá)數(shù)字 10。冒號(hào)告訴 MicroPython 循環(huán)本身從下一行開始。

變量是強(qiáng)大的工具。顧名思義,變量是可以改變的值,或在程序的控制下隨時(shí)間變化。最簡(jiǎn)單 的說,一個(gè)變量有兩個(gè)方面——它的名稱和它所存儲(chǔ)的數(shù)據(jù)。在循環(huán)的情況下,變量的名字是「i」,其數(shù)據(jù)由 range 指令設(shè)置——從 0 開始,每次循環(huán)結(jié)束并重新開始時(shí)增加 1。

為了在循環(huán)中真正包含一行代碼,它必須縮進(jìn)——從腳本區(qū)域的左側(cè)移動(dòng)進(jìn)來。下一行以四個(gè) 空格開始,當(dāng)你按下第二行回車后,Thonny 將自動(dòng)添加這些空格?,F(xiàn)在輸入:

print("Loop number", i)

與程序中的其他行相比,這四個(gè)空格將這行推入內(nèi)部??s進(jìn)是 MicroPython 區(qū)分循環(huán)外部指令 和循環(huán)內(nèi)部指令的方式:縮進(jìn)的代碼構(gòu)成了循環(huán)內(nèi)部,被稱為嵌套代碼。

你將注意到,當(dāng)你在第三行末尾按下回車時(shí),Thonny 會(huì)自動(dòng)縮進(jìn)下一行——假設(shè)它是循 環(huán)的一部分。要?jiǎng)h除這個(gè)縮進(jìn),只需在輸入第四行之前按下退格鍵一次:

print("Loop finished!")

你的四行程序現(xiàn)在已經(jīng)完成。第一行位于循環(huán)之外,并且只運(yùn)行一次;第二行設(shè)置循環(huán);第三個(gè)循
環(huán)位于循環(huán)內(nèi)部,每次循環(huán)運(yùn)行一次;第四行還是在循環(huán)外面。

print("Loop starting!")
for i in range(10):
print("Loop number", i)
print("Loop finished!")

單擊 Run(運(yùn)行)圖標(biāo),選擇通過點(diǎn)擊「MicroPython device」選擇將程序保存在 Pico 上,并將其命名為 Indentation.py。該程序?qū)⒃诒4婧罅⒓催\(yùn)行,查看 Shell 區(qū)域的輸出。

Loop starting!
Loop number 0
Loop number 1
Loop number 2
Loop number 3
Loop number 4
Loop number 5
Loop number 6
Loop number 7
Loop number 8
Loop number 9
Loop finished!

53a6b928-3c4d-11ee-ac96-dac502259ad0.jpg

縮進(jìn)是 MicroPython 的一個(gè)強(qiáng)大部分,也是程序不能按預(yù)期工作的最常見原因之一。當(dāng)尋找程 序中的問題時(shí),一個(gè)稱為調(diào)試的過程,總是反復(fù)檢查縮進(jìn),特別是當(dāng)你開始在循環(huán)中嵌套循環(huán) 時(shí)。

MicroPython 還支持無限循環(huán),它可以無限循環(huán)。要將程序從確定循環(huán)變?yōu)闊o限循環(huán),請(qǐng)編輯 第 2 行:

while True:

如果你現(xiàn)在單擊 Run 圖標(biāo),你將得到一個(gè)錯(cuò)誤:名稱「i」沒有定義。這是因?yàn)槟阋呀?jīng)刪除了為
變量「i」創(chuàng)建并賦值的行。要修復(fù)這個(gè)問題,只需編輯第 3 行,這樣它就不再使用變量了:

print("Loop running!")

再次點(diǎn)擊 Run 圖標(biāo),如果你動(dòng)作快,你會(huì)看到「Loop starting! 」消息后面跟著一串永無休止的「Loop running!」消息?!窵oop finished!」消息將永遠(yuǎn)不會(huì)打印,因?yàn)檠h(huán)沒有結(jié)束。每次 Python 打印完「Loop running!」消息時(shí),它返回到循環(huán)的開始處并再次輸出。

53b54588-3c4d-11ee-ac96-dac502259ad0.jpg

點(diǎn)擊 Thonny 工具欄上的 Stop 圖標(biāo),告訴程序停止正在做的事情,即中斷程序并重新啟動(dòng) MicroPython 解釋器。你將看到 Shell 區(qū)域中出現(xiàn)一條消息,程序?qū)⑼V?,而不?huì)到達(dá)第 4 行。

條件和變量

和所有編程語言一樣,MicroPython 中的變量的存在不僅僅是為了控制循環(huán)。點(diǎn)擊 Thonny 工具欄上的 New 圖標(biāo)啟動(dòng)新程序,然后在腳本區(qū)域輸入以下內(nèi)容:

user_name = input ("What is your name? ")

點(diǎn)擊 Run 圖標(biāo),通過點(diǎn)擊「MicroPython device」選擇將程序保存在 Pico 上,并將其命名為 Name_Test.py,并觀察 Shell 區(qū)域中發(fā)生了什么:將詢問你的姓名。在 Shell 區(qū)域中輸入你的名字,然后回車。因?yàn)檫@是你的程序中唯一的指令,其他的都不會(huì)發(fā)生。

如果想要對(duì)放入變量中的數(shù)據(jù)進(jìn)行實(shí)際操作,則需要在程序中增加更多行。

53e1fbb4-3c4d-11ee-ac96-dac502259ad0.jpg

為了讓你的程序用這個(gè)名字做一些有用的事情,從第 2 行開始輸入一個(gè)條件語句:

if user_name == "Clark Kent":
print("You are Superman!")
else:
print("You are not Superman!")

記住,當(dāng)Thonny看到你的代碼需要縮進(jìn)時(shí),它會(huì)自動(dòng)這么做——但它不知道什么時(shí)候你的代碼 需要停止縮進(jìn),所以你必須自己刪除空格。

單擊 Run 圖標(biāo)并在 Shell 區(qū)域中鍵入你的名字。除非你的名字恰好是「Clark Kent」,否則你會(huì)看到「You are Superman!」再次點(diǎn)擊 Run,這次輸入 Clark Kent 的名字,確保寫的和程序中完全一樣,用大寫的 C 和 K。這次,程序承認(rèn)你實(shí)際上是超人。

5415c0d4-3c4d-11ee-ac96-dac502259ad0.jpg

「==」符號(hào)告訴 Python 進(jìn)行直接比較,查看變量 user_name 是否與程序中的文本(即字符串)匹配。

如果你處理的是數(shù)字,你還可以進(jìn)行其他的比較「>」查看一個(gè)數(shù)字是否大于另一個(gè)數(shù)字,「<」查看它是否小于,「>=」查看它是否大于或等于,「<=」查看它是否小于或等于。還有「!=」,意思是不等于,是「==」的反義詞。這些符號(hào)在技術(shù)上稱為比較運(yùn)算符。

注意:使用變量的關(guān)鍵是了解「=」,與「==」兩者的區(qū)別。記住,「=」的意思是「使這個(gè)變量等于這個(gè)值」,而「==」的意思是「檢查變量是否等于這個(gè)值」。把它們混在一起肯定會(huì)導(dǎo)致程序無法工作!比較操作符也可以在循環(huán)中使用。刪除第 2 行到第 5 行,然后在它們的位置輸入以下內(nèi)容:

while user_name != “Clark Kent”:
print(“You are not Superman – try again!”)
user_name = input(“What is your name? “)
print(“You are Superman!”)

再次點(diǎn)擊 Run 圖標(biāo)。這一次,程序不會(huì)退出,而是會(huì)不斷詢問你的名字,直到確認(rèn)。有點(diǎn)像一個(gè)非常簡(jiǎn)單的密碼。要退出循環(huán),可以在腳本區(qū)域輸入「Clark Kent」,或者單擊 Thonny 工具欄上的 Stop 圖標(biāo)。

543cd55c-3c4d-11ee-ac96-dac502259ad0.jpg

祝賀你!你現(xiàn)在知道如何使用條件語句和比較操作符了!






審核編輯:劉清

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

    關(guān)注

    48

    文章

    7559

    瀏覽量

    151480
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84727
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1707

    瀏覽量

    105670
  • USB數(shù)據(jù)線
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    4928
  • macOS系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1543

原文標(biāo)題:使用 MicroPython 在樹莓派 Pico 上編程

文章出處:【微信號(hào):趣無盡,微信公眾號(hào):趣無盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹莓Pico RP2040上怎樣使用MicroPython?

    RP2040 是一款由樹莓公司設(shè)計(jì)的 32 位雙核 ARM Cortex-M0+ 微控制器芯片,于 2021 年 1 月發(fā)布,作為樹莓 Pico
    的頭像 發(fā)表于 11-08 14:29 ?3371次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b> RP2040上<b class='flag-5'>怎樣</b>使用<b class='flag-5'>MicroPython</b><b class='flag-5'>呢</b>?

    MicroPython樹莓的區(qū)別是什么?

    ` 關(guān)于micropython樹莓,很多人會(huì)說micropython小巧,并且python直接接觸硬件層面,但是樹莓
    發(fā)表于 08-22 09:54

    樹莓pico入門學(xué)習(xí)筆記(一)相關(guān)資料推薦

    樹莓pico入門學(xué)習(xí)筆記選擇自己熟悉的編程語言樹莓pic
    發(fā)表于 07-01 09:28

    樹莓pico如何入門?

    樹莓pico如何入門?
    發(fā)表于 10-13 08:11

    怎么實(shí)現(xiàn)樹莓Pico電機(jī)運(yùn)動(dòng)控制MicroPython+pioasm編程?

    怎么實(shí)現(xiàn)樹莓Pico電機(jī)運(yùn)動(dòng)控制MicroPython+pioasm編程?
    發(fā)表于 10-27 06:37

    如何為Pico燒錄Micropython固件

    燒錄固件務(wù)必按順序操作!否則會(huì)燒錄失敗?。?)一直按住樹莓Pico板上的BOOTSEL按鍵,將樹莓P
    發(fā)表于 01-20 08:06

    樹莓Pico的相關(guān)資料推薦

    1月22日,樹莓基金會(huì)最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓體積更小,售價(jià)僅4
    發(fā)表于 02-07 07:37

    怎樣去使用MicroPython軟件

    怎樣去使用MicroPython軟件?樹莓Raspberry Pi Pico有何性能
    發(fā)表于 02-10 07:22

    樹莓PICO:使用rt-thread micropython軟件包聯(lián)網(wǎng)獲取天氣

    1、樹莓PICO上實(shí)現(xiàn)http請(qǐng)求demo  項(xiàng)目描述  本項(xiàng)目使用樹莓
    發(fā)表于 11-14 16:19

    【BPI-Pico-RP2040 開發(fā)板】+MicroPython初體驗(yàn)

    使用MicroPhthon進(jìn)行開發(fā),同時(shí)MicroPhthon又是自己沒有接觸到領(lǐng)域,所以本篇文章Pico上運(yùn)行MicroPython,同時(shí)進(jìn)行
    發(fā)表于 03-18 18:42

    樹莓Raspberry Pi Pico快速上手教程之MicroPython使用說明

    第一步:刷固件下載測(cè)試固件到電腦, 解壓出來。其中有兩個(gè)uf2文件, 其中的pico_micropython_20210121.uf2文件為MicroPython固件按住樹莓
    發(fā)表于 12-07 14:06 ?6次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>Raspberry Pi <b class='flag-5'>Pico</b>快速上手教程之<b class='flag-5'>MicroPython</b>使用說明

    樹莓pico入門學(xué)習(xí)筆記(一)

    樹莓pico入門學(xué)習(xí)筆記選擇自己熟悉的編程語言樹莓pic
    發(fā)表于 12-17 18:42 ?21次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>pico</b>入門學(xué)習(xí)筆記(一)

    基于樹莓pico的可編程游戲手柄設(shè)計(jì)

    方案介紹組件12x12x7.3mm 瞬時(shí)觸覺按鈕按鈕樹莓Pico通用 D1286464 OLED 顯示屏操縱桿模塊 PS210 歐姆電阻?組裝將樹莓
    發(fā)表于 12-26 15:10 ?0次下載

    基于樹莓Raspberry Pi Pico的自動(dòng)澆花系統(tǒng)

    土壤濕度傳感器 x 1?4. RGB LED x 15. 面包板 x 16. 移動(dòng)電源 x 1軟件組件1. MicroPython2. Thonny IDE第 1步-設(shè)置樹莓 Pico
    發(fā)表于 12-27 15:34 ?5次下載

    樹莓Pico開發(fā)板擴(kuò)展ESP01S無線WiFi模塊通信實(shí)踐

    介紹樹莓Pico開發(fā)板擴(kuò)展ESP01S無線模塊建立WiFi連接,并采用AT命令和MicroPython語言實(shí)現(xiàn)樹莓
    發(fā)表于 05-31 15:59 ?3次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>開發(fā)板擴(kuò)展ESP01S無線WiFi模塊通信實(shí)踐