色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

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

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

到目前為止,我們已經(jīng)了解了如何連接OLED、LCD、伺服、超聲波傳感器,并且我們已經(jīng)實(shí)現(xiàn)了I2C、ADC、與 Raspberry Pi Pico 的藍(lán)牙通信。RP2040微控制器pico 板具有雙核。如果您不熟悉多線程執(zhí)行,那么請(qǐng)考慮一下您的計(jì)算機(jī)系統(tǒng)。它可以同時(shí)執(zhí)行多個(gè)程序,這些程序可以由一個(gè)操作系統(tǒng)使用多線程來運(yùn)行。但是我們?cè)?Raspberry Pi Pico 上沒有任何操作系統(tǒng)來控制 CPU 周期,它只能支持每個(gè)內(nèi)核一個(gè)線程,在這種情況下是兩個(gè)。

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

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

樹莓派 Pico

LED x2

電阻器 x2(330 歐姆)

面包板

連接電線

使用 Raspberry Pi Pico 板的伺服電機(jī)電路圖

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

poYBAGLeZN2ABGE6AANNlnAL4Go059.png

使用雙核編程在 Raspberry Pi Pico 上進(jìn)行多線程

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

從機(jī)器進(jìn)口銷
導(dǎo)入 utime
導(dǎo)入_thread

首先,我們需要從上面提到的 machine.py 庫(kù)中導(dǎo)入Pin() 類。在我們之前的教程中,我們已經(jīng)多次使用機(jī)器庫(kù),希望您現(xiàn)在熟悉機(jī)器庫(kù)。然后我們需要導(dǎo)入“utime”庫(kù)來使用pico的內(nèi)部時(shí)鐘。我們正在使用“_thread”庫(kù)來使用 raspberry pi pico 社區(qū)制作的線程函數(shù)。

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)”函數(shù)將 GPIO15 和 GPIO16 的兩個(gè) LED 初始化為 OUPUT ?!癬thread.allocate_lock()”函數(shù)可用于為兩個(gè)線程提供信號(hào)量鎖。如果想詳細(xì)了解這個(gè)函數(shù),可以參考“_thread”庫(kù)的文檔。

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

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

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

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

poYBAGLeZNaAXAD3AADbydIz35Y407.png

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

代碼

主文件

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

