在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

樹莓派Pico物理編程指南

jf_zGNBEhbi ? 來源:趣無盡 ? 作者:樹莓派實(shí)驗(yàn)室 ? 2023-08-17 09:42 ? 次閱讀

樹莓派 Pico 的 RP2040 微控制器在設(shè)計(jì)時考慮到了物理計(jì)算。它的眾多通用輸入/輸出(GPIO)引腳讓它與一系列組件交互,允許你建立項(xiàng)目,從照明 LED 到記錄你周圍世界的數(shù)據(jù)。

物理計(jì)算并不比傳統(tǒng)計(jì)算更難學(xué)習(xí),如果你能遵循本篇的內(nèi)容,你會明白如何建立你自己的電 路,并對它們進(jìn)行編程來執(zhí)行你的命令。

第一個物理計(jì)算程序:Hello, LED!

就像在屏幕上打印「Hello, World」是學(xué)習(xí)編程語言的第一步,點(diǎn)亮 LED 是學(xué)習(xí)物理計(jì)算的經(jīng)典入門。

你也可以在沒有任何額外組件的情況下開始,Pico 電路板上就有一個小的 LED。

這個 LED 被通電時,它會發(fā)光;當(dāng)它關(guān)閉電源,它就會熄滅。

板載 LED 連接到 RP2040 的 GP25 引腳上。你可能還記得,這是RP2040上「缺失」的 GPIO 引腳之一。

打開 Thonny,連上你的 Pico。點(diǎn)擊進(jìn)入腳本編輯區(qū)域,用以下一行開始你的編程:

import machine

這一小行代碼是在 Pico 上使用 MicroPython 的關(guān)鍵。它導(dǎo)入 MicroPython 代碼集合,也稱為庫。在本例中是「machine」庫。包含了 MicroPython 與 Pico 和其他 兼容 MicroPython 的設(shè)備通信所需的所有指令。如果沒有這一行,你將無法控制任何 Pico 的 GPIO 引腳。

選擇性導(dǎo)入
在 MicroPython 和 Python 中,都可以導(dǎo)入庫的一部分,而不是整個庫。這樣做可以使你的程序使用更少的內(nèi)存,并允許你混合和匹配來自不同庫的函數(shù)。本教程中的程序?qū)肓苏麄€庫,在其他地方,你可能會看到程序有類似于 from machine import Pin,這是告訴 MicroPython 只從「machine」庫中導(dǎo)入「Pin」函數(shù),而不是整個庫。

machine 庫公開了應(yīng)用程序接口(API)。這個名稱聽起來很復(fù)雜,但是準(zhǔn)確地描述了它的功能,它為你的程序提供了一種通過接口與 Pico 通信的方法。

程序的下一行提供了 machine 庫的 API 示例:

led_onboard = machine.Pin(25, machine.Pin.OUT)

這一行定義了一個名為 led_onboard 的對象,代碼的第二部分調(diào)用 machine 庫中的 Pin 函數(shù)。顧名思義,這個函數(shù)是為處理你的 Pico 的 GPIO 引腳而設(shè)計(jì)的。第一個參數(shù)是 25,是你設(shè)置的引腳編號。machine.Pin.OUT 則是告訴 Pico 該引腳應(yīng)該被用作輸出而不是輸入。

這行代碼只起到了設(shè)置引腳的作用,它并不會點(diǎn)亮 LED。要做到這一點(diǎn),你需要告訴 Pico 打 開這個引腳。在下一行輸入以下代碼:

led_onboard.value(1)

這一行將 led_onboard 的值設(shè)置為 1(表示「開」),也可以將值設(shè)置為 0 (表示「關(guān)」)。

單擊 Run 并將程序保存在 Pico 上,命名為 Blink.py。你會看到 LED 燈亮起來。祝賀你——你已經(jīng)編寫了你的第一個物理計(jì)算程序!

然而,你會注意到 LED 仍然是亮著的。這是因?yàn)槟愕某绦蚋嬖V Pico 打開它,但從來沒有告訴它關(guān)閉 LED。你可以在程序的底部添加另一行:

