树莓派Pico的一些有趣的基本实验
Raspberry PI Pico小型MCU模塊,以其價格低廉,功能豐富,開發方便為很多非電子類專業的同學進行創意項目原型設計提供了方便的平臺。下面的一些實驗給CDIE課程設計同學們制作的一些基本演示實驗。
▌01 PI Pico實驗板
在 RASPBERRY PI PICO 開發板 基礎測試[1] 給出了對PI Pico開發板的基本設置,通過 安裝Thonny開發環境[2] 可以方便對Pi Pico進行初步的開發。
▲ Pi Pico電路板的正反面本文下面根據 Raspberry ?Pi Pico Python SDK[3] 中給的示例,對PI Pico的一些基本模塊進行測試。
關于Pi Pico的管腳配置,可以參見 Pi Pico數據手冊[4] 中給出的Pi Pico管腳圖定義:
▲ Pi Pico管腳功能定義圖更多PiPico的資料可以從:Pi Pico官方網站[5] 獲得。
▌02 基本測試
1.Flash LED on board
from?machine????????????????import?Pin,Timer from?time???????????????????import?sleep_usled?=?Pin(25,?Pin.OUT) tim?=?Timer()print("Flash?LED.")def?tick(timer):global?ledled.toggle()tim.init(freq=2,?mode=Timer.PERIODIC,?callback=tick)▲ 實驗電路板
2.UART
(1)測試程序
from?machine????????????????import?UART,Pin,Timer from?time???????????????????import?sleep_usuart?=?UART(0,?baudrate=115200,?tx=Pin(0),?rx=Pin(1),?bits=8,?parity=None,?stop=1) led?=?Pin(25,?Pin.OUT)tim?=?Timer()print("Send?UART.")def?tick(timer):global?uart,?ledled.toggle()uart.write(b'\x55')tim.init(freq=10,?mode=Timer.PERIODIC,?callback=tick)▲ 測試Pin(0)▲ 測量Pin(0)的波形3.ADC
通過ADC通道4,讀取芯片內部溫度。在此過程中,使用手觸摸Pi Pico表面加熱,或者使用酒精噴灑芯片表面進行降溫。
▲ 讀取芯片內部的溫度import?machine import?utimesensor_temp?=?machine.ADC(4) conversion_factor?=?3.3/(65535)while?True:read?=?sensor_temp.read_u16()?*?conversion_factortemperature?=?27?-?(read?-?0.706)?/?0.001721print(temperature)utime.sleep(2)▲ 顯示讀取的溫度值▲ 讀取的溫度數值變化4.PWM
(1)PWM驅動LED
控制板載LED的波形是PWM運行。
from?machine????????????????import?Pin,PWM import?timepwm?=?PWM(Pin(25))pwm.freq(1000)duty?=?0 direction?=?1for?_?in?range(16*255):duty?+=?directionif?duty?>?255:duty?=?255direction?=?-1elif?duty?<?0:duty?=?0direction?=?1pwm.duty_u16(duty*duty)time.sleep(0.001)PWM是軟件PWM,它可以設置在任意管腳上。初步測試過Pin0, 15, 16等等。都具有相類似波形。
▲ Pin25(驅動LED)的波形變化▲ LED亮度變化(2)PWM驅動舵機
舵機使用頻率為50Hz,脈沖寬度cs 1.0 ~ 2.0ms的脈沖作為控制信號。下面是產生基本舵機位置中間時的輸出控制脈沖。
from?machine????????????????import?Pin,PWM import?timepwm?=?PWM(Pin(15))pwm.freq(50) pwm.duty_u16(4915)舵機具有三個接線:
棕色:GND
紅色:+4.5 ~ +6V
黃色:指令脈沖信號
計算Duty_16公式為:
對應脈沖寬度與duty_u16之間的關系:
| 1 | 3277 |
| 1.5 | 4915 |
| 2 | 6554 |
(3)PWM+ADC實驗
使用電位器將改變的電壓引入ADC(0),由單片機獲得對應的ADC數值,改變PWM輸出,使其輸出的時間寬度從1ms等比例變化到2ms。
▲ 將電位器輸入ADC(0)可以看到舵機的輸出角度隨著電位器的改變而發生變化。
▲ 旋轉電位器改變舵機的角度from?machine????????????????import?Pin,PWM import?timepwm?=?PWM(Pin(16))pwm.freq(50)control?=?machine.ADC(0)for?_?in?range(1000):adc?=?control.read_u16()duty?=?int(adc?*?(6553-3276)/0xffff)?+?3276pwm.duty_u16(duty)time.sleep(0.1)5.中斷IRQ
使用管腳PIN2的下降沿產生中斷。示例程序如下:
from?machine????????????????import?Pinp2?=?Pin(2,?Pin.IN,?Pin.PULL_UP)p2.irq(lambda?pin:print("IRQ?with?flag:",pin.irq().flags()),Pin.IRQ_FALLING)使用跳線將PIN2接地。每一次等會觸發中斷發生一次。
▲ 將PIN2接地可以看到觸發了中斷▌結論
通過幾個基礎的Pi Pico實驗,初步給出了該模塊的應用實例。
參考資料
[1]
RASPBERRY PI PICO 開發板 基礎測試: https://zhuoqing.blog.csdn.net/article/details/114037888
[2]安裝Thonny開發環境: https://zhuoqing.blog.csdn.net/article/details/114064833
[3]Raspberry ?Pi Pico Python SDK: https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf
[4]Pi Pico數據手冊: https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf
[5]Pi Pico官方網站: https://www.raspberrypi.org/documentation/rp2040/getting-started/
溫馨提示
由于微信公眾號近期改變了推送規則,如果您想經??吹轿覀兊奈恼?#xff0c;可以在每次閱讀后,在頁面下方點一個「贊」或「在看」,這樣每次推送的文章才會第一時間出現在您的訂閱列表里。
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~
總結
以上是生活随笔為你收集整理的树莓派Pico的一些有趣的基本实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 此操作要求使用 IIS 集成管线模式
- 下一篇: 分享一下好用的本地格式化软件hijson