聲明:本文內(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)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23252

    瀏覽量

    660584
  • Micropython
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    4731
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【Embedded Pi申請(qǐng)】基于Raspberry Pi的智能家居遠(yuǎn)程控制系統(tǒng)

    本項(xiàng)目大體分為4個(gè)階段,第一階段為入門篇,切身體驗(yàn)Raspberry Pi開發(fā)套件硬件資源,軟件資源和開發(fā)環(huán)境;第二階段為功能篇,通過編程,實(shí)現(xiàn) ArduinoTM shields各功
    發(fā)表于 11-24 09:33

    Micropython STM32添加多線程功能

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

    【BPI-Pico-RP2040 開發(fā)板】RP2040MicroPython環(huán)境中多線程編程

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

    linux多線程編程課件

    電子發(fā)燒友為您提供了linux多線程編程課件,希望對(duì)您學(xué)習(xí) linux 有所幫助。部分內(nèi)容如下: *1、多線程模型單處理器模型和多處理器系統(tǒng)
    發(fā)表于 07-10 11:58 ?0次下載

    linux多線程編程開發(fā)

    本文中我們針對(duì) Linux 多線程編程的主要特性總結(jié)出 5 條經(jīng)驗(yàn),用以改善 Linux 多線程編程的習(xí)慣和避免其中的開發(fā)陷阱。
    發(fā)表于 12-26 14:24 ?55次下載
    linux<b class='flag-5'>多線程</b><b class='flag-5'>編程</b>開發(fā)

    Windows多線程編程

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

    什么是多線程編程?多線程編程基礎(chǔ)知識(shí)

    摘要:多線程編程是現(xiàn)代軟件技術(shù)中很重要的一個(gè)環(huán)節(jié)。要弄懂多線程,這就要牽涉到多進(jìn)程。本文主要以多線程編程以及
    發(fā)表于 12-08 16:30 ?1.3w次閱讀

    Raspberry Pi安裝RetroPie的教程

    RetroPie是一個(gè)用于 Raspberry Pi 模擬復(fù)古視頻游戲的軟件庫(kù)。本教程中,我們將在
    的頭像 發(fā)表于 08-26 15:26 ?4137次閱讀
    <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進(jìn)行簡(jiǎn)單的物聯(lián)網(wǎng)LED控制

    電子發(fā)燒友網(wǎng)站提供《通過Raspberry Pi進(jìn)行簡(jiǎn)單的物聯(lián)網(wǎng)LED控制.zip》資料免費(fèi)下載
    發(fā)表于 12-09 10:02 ?0次下載
    <b class='flag-5'>通過</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>進(jìn)行簡(jiǎn)單的物聯(lián)網(wǎng)<b class='flag-5'>LED</b><b class='flag-5'>控制</b>

    Raspberry Pi通過網(wǎng)絡(luò)控制LED

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi通過網(wǎng)絡(luò)控制
    發(fā)表于 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>網(wǎng)絡(luò)<b class='flag-5'>控制</b><b class='flag-5'>LED</b>

    通過TwythonRaspberry Pi發(fā)推文?。ǖ?部分)

    歡迎來到通過“Twython”Raspberry Pi發(fā)推文的第2部分。和上次一樣,我們將遵循Ras
    的頭像 發(fā)表于 03-01 10:19 ?723次閱讀
    <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>發(fā)推文?。ǖ?部分)

    【試用報(bào)告】RP2040MicroPython環(huán)境中多線程編程

    更強(qiáng)大的是,RP2040使用了ARM Cortex M0+,既然是的,那么我們就可以BPI-Pico-RP2040運(yùn)行
    的頭像 發(fā)表于 04-18 09:15 ?5467次閱讀

    通過USB對(duì)Raspberry Pi進(jìn)行編程

    電子發(fā)燒友網(wǎng)站提供《通過USB對(duì)Raspberry Pi進(jìn)行編程.zip》資料免費(fèi)下載
    發(fā)表于 06-30 10:24 ?0次下載
    <b class='flag-5'>通過</b>USB對(duì)<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>進(jìn)行<b class='flag-5'>編程</b>

    mfc多線程編程實(shí)例

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

    socket 多線程編程實(shí)現(xiàn)方法

    現(xiàn)代網(wǎng)絡(luò)編程中,多線程技術(shù)被廣泛應(yīng)用于提高服務(wù)器的并發(fā)處理能力。Socket編程是網(wǎng)絡(luò)通信的基礎(chǔ),而將多線程技術(shù)應(yīng)用于Socket
    的頭像 發(fā)表于 11-12 14:16 ?339次閱讀
    主站蜘蛛池模板: 伊人成综合网伊人222| 国产3级在线| 性盈盈剧场| 久久无码AV亚洲精品色午夜麻豆 | 99久久精品毛片免费播放| 亚洲国产三级在线观看| 国产精品亚洲视频在线观看| 亚洲一级特黄| 日韩a视频在线观看| 露露的性战k8经典| 和搜子的日子 在线观看| 成人在线免费| 99爱在线精品视频网站| 亚洲色欲啪啪久久WWW综合网| 色网址在线观看| 欧美国产精品主播一区| 久久黄色小视频| 国产亚洲精品AV片在线观看播放| 一边捏奶头一边啪高潮会怎么样| 久久热在线视频精品店| 国产精品久久欧美一区| 菠萝蜜国际一区麻豆| 最新高清无码专区在线视频| 亚洲精品成人AV在线观看爽翻| 色老板美国在线观看| 欧美色图一区二区三区| 乱码AV午夜噜噜噜噜| 久久成人无码国产免费播放 | 欧美亚洲色帝国| 毛片免费在线播放| 久久91精品国产91| 国产呦精品一区二区三区下载| 香蕉免费高清完整| 色婷婷亚洲精品天天综合影院 | 一本二卡三卡四卡乱码麻豆| 忘忧草在线社区WWW日本-韩国| 碰超成人在线公开免费视频| 美女禁处受辱漫画| 麻豆精品人妻一区二区三区蜜桃| 久久日本精品在线热| 久久精品久久久久|