led_onboard.value(0)

然而,這次運(yùn)行程序 LED 似乎永遠(yuǎn)不會點(diǎn)亮。這是因?yàn)?Pico 的工作速度非常非常快,比你用 肉眼看到的速度快得多。LED 有被點(diǎn)亮,但在如此短的時間內(nèi),它似乎保持熄滅。要解決這個問題,你需要通過引入延遲來降低程序的速度。

轉(zhuǎn)到程序的最上面,并單擊第一行末尾,然后按回車鍵插入新行:

import utime

與 import machine 類似,這一行將一個新的 utime 庫導(dǎo)入 MicroPython。這個庫處理與時間有關(guān)的所有事情,從度量時間到向程序中插入延遲。

轉(zhuǎn)到程序的底部,并單擊 led_onboard.value(1) 行末尾,然后按回車鍵插入新行:

utime.sleep(5)

這將調(diào)用來自 utime 庫的 sleep 函數(shù),該函數(shù)將使你的程序暫停數(shù)為你輸入的秒數(shù),在本例中為 5 秒。

再次單擊 Run。這次你會看到你的 Pico 上的 LED 燈亮了,保持亮 5 秒鐘然后再熄滅。

最后,是時候讓 LED 循環(huán)閃爍了。為此,你需要創(chuàng)建一個循環(huán)。重寫你的程序:

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.value(1)
utime.sleep(5)
led_onboard.value(0)
utime.sleep(5)

記住,循環(huán)中的行需要縮進(jìn)四個空格,這樣 MicroPython 就知道它們構(gòu)成了循環(huán)。再次點(diǎn)擊 Run,你會看到 LED 點(diǎn)亮 5 秒,熄滅 5 秒,然后再次點(diǎn)亮的不斷重復(fù)。LED 將繼續(xù)閃 爍,直到你點(diǎn)擊停止圖標(biāo)取消你的程序和重置你的 Pico。

還有另一種方法來處理同樣的工作,即使用 toggle,而不是顯式地將 LED 的輸出設(shè)置為 0 或 1。刪除程序的最后四行,并替換它們,如下面這這樣:

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.toggle()
utime.sleep(5)

再次運(yùn)行程序。你將看到與之前相同的效果。板載的 LED 將點(diǎn)亮 5 秒,然后熄滅 5 秒,然后在無限循環(huán)中再次點(diǎn)亮。不過,這一次,你的程序縮短了兩行,你已經(jīng)優(yōu)化了它。toggle() 可用于所有數(shù)字輸出引腳,它只是在開和關(guān)之間切換:如果引腳當(dāng)前是開的,toggle() 將其關(guān)閉;如果它是關(guān)閉的,toggle() 將它打開。

使用面包板

如果你使用面包板來保存組件并進(jìn)行電氣連接,那么本章中接下來的項(xiàng)目將會更容易完成。

5f6934c0-3c4d-11ee-ac96-dac502259ad0.jpg

面包片上面有很多間距 2.54 毫米的孔洞。在這些孔下是金屬條,它們就像用跳線串連起來。

其中帶有正負(fù)標(biāo)志的兩行通常用于接 Pico 的 5V/3.3V 和 GND 引腳。當(dāng)然也可以用來接外部電源的正負(fù)極。用來給需要的元器件供電。

把電子元件加到面包板上很簡單,只要把它們的引腳與孔對齊,然后輕輕插進(jìn)去。你可以使用跳線再將引腳引入到 Pico 上。

把你的 Pico 插到面包板上,使它跨過面包板中間的空隙,microUSB 接口在最上面。在插入之前,請確保所有的排針都對準(zhǔn)了孔位,否則可能很難插入或者折斷 Pico 的引腳。

5f950744-3c4d-11ee-ac96-dac502259ad0.jpg

外接 LED

