女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MicroPython在Raspberry Pi上通過雙核編程的多線程控制LED

科技觀察員 ? 來源:circuitdigest ? 作者:JOYDIP DUTTA ? 2022-07-25 17:41 ? 次閱讀

在本教程中,我們將使用 MicroPython在 Raspberry Pi Pico 上通過雙核編程的多線程控制兩個 LED

到目前為止,我們已經了解了如何連接OLED、LCD、伺服、超聲波傳感器,并且我們已經實現了I2CADC、與 Raspberry Pi Pico 的藍牙通信。RP2040微控制器pico 板具有雙核。如果您不熟悉多線程執行,那么請考慮一下您的計算機系統。它可以同時執行多個程序,這些程序可以由一個操作系統使用多線程來運行。但是我們在 Raspberry Pi Pico 上沒有任何操作系統來控制 CPU 周期,它只能支持每個內核一個線程,在這種情況下是兩個。

Raspberry Pi Pico 上雙核編程所需的組件

您需要確保擁有以下組件來演示 Pico 板上的雙核編程。

樹莓派 Pico

LED x2

電阻器 x2(330 歐姆)

面包板

連接電線

使用 Raspberry Pi Pico 板的伺服電機電路圖

伺服電機的電路圖就是這么簡單。我已經分別使用兩個 330 歐姆電阻與 GPIO15 和 GPIO16 連接了兩個 LED。LED 的接地引腳已連接到 Pico 板的接地引腳。

poYBAGLeZN2ABGE6AANNlnAL4Go059.png

使用雙核編程在 Raspberry Pi Pico 上進行多線程

您需要克隆我們的Raspberry Pi Pico 教程GitHub 存儲庫。然后打開“T9_DualCore_Program_PIco”文件夾。在此文件夾中,您可以找到“代碼”文件夾。在Thonny編輯器中打開“main.py”python 文件。現在,讓我們討論一下main.py文件。

從機器進口銷
導入 utime
導入_thread

首先,我們需要從上面提到的 machine.py 庫中導入Pin() 類。在我們之前的教程中,我們已經多次使用機器庫,希望您現在熟悉機器庫。然后我們需要導入“utime”庫來使用pico的內部時鐘。我們正在使用“_thread”庫來使用 raspberry pi pico 社區制作的線程函數。

led1 = Pin(16, machine.Pin.OUT)
led2 = Pin(15, machine.Pin.OUT)
sLock = _thread.allocate_lock()

在上面的代碼中,我使用“Pin(16, machine.Pin.OUT)”和“Pin(15, machine.Pin.OUT)”函數將 GPIO15 和 GPIO16 的兩個 LED 初始化為 OUPUT 。“_thread.allocate_lock()”函數可用于為兩個線程提供信號量鎖。如果想詳細了解這個函數,可以參考“_thread”庫的文檔。

定義核心任務():
    而真:
        sLock.acquire()
        print("進入第二個線程")
        utime.sleep(1)
        led2.high()
        print("Led 2 開啟")
        utime.sleep(2)
        led2.low()
        print("Led 2 關閉")
        utime.sleep(1)
        print("從第二個線程退出")
        utime.sleep(1)
        sLock.release()
_thread.start_new_thread(CoreTask, ())

我們將在單線程的另一個內核中使用“CoreTask()”函數。在函數內的 while 循環中,我們使用信號量鎖來保持線程,直到它完成。然后我將 led2 調高 1 秒鐘,然后在 Thonny 的輸出端打印指令。然后我在線程完成時釋放信號量鎖。“_thread.start_new_thread(CoreTask, ())”函數將啟動線程。該函數將目標函數名作為第一個參數。在我的例子中,它是“CoreTask”,它在第二個參數中接受參數。就我而言,我沒有任何要傳遞的論點。

而真:
    # 我們獲取信號量鎖
    sLock.acquire()
    print("進入主線程")
    led1.toggle()
    utime.sleep(0.15)
    print("Led 1 開始切換。")
    print("退出主線程")
    utime.sleep(1)
    # 我們釋放信號量鎖
    sLock.release()

在上面的 while 循環中,我們類似地使用了另一個信號量鎖,以便主線程繼續運行直到它完成。它將切換 led1,然后釋放信號量鎖。現在,在 Thonny IDE中,打開 “main.py” 文件。首先, 通過按鍵盤上的 “ctrl+shift+s”鍵將“main.py”文件保存在 Pico 板上 。在保存文件之前,請確保您的 Pico 板已連接到您的筆記本電腦。保存代碼后,會出現一個彈出窗口,如下圖所示。您必須首先 選擇 Raspberry Pi Pico,然后 將文件命名為“main.py”并保存。 此過程使您能夠在 Pico 打開時運行程序。

poYBAGLeZNaAXAD3AADbydIz35Y407.png

當您在 Pico 板上上傳并運行代碼時,您會看到連接到 GPIO16 的 led1 以 1.15 秒的延遲切換。但是連接到 GPIO15 的 led2 會延遲 2 秒閃爍。您可以參考下面的視頻了解更多詳情。

代碼

主文件

