| ESP32 教學 | MicroPython | PIN Control 控制| 201 |

IO腳位( Input / Output) 一直都是學習單晶片的基礎控制,這篇就來分享如何使用 MicroPython 的語法進行 PIN control 控制,並實際用一個Tact Switch 加上 LED,完成一個簡單的實驗測試。

1. Pin Control 類別

就如同我們學習電腦版的 Python 一樣,在 MicroPython 的世界裡,所有跟硬體有關的控制會放在『machine』這個 module 內,這邊列出在 machine 內常用的6 個類別:

  1. machine.Pin
  2. machine.PWM
  3. machine.Timer
  4. machine.ADC
  5. machine.SPI
  6. machine.I2C

其中 machine.Pin 就是關係到 ESP32 的腳位控制,import 後,便可以進行 GPIO 的設定。下面的程式範例為創造 Pin 類別的物件。

from machine import Pin 
p2=Pin(2,Pin.OUT) 
p17=Pin(17,Pin.IN,Pin.PULL_UP)
p2.value(1)
p2.value(0)

由程式碼可以得知,GPIO2 設定為 Output 和 GPIO17 為 Input,並啟動 Pull-up 電阻。Pin 物件的的操作也很簡單,p2.value(1)就是設定為HIGH準位,p2.value(0)就是設定為LOW準位,如果要讀一個 input 值的話,就可以採用p17.value() 這個方法讀取,下面就來實作一個最簡單的[按鈕+ LED]範例。

2. 電路接法

下面為 ESP32 的電路接法,USB 端口需接上電源或到電腦端。

micropython pin control
micropython pin control

3. 完整程式碼

from machine import Pin
p16=Pin(16,Pin.OUT)
p17=Pin(17,Pin.IN,Pin.PULL_UP)
while 1:
    if (p17.value()==0):
        p16.value(1)
    else:
        p16.value(0)

> 程式解說

from machine import Pin
p16=Pin(16,Pin.OUT)
p17=Pin(17,Pin.IN,Pin.PULL_UP)

import machine 模組的 Pin 類別,並設定 GPIO16 為 output,GPIO17為Input,並開啟 pull-high 電阻設定,使其腳位預設為 HIGH 準位。

while 1:
    if (p17.value()==0):
        p16.value(1)
    else:
        p16.value(0)

設定一個 while 迴圈,如果 gpio17 的按鈕按下時,gpio16 的 LED 將亮起,反之則為關閉LED電源。

4. 總結

ESP32 的 IO 控制來說很簡單,只要注意到JIMI哥之前文章所提到的 IO 腳位(102 ESP32 IO 基本知識)不要去設定到,就不會有太大的問題,下次我們要來講解一下PWM這個類別的用法,如果在實驗上遇到什麼問題的話,歡迎在下方留言哦!

This Post Has 2 Comments

  1. Jimi老師您好:
    之前學習arduino有一段時間,另外也有用python,但現在想玩esp32,發現有點糾結,不知道要用miropython或是arduino的c語言來學習會比較快進入狀況?請老師指教

    1. Hi blairan :
      如果想玩ESP32的話,網路資訊或實體書來說,Arduino C/C++相較於micropython還是豐富很多,也比較容易找到前輩的範例參考(雖然我自己網站是以micropython的教學較多😆),micropython 語言優勢當然就是好上手,加上你本身又學過python,學習IO控制語法對你來說更不是難事。
      回到你的問題,可以先想一下你想玩ESP32的目的是甚麼呢? 單純試試看或開發專案? 單純學習的話,兩種語言各有特色,看你喜歡哪個就學哪個。但專案開發為目的時,我的建議是小專案應用的話(簡單控制IO或基本應用),就直接用micropython吧,開發快速且語法真的很簡單,較複雜的大型專案用C比較好,效率高且記憶體需求較少,以上淺見,感謝你的留言囉!

發佈留言

Close Menu