對于這個項(xiàng)目,你需要一個面包板,公對公跳線,一個 LED,和一個 330Ω 電阻(或接近 330Ω)。如果你沒有面包板,你可以使用母對母杜邦線。

電阻在這里被當(dāng)作限流電阻使用。它通過限制 LED 可以引出的電流量來保護(hù)你的 Pico 和 LED。如果沒有它,LED 可能會拉出太多的電流而燒毀。330Ω 對大多數(shù)常見的 LED 都適用。數(shù)值越高,LED 越暗;數(shù)值越低,LED 就越亮。

如果沒有電流限制電阻,千萬不要把 LED 連接到 Pico 上,除非你知道 LED 有一個合適的內(nèi)置電阻。

用手指握住 LED,你會看到其中一根導(dǎo)線比另一根長。較長的引線稱為正極,較短的引線是 負(fù)極。正極需要通過電阻連接到你的 Pico 的 GPIO 管腳;負(fù)極需要連接到一個 GND 引腳。

從連接電阻器取一端(哪一端無關(guān)緊要),并將它插入到面包板的同一行,與 Pico 的 GP15 引腳在左下角。將另一端插入面包板下面的一個空置行中。

拿起 LED,把較長的支腳(正極)推到電阻器的末端所在的同一排。把較短的(負(fù) 極)放到同一行,但要穿過面包板中間的空隙,這樣它就能對齊。最后,在 LED 短腳的同一行插入一根 M2M 跳線,然后將它直接連接到你的 Pico 的 GND 引腳上。如下圖所示。

5fabfd64-3c4d-11ee-ac96-dac502259ad0.jpg

在 MicroPython 中控制一個外部 LED 和控制 Pico 板載的 LED 沒有什么不同,只需要改變程序代碼中引腳的編號。如果你關(guān)閉了 Thonny,重新打開它并加載前面的 Blink.py 程序。找到:

led_onboard = machine.Pin(25, machine.Pin.OUT)

編輯引腳號,將其從 25 改為 15。再把 led_onboard 修改為 led_external。最終代碼如下:

import machine
import utime

led_external = machine.Pin(15, machine.Pin.OUT)

while True:
led_external.toggle()
utime.sleep(5)

輸入:讀取按鍵

對于這個項(xiàng)目,你將需要一個面包板,公對公跳線,和一個按鈕開關(guān)。將他們按照圖中示意的位置安裝好。其中按鈕有引腳的兩側(cè)分別插入面包板,并且橫跨在面包板正中間(物理上隔斷兩側(cè)引腳的連通)。

按鈕的一側(cè)接 Pico 的 3V3 引腳,另一側(cè)接 Pico 的 GND 引腳。

5fc3b378-3c4d-11ee-ac96-dac502259ad0.jpg

隱藏的內(nèi)置電阻

與 LED 不同,按鈕開關(guān)不需要限流電阻。它仍然需要一個所謂的上拉或下拉電阻,這取決于你的電路如何工作。如果沒有上拉或下拉電阻,輸入信號會有「噪聲」,即使你沒有按下按鈕也會觸發(fā)。

那么電路中的電阻器在哪里?它藏在 Pico 芯片里。就像它有一個板載 LED,Pico 內(nèi)置一個板載可編程電阻連接到每個 GPIO 引腳。可以根據(jù)需要在 MicroPython 中將其設(shè)置成下拉電阻或上拉電阻。

有什么區(qū)別呢?

下拉電阻將引腳連接到 GND,這意味著當(dāng)按鈕被按下時,讀取到的輸入值是 0。

上拉電阻連接引腳到 3V3,這意味著當(dāng)按鈕沒有按下,讀取到的輸入值是 1。

本書中所有的電路都使用下拉模式下的可編程電阻。

打開 Thonny,然后在新的一行啟動一個新程序:

import machine

接下來,你需要使用 machine API 設(shè)置一個引腳作為輸入,而不是輸出:

button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