進口機
導入 utime
導入_thread
led1 = machine.Pin(16, machine.Pin.OUT)
led2 = machine.Pin(15, machine.Pin.OUT)
sLock = _thread.allocate_lock()
定義核心任務():
    而真:
        sLock.acquire()
        print("進入第二個線程")
        utime.sleep(1)
        led2.high()
        print("Led 2 開啟")
        utime.sleep(2)
        led2.low()
        print("Led 2 關閉")
        utime.sleep(1)
        print("從第二個線程退出")
        utime.sleep(1)
        sLock.release()
_thread.start_new_thread(CoreTask, ())
而真:
    # 我們獲取信號量鎖
    sLock.acquire()
    print("進入主線程")
    led1.toggle()
    utime.sleep(0.15)
    print("Led 1 開始切換。")
    utime.sleep(1)
    print("退出主線程")
    utime.sleep(1)
    # 我們釋放信號量鎖
    sLock.release()

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23691

    瀏覽量

    670776
  • Micropython
    +關注

    關注

    0

    文章

    68

    瀏覽量

    5134
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【Embedded Pi申請】基于Raspberry Pi的智能家居遠程控制系統

    本項目大體分為4個階段,第一階段為入門篇,切身體驗Raspberry Pi開發套件硬件資源,軟件資源和開發環境;第二階段為功能篇,通過編程,實現 ArduinoTM shields各功
    發表于 11-24 09:33

    Micropython STM32添加多線程功能

    Micropython 官方下載的代碼默認未開啟多線程支持,可用以下方法: Micropython添加多線程功能的STM32目錄下mpconfigport.h中 #define MIC
    發表于 08-24 06:08

    【BPI-Pico-RP2040 開發板】RP2040MicroPython環境中多線程編程

    為參考到的部分資料列表:樹莓派Pico迷你開發板MicroPython多線程編程實踐Multithreaded on Raspberry Pi
    發表于 04-12 15:54

    linux多線程編程課件

    電子發燒友為您提供了linux多線程編程課件,希望對您學習 linux 有所幫助。部分內容如下: *1、多線程模型單處理器模型和多處理器系統
    發表于 07-10 11:58 ?0次下載

    linux多線程編程開發

    本文中我們針對 Linux 多線程編程的主要特性總結出 5 條經驗,用以改善 Linux 多線程編程的習慣和避免其中的開發陷阱。
    發表于 12-26 14:24 ?55次下載
    linux<b class='flag-5'>多線程</b><b class='flag-5'>編程</b>開發

    Windows多線程編程

    計算機上的上位機制作工具語言之Windows多線程編程,感興趣的可以看看。
    發表于 09-01 15:27 ?0次下載

    什么是多線程編程?多線程編程基礎知識

    摘要:多線程編程是現代軟件技術中很重要的一個環節。要弄懂多線程,這就要牽涉到多進程。本文主要以多線程編程以及
    發表于 12-08 16:30 ?1.3w次閱讀

    Raspberry Pi安裝RetroPie的教程

    RetroPie是一個用于 Raspberry Pi 模擬復古視頻游戲的軟件庫。本教程中,我們將在
    的頭像 發表于 08-26 15:26 ?4742次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>上</b>安裝RetroPie的教程

    通過Raspberry Pi進行簡單的物聯網LED控制

    電子發燒友網站提供《通過Raspberry Pi進行簡單的物聯網LED控制.zip》資料免費下載
    發表于 12-09 10:02 ?0次下載
    <b class='flag-5'>通過</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>進行簡單的物聯網<b class='flag-5'>LED</b><b class='flag-5'>控制</b>

    Raspberry Pi通過網絡控制LED

    電子發燒友網站提供《Raspberry Pi通過網絡控制
    發表于 12-13 09:37 ?0次下載
    <b class='flag-5'>在</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>上</b><b class='flag-5'>通過</b>網絡<b class='flag-5'>控制</b><b class='flag-5'>LED</b>

    通過TwythonRaspberry Pi發推文!(第2部分)

    歡迎來到通過“Twython”Raspberry Pi發推文的第2部分。和上次一樣,我們將遵循Ras
    的頭像 發表于 03-01 10:19 ?914次閱讀
    <b class='flag-5'>通過</b>Twython<b class='flag-5'>在</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>上</b>發推文!(第2部分)

    【試用報告】RP2040MicroPython環境中多線程編程

    更強大的是,RP2040使用了ARM Cortex M0+,既然是的,那么我們就可以BPI-Pico-RP2040運行
    的頭像 發表于 04-18 09:15 ?6355次閱讀

    通過USB對Raspberry Pi進行編程

    電子發燒友網站提供《通過USB對Raspberry Pi進行編程.zip》資料免費下載
    發表于 06-30 10:24 ?0次下載
    <b class='flag-5'>通過</b>USB對<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>進行<b class='flag-5'>編程</b>

    mfc多線程編程實例

    (圖形用戶界面)應用程序的開發。在這篇文章中,我們將重點介紹MFC中的多線程編程多線程編程軟件開發中非常重要,它可以實現程序的并發執行
    的頭像 發表于 12-01 14:29 ?1813次閱讀

    socket 多線程編程實現方法

    現代網絡編程中,多線程技術被廣泛應用于提高服務器的并發處理能力。Socket編程是網絡通信的基礎,而將多線程技術應用于Socket
    的頭像 發表于 11-12 14:16 ?877次閱讀