289|3

231

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【树莓派Pico 2 RP2350开发板】 使用Python语言GPIO/UART/PWM/ADC外设操作 [复制链接]

  本帖最后由 meiyao 于 2025-3-16 10:28 编辑

尝试学习Python语言,并结合Python语言,展示学习进度
GPIO外设调试、UART外设调试、定时器生成PWM、ADC调试、电机控制等。

 

外设代码
GPIO 调试:控制 LED 灯、读取按键状态。

  • 实验名称:点亮板载LED灯
  • # 导入Pin和time模块
  • from machine import Pin
  • import time
  • # 构建LED对象
  • LED = Pin(25, Pin.OUT) # 假设LED连接到GPIO 25
  • # 无限循环,使LED闪烁
  • while True:
  • LED.value(1) # 点亮LED
  • time.sleep(1) # 等待1秒
  • LED.value(0) # 关闭LED
  • time.sleep(1) # 等待1秒

UART 调试:实现串口通信,发送和接收数据,ADC 调试:读取模拟信号。

  • # 导入必要的模块
  • from machine import ADC, UART, Pin
  • import time
  • # 配置UART
  • # UART 0, 波特率 9600, 使用默认的TX (GPIO 0) 和 RX (GPIO 1)
  • uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
  • # 配置ADC
  • # 使用 GPIO 26 作为 ADC 输入引脚
  • adc = ADC(Pin(26)) # Raspberry Pi Pico 的 ADC 引脚是 GPIO 26-28
  • # 无限循环,读取 ADC 值并通过串口输出
  • while True:
  • adc_value = adc.read_u16() # 读取 ADC 值(0-65535)
  • uart.write("ADC Value: {}\n".format(adc_value)) # 通过串口输出 ADC 值
  • time.sleep(1) # 等待1秒

UART 配置:

初始化 UART 0,设置波特率为 9600,使用 GPIO 0 作为 TX 引脚,GPIO 1 作为 RX 引脚。

ADC 配置:

初始化 ADC,使用 GPIO 26 作为模拟输入引脚。

主循环:

读取 ADC 的原始值(0-65535)。

将 ADC 值通过 UART 发送。

每次发送后等待 1 秒,避免数据发送过快。

 

 

 

定时器生成 PWM:控制 LED 亮度或舵机角度。

  • from machine import Pin, PWM, Timer
  • # 配置 PWM
  • pwm_pin = Pin(15)
  • pwm = PWM(pwm_pin)
  • pwm.freq(1000)
  • # 定义占空比变量
  • duty = 0
  • direction = 1 # 1 表示增加,-1 表示减少
  • # 定时器回调函数
  • def update_pwm(timer):
  • global duty, direction
  • duty += direction * 1000 # 每次增加或减少 1000
  • if duty >= 65535 or duty <= 0:
  • direction *= -1 # 反转方向
  • pwm.duty_u16(duty)
  • # 配置定时器
  • timer = Timer()
  • timer.init(period=10, mode=Timer.PERIODIC, callback=update_pwm) # 每 10ms 触发一次

 

框架结构图

 

【MicroPython】machine.Pin类函数详解
machine.Pin(id, mode=None, pull=None, value)
Pin对象构造函数
id:GPIO编号,数值为0-29,如使用GPIO13则此处填写13,。;
mode:模式,可选None、Pin.IN(0)、Pin.OUT(1)、Pin.OPEN_DRAIN(2);
pull:使用内部上下拉电阻,仅在输入模式下有效,可选 None、Pin.PULL_UP(1)、Pin.PULL_DOWN(2);
value:输出或开漏模式下端口值,0为低(off)、1为高(on);

 

串口框图

 

UART类函数详解
machine.UART(id,baudrate=115200,bits=8,parity=None,stop=1,tx=None,rx=None):
UART对象构造函数,作用为初始化对应通道和引脚.
id:使用UART通道,可为0或者1;
baudrate: 波特率参数
bits:数据位长度
parity:奇偶校验位
stop:停止位长度
tx:TXD引脚,应为Pin对象
rx:RXD引脚,应为Pin对象

 

ADC框架

 

machine.ADC类函数详解
machine.ADC(id):
ADC对象构造函数,并初始化对应通道。
id:可为GPIO对象,也可为ADC通道;

函数返回值并不是直接返回ADC读取的数值,而是处理过的数值,其数值范围为0-65535;

故ADC电压计算公式应为:

Vin =\frac{3.3*ReadData}{65535}Vin=655353.3∗ReadData​
ADC读取电压为3.3乘上返回值除以65535,单位为V

 

实现结果

ADC与串口输出

 

使用串口打印出ADC采集的值,上图显示15。

PWM:

播放器加载失败: 未检测到Flash Player,请到安装
PWM

LED闪烁:

播放器加载失败: 未检测到Flash Player,请到安装
led闪烁

 

最新回复

中断或者回调是怎么处理的呢?   详情 回复 发表于 4 天前

赞赏

1

查看全部赞赏

点赞 关注(2)
 
 

回复
举报

7192

帖子

11

TA的资源

版主

沙发
 

大佬可以呀,python也玩起来了,作品非常不错,给你点赞了!

 
 
 

回复

1490

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 

值得点赞呀。。。。。。。。。。。。。。。。。。

 
 
 

回复

7763

帖子

2

TA的资源

五彩晶圆(高级)

4
 

中断或者回调是怎么处理的呢?

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 11

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表