這與你的 LED 項(xiàng)目的工作方式相同:創(chuàng)建一個名為「button」的對象,它包括引腳號 GP14,并將其配置為一個電阻設(shè)置為下拉的輸入。不過,創(chuàng)建對象并不意味著它會自己做任 何事情,就像之前創(chuàng)建LED對象并不能使 LED 發(fā)光一樣。

要真正讀取按鈕,你需要再次使用 machine API,這一次使用 value 函數(shù)讀取,而不是設(shè)置引腳的值。輸入以下一行:

print(button.value())

單擊 Run 并將程序保存為 Button.py,記住以確保它保存在你的 Pico MicroPython device 里。你的程序?qū)⒋蛴〕鰪?GP14 讀取到的值。因?yàn)檩斎攵耸褂玫氖且粋€下拉電阻,這個值將是 0,讓你知道按鈕沒有被按下。

用手指按住按鈕,并再次按下 Run 圖標(biāo)。這一次,你將看到值 1 打印到 Shell。按下按鈕就電

路導(dǎo)通并改變了從引腳讀取的值。要連續(xù)讀取按鈕,你需要在程序中添加一個循環(huán)。編輯程序如下:

import machine
import utime

button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

while True:
if button.value() == 1:
print("You pressed the button!")
utime.sleep(2)

再次單擊 Run 按鈕。你的 Pico 運(yùn)行速度要比你的觀察速度快得多,并且沒有延遲,即使是簡單地按一下按鈕,也可以向 Shell 打印數(shù)百條消息!如果你按住按鈕超過兩秒的延遲,它會每兩秒打印一條消息,直到你松開按鈕。

輸入和輸出:同時使用

大多數(shù)電路都有不止一個元件,這就是為什么 Pico 有這么多 GPIO 管腳。現(xiàn)在是時候把你學(xué) 到的所有東西結(jié)合在一起,制作一個更復(fù)雜的電路了:一個用按鈕開關(guān) LED 的裝置。

5fde870c-3c4d-11ee-ac96-dac502259ad0.jpg

實(shí)際上,這個電路將前面的兩個電路組合成一個。你可能記得你使用 GP15 來驅(qū)動外部 LED,GP14 來讀取按鈕。現(xiàn)在重建你的電路,使 LED 和按鈕同時在面包板上,仍然連接到 GP15 和 GP14。別忘了 LED 的限流電阻。

在 Thonny 啟動一個新程序,并開始導(dǎo)入你的程序需要的兩個庫:

import machine
import utime

接下來,設(shè)置輸入和輸出引腳:

led_external = machine.Pin(15, machine.Pin.OUT)
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

然后創(chuàng)建一個讀取按鈕值的循環(huán):

while True:
if button.value() == 1:

不過,這一次你將根據(jù)輸入引腳的值切換輸出引腳上 LED 的狀態(tài),而不是將消息打印到 Shell。使用下面的代碼:

led_external.value(1)
utime.sleep(2)

這足以讓 LED 亮起來,但當(dāng)按鈕沒有被按下時,你還需要再次關(guān)閉它。添加以下新行,刪除 8 個空格中的 4 個,這意味著這行將不是 if 語句的一部分,而是無限循環(huán)的一部分:

led_external.value(0)

最終代碼如下:

import machine
import utime

led_external = machine.Pin(15, machine.Pin.OUT)
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

while True:
if button.value() == 1:
led_external.value(1)
utime.sleep(2)
led_external.value(0)

單擊 Run 并將程序保存為 Pico 上的 Switch.py。

起初,什么都不會發(fā)生。按下按鈕,你就會看到 LED 燈亮起來。松開按鈕兩秒鐘后,指示燈再次熄滅,直到你再次按下按鈕。

祝賀你!你已經(jīng)建立了你的第一個電路,它根據(jù)一個輸入引腳控制另一個輸出引腳,我們已經(jīng)在 構(gòu)建模塊程序的路上跨越了一大步!






審核編輯:劉清

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

    關(guān)注

    48

    文章

    7841

    瀏覽量

    153317
  • led照明
    +關(guān)注

    關(guān)注

    34

    文章

    2672

    瀏覽量

    143575
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1238

    瀏覽量

    53278
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

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

    關(guān)注

    119

    文章

    1905

    瀏覽量

    106627

