日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树莓派Pico的一些有趣的基本实验

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派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之間的關系:

脈沖寬度(ms)duty u16
13277
1.54915
26554

▲ 輸出50Hz,1.5ms脈沖寬度▲ 變化的PWM波形驅動舵機旋轉from?machine????????????????import?Pin,PWM import?timepwm?=?PWM(Pin(16))pwm.freq(50)for?_?in?range(100):pwm.duty_u16(3276)print("Out?pulse?width?:?1ms")time.sleep(1)print("Out?pulse?with?:?2ms.")pwm.duty_u16(6553)time.sleep(1)

(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/

溫馨提示

由于微信公眾號近期改變了推送規則,如果您想經常看到我們的文章,可以在每次閱讀后,在頁面下方點一個「贊」或「在看」,這樣每次推送的文章才會第一時間出現在您的訂閱列表里。


推薦閱讀:

專輯|Linux文章匯總

專輯|程序人生

專輯|C語言

我的知識小密圈

關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。

歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~

總結

以上是生活随笔為你收集整理的树莓派Pico的一些有趣的基本实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。