<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 編程學習 >> Python >> 正文

      Python轉(zhuǎn)向MicroPython?

      作者:佚名    文章來源:網(wǎng)絡(luò)    點擊數(shù):    更新時間:2023/11/7
      線電軌

      一、問題/目標

        前面我們學習了 Python語言, 開發(fā)無線電軌智能車模使用的是 MicroPython 語言,如何從 Python 語言編程, 轉(zhuǎn)向 MicroPython 語言編程,下面讓我們來談?wù)勔韵氯齻問題: (1)他們之間的區(qū)別;(2) MicroPython中特殊的硬件開發(fā)軟件包;(3)在 MicroPython 開發(fā)單片機中嵌入式程序的三個需要注意到的特點,Setup-Loop 整體框架結(jié)構(gòu);硬件相關(guān)軟件結(jié)構(gòu);硬件中斷的使用。下面讓我們逐一討論一下。

       

      二、基本原理

      1、與Python之間的差異

      • Introduction to MicroPython – Python for Microcontrollers

        MicroPython 語言是集成了 Python 語言的一個分支, 實現(xiàn)了 Python 3.4 版本語言標準。它是專門為在單片機這類嵌入式微控制器上,  實現(xiàn)的一款簡潔穩(wěn)定的Python語言解釋器由于它屬于高級解釋型語言,  使得單片機的開發(fā)變得容易起來現(xiàn)在已經(jīng)有眾多的單片機平臺都支持 MicroPython 進行應(yīng)用軟件的開發(fā)。對于初學者來講,  在語法層面, MicroPython 與 Python 語言的差別基本上不易被覺察。  這里就不做展開, 大家如果感興趣,可以在 MicroPython 官網(wǎng)進行查看。  最后需要說明一點的是,  為了便于軟件開發(fā),  在MicroPython中有一種交互式程序開發(fā)模式, REPL, 也就是 Read Evaluate Print Loop。MicroPython 在此模式下, 不斷讀取從串口輸入的 MicroPython  指令, 執(zhí)行后, 進行結(jié)果輸出。這個過程不斷循環(huán), 形成一個交互式開發(fā)模式。

       

        比如在Thonny 環(huán)境中,利用上面程序編輯窗口進行軟件開發(fā)屬于正常程序開發(fā),在Shell中就可以使用 REPL 機制進行交互式開發(fā),比如下面演示在 Shell 中 命令提示符后面輸入不同命令,  回車后, MicroPython 執(zhí)行結(jié)果的演示。手工輸入, 或者拷貝前面的命令,  都可以進行執(zhí)行。

       

      2、硬件軟件包

        為了應(yīng)用到單片機平臺中的硬件模塊,在 MicroPython 中還集成了很多特殊的軟件包。應(yīng)用這些軟件包可以定義一些與硬件相關(guān)的對象, 以及相關(guān)的硬件函數(shù)接口。

        這里以無線電軌智能車重核心控制板 ESP32為例, 在它的MicroPython 中就集成了很多的硬件軟件包包括有管腳、異步串口、PWM、ADC 以及外部的 I2C, SPI 串行接口等。通過這些特殊的硬件驅(qū)動軟件包, 我們就可以在Python 語言中訪問利用這些硬件資源, 來控制車模的運行, 感知外部環(huán)境等。比如這里是 I2C總線軟件包, 通過它可以連接單片機外部很多資源,為了應(yīng)用這個端口,可以 import machine 軟件包中的 Pin, I2C 模塊,通過定義相應(yīng)的對象,   設(shè)置 I2C 總線端口的屬性,并與外部設(shè)備通信。

       

        通過實驗 掌握更多單片機的這些硬件資源的特點和使用方法是應(yīng)用單片機解決車模控制問題的管腳所在。

      3、嵌入式程序開發(fā)

        最后, 我們討論一下 MicroPython 開發(fā)嵌入式程序的特點。對于初學者需要注意三個方面的內(nèi)容。第一個就是程序主題大體上呈現(xiàn)設(shè)置與循環(huán)兩部分。在設(shè)置部分,往往需要 import 所需要的軟件包、  對程序軟件變量和硬件模塊進行初始化等然后程序進入一個由 for 或者 while 語句構(gòu)成的無限循環(huán)結(jié)構(gòu),  在這個結(jié)構(gòu)中周期的執(zhí)行一系列的指令, 完成控制的主要任務(wù)。第二部分就是需要理解程序中包含有一些與硬件相關(guān)的變量、對象等。它們需要不停的進行循環(huán)刷新和幅值,這些實時變量的值反映了單片機外部端口的電壓信號, 或者通訊數(shù)據(jù)等, 通過前面的循環(huán)結(jié)構(gòu)進行周期的讀取或者賦值。  最終形成對外部電路的控制。

       

        最后講一下在車模控制中會碰到的另外一個特殊編程技術(shù),  那就是中斷。中斷是在 單片機內(nèi)部硬件在滿足某些條件下執(zhí)行的程序片段,  比如當定時器硬件出現(xiàn)溢出是會產(chǎn)生周期的定時器中斷; 在外部端口出現(xiàn)電壓變化時會出現(xiàn) IO 信號中斷;在串口接收到數(shù)據(jù)的時候會出現(xiàn)串口通訊中斷等。靈活的應(yīng)用中斷是單片機嵌入式開發(fā)的重要技巧。 通常情況下,  前面的 Loop 循環(huán) 以及中斷程序, 在嵌入式軟件開發(fā)中往往被稱為嵌入式程序的 后臺 任務(wù)和 前臺 任務(wù)。

       

      三、應(yīng)用舉例

        這里以無線電軌智能車綜合測試程序為例,  來說明一下 MicroPython 程序的特點。對于初學者來看, 這個程序顯得有點復雜,但在整體上, 大家看到, 它分為前后兩部分。  前面部分屬于 Setup 初始化部分,  做了很多的硬件初始化,  也定義了一些函數(shù)。后面一部分,就是有 while 形成的 循環(huán)控制部分,  這些屬于軟件的后臺任務(wù)部分。在每一次循環(huán)中依次執(zhí)行 OLED 屏幕的刷新,按鍵的檢測處理,以及控制板上 LED 的閃爍, 用于顯示程序運行狀態(tài)。此時估計大家會有一個疑問, 車模運動中舵機和電機控制代碼在哪里執(zhí)行呢?

       

        為了解決這個疑問, 大家看這個綜合演示程序的中間部分,在這里定義了 ESP32 硬件定時器對象, timer0,接下來定義了一個函數(shù),  用于定時器中斷函數(shù)后面是對定時器進行初始化,設(shè)置定時器工作模式為周期中斷模式,中斷周期為 10毫秒,  也就是100Hz 的重復頻率,第三個參數(shù)設(shè)置中斷服務(wù)程序。這個程序就是前面定義的 timer0  irq 函數(shù)。因此這個中斷程序就會在 Timer0 的中斷驅(qū)動下, 每隔精確的 10毫秒, 就被執(zhí)行一次。 中斷程序?qū)儆谇度胧杰浖那芭_任務(wù)。 中斷程序定義了中斷任務(wù)這些是需要用到的全局變量,  和程序中其它函數(shù)進行信息傳遞。讀取電磁場傳感器的交流電壓值判斷賽道的屬性計算舵機偏移量對舵機偏移量進行限幅下面就是設(shè)置電機運行速度和舵機偏移量。中間部分是用于控制電機是否運行的邏輯。之所以利用中斷周期進行車模控制,  主要是為了保證控制時間的精確和周期的穩(wěn)定。  這要比在 while 循環(huán)中執(zhí)行控制命令更加可靠。

       

        大家感興趣還可以研究一下這個程序前面的初始化過程,對于一些和硬件相關(guān)的模塊的使用,可以配合后面相關(guān)的實驗介紹進行聯(lián)系。通過這個程序, 大家能夠熟悉 MicroPython 編寫嵌入式軟件的一些特點。

       

      1、演示代碼

      Tags:Python,MicroPython  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
      [ 查看全部 ] 網(wǎng)友評論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 99久久综合久中文字幕| 激情五月激情综合| 国产成人综合久久精品下载| 婷婷激情狠狠综合五月| 热综合一本伊人久久精品 | 人妻一本久道久久综合久久鬼色| 亚洲欧洲av综合色无码| 丁香六月激情综合| 亚洲av综合色区| 国产成人+综合亚洲+天堂| 伊人久久综合热线大杳蕉下载| 婷婷五月综合丁香在线| 精品久久综合1区2区3区激情| 久久婷婷五月综合色高清| 亚洲国产综合精品中文字幕 | 区三区激情福利综合中文字幕在线一区亚洲视频1| 国产一区二区三区亚洲综合| 亚洲综合av永久无码精品一区二区 | 九九综合九九综合| 色狠狠久久综合网| 色综合久久中文字幕无码| 激情综合色综合啪啪开心| 久久综合AV免费观看| 久久久久综合网久久| 国产成人综合亚洲| 色综久久天天综合绕视看| 日日AV色欲香天天综合网| 伊人色综合一区二区三区| 亚洲综合最新无码专区| 俺来也俺去啦久久综合网| 狠狠色综合网站久久久久久久| 亚洲国产成人综合精品| 伊人久久久大香线蕉综合直播 | 69国产成人综合久久精品91| 久久精品亚洲综合| 99久久综合狠狠综合久久aⅴ| 久久久久久久综合| 亚洲综合婷婷久久| 五月婷婷激情综合| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 伊人伊成久久人综合网777|