原文標(biāo)題:樹莓派 Pico 物理編程入門

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

收藏 人收藏

    評論

    相關(guān)推薦

    樹莓權(quán)威用戶指南

    教育,但很快樹莓就得到計(jì)算機(jī)和硬件愛好者青睞;他們用它學(xué)習(xí)編程,并創(chuàng)造出各種各樣新奇的、風(fēng)靡一時的軟硬件應(yīng)用。   《raspberry pi用戶指南》由
    發(fā)表于 07-01 00:23

    樹莓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)動控制MicroPython+pioasm編程

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

    樹莓Pico的相關(guān)資料分享

    關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓
    發(fā)表于 11-03 08:44

    使用樹莓Pico開發(fā)板的一些思考與應(yīng)用實(shí)踐資料分享

    本博文根據(jù)樹莓基金會2021年1月21日公開的兩部最新官方英文技術(shù)文獻(xiàn)[1]、[2]以及博主最近使用樹莓Pico開發(fā)板的一些思考與應(yīng)用實(shí)
    發(fā)表于 11-12 06:07

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

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

    樹莓Python編程指南分享

    樹莓python編程指南
    發(fā)表于 10-07 08:43

    樹莓Python編程指南中文.pdf

    樹莓Python編程指南 PDF電子書下載 帶書簽?zāi)夸?sample
    發(fā)表于 05-07 15:21 ?0次下載

    樹莓也出MCU了?樹莓Pico來了!

    關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓
    發(fā)表于 10-28 10:36 ?11次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>也出MCU了?<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>來了!

    樹莓Pico:僅4美元的MCU

    1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓體積更小,售價(jià)僅4
    發(fā)表于 12-04 13:06 ?13次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:僅4美元的MCU

    樹莓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í)筆記(一)

    距離檢測報(bào)警使用樹莓Pico

    電子發(fā)燒友網(wǎng)站提供《距離檢測報(bào)警使用樹莓Pico.zip》資料免費(fèi)下載
    發(fā)表于 11-09 11:49 ?0次下載
    距離檢測報(bào)警使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

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

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

    樹莓PICO pio使用

    樹莓 Pico 小小的板子上總是能讓我們發(fā)現(xiàn)一些驚喜。其所使用的RP2040芯片還具備8個可編程I/O(PIO)狀態(tài)機(jī),用于自定義外圍設(shè)備
    的頭像 發(fā)表于 10-18 15:17 ?2195次閱讀
    主站蜘蛛池模板: 日韩色区 | 天天操天天干天搞天天射 | 久久久久久午夜精品 | 午夜情趣视频 | 色淫阁色九九 | 亚洲福利视频一区二区 | 成人永久免费视频网站在线观看 | 免费视频亚洲 | 亚洲精品亚洲人成人网 | 台湾久久 | 亚洲已满18点击进入在线观看 | 国产黄色在线网站 | 天天综合在线观看 | 日本xxxxx69 | 激情网婷婷 | 伊人网络| sihu国产午夜精品一区二区三区 | 人与牲动交bbbbxxxx | 天堂网2021天堂手机版丶 | 天天草视频 | 在线播放一区二区三区 | 日本不卡在线播放 | 美女被网站免费看九色视频 | 成人18毛片 | 你懂得网址在线观看 | 国产精品亚洲四区在线观看 | 日韩一级欧美一级一级国产 | 天天射狠狠干 | 中文字幕一区二区三区四区五区人 | 色视频在线看 | 国产美女视频黄a视频全免费网站 | 韩国午夜精品理论片西瓜 | 免费一级片视频 | 狠狠干狠狠操视频 | 国产视频三区 | 国产视频分类 | 国产在线黄 | 大美女久久久久久j久久 | 无内丝袜透明在线播放 | 日本成人免费网站 | 国产小视频在线免费 |