树莓派 PICO基础教程(基于MicroPython) 您所在的位置:网站首页 树莓派运行代码 树莓派 PICO基础教程(基于MicroPython)

树莓派 PICO基础教程(基于MicroPython)

2023-11-29 01:13| 来源: 网络整理| 查看: 265

文章目录 1 树莓派 PICO 简介1.1 简介1.2 配置 [^2]1.3 引脚图1.4 尺寸 2 安装2.1 烧录固件2.2 安装IDE(Thonny IDE)2.3 离线运行程序 3 基础3.01 点亮板载LED灯3.02 板载LED闪烁3.03 LED流水灯3.04 按键实验3.05 外部中断(改进3.04 按键实验)3.06 定时器中断(改进3.02 板载LED闪烁)3.07 PWM 脉冲宽度调制(实现板载LED呼吸灯)3.08 I2C总线(使用SSD1306 OLED屏幕) 4 传感器程序4.1 温度传感器(DS18B20)4.2 温湿度传感器4.2.1 DHT114.2.1 DHT22

1 树莓派 PICO 简介 1.1 简介

Raspberry Pi Pico是具有灵活数字接口的低成本,高性能微控制器板。它集成了Raspberry Pi自己的RP2040微控制器芯片,运行速度高达133 MHz的双核Arm Cortex M0 +处理器,嵌入式264KB SRAM和2MB板载闪存以及26个多功能GPIO引脚。对于软件开发,可以使用Raspberry Pi的C / C ++ SDK或MicroPython。1

1.2 配置 2 树莓派 PICO配置双核 Arm Cortex-M0 + @ 133MHz2 个 UART、2 个 SPI 控制器和 2 个 I2C 控制器芯片内置 264KB SRAM 和 2MB 的板载闪存16 个 PWM 通道通过专用 QSPI 总线支持最高 16MB 的片外闪存USB 1.1 主机和设备支持DMA 控制器8 个树莓派可编程 I/O(PIO)状态机,用于自定义外围设备支持30 个 GPIO 引脚,其中 4 个可用作模拟输入支持 UF2 的 USB 大容量存储启动模式,用于拖放式编程 1.3 引脚图

树莓派 PICO 引脚图

1.4 尺寸

2 安装 2.1 烧录固件 点击 https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2 链接下载UF2文件;

如果连接失效,可以进入 https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython官网下载

按住BOOTSEL键不放,将Pico插入电脑的USB串口,电脑上会弹出一个新的U盘文件夹,把刚刚下载的UF2文件拖拽到文件夹中,树莓派 PICO将会自动重启,此时,固件烧录完成。 2.2 安装IDE(Thonny IDE) 进入软件官网 https://thonny.org/下载软件,最好下载最新版的,否则可能不支持树莓派 PICO;安装Thonny,安装完成后打开Thonny软件,打开工具->设置-> 解释器,选择MicroPython(Raspberry Pi Pico)解释器,并在串口处选择树莓派PICO的串口号(如果板子已经连接在电脑上,软件一般会自动检测串口号)重启软件,可以看到软件左下方显示了树莓派PICO中的文件;

如果没有显示左侧文件树的话可以勾选 视图->文件

2.3 离线运行程序

新建文件

新建文件,编写完代码后,按住ctrl+s将该文件保存在树莓派PICO上,并命名为main.py(一定要加后缀.py),下次树莓派PICO通电时便会自动运行main.py中的程序。

3 基础 3.01 点亮板载LED灯 from machine import Pin if __name__ == '__main__': # 构建led对象 # 板载LED灯连接与引脚25相连 # LED = Pin(id, mode, pull) # id:PICO引脚编号 # mode:输入输出方式,有Pin.IN(输入)和Pin.OUT(输出)两种 # pull:上下拉电阻配置,有None(无上下拉电阻)、Pin.PULL_UP(上拉电阻)和Pin.PULL_DOWN(下拉电阻)三种 LED = Pin(25, Pin.OUT) # 高电平点亮 LED.value(1) 3.02 板载LED闪烁 from machine import Pin from utime import sleep import utime led = Pin(25, Pin.OUT) if __name__ == '__main__': while True: # led点亮 led.value(1) utime.sleep_ms(1000) # led熄灭 led.value(0) utime.sleep_ms(1000) 3.03 LED流水灯 LED发光二极管图片

LED发光二极管正负极区分 一般引脚长的一端为正极,引脚短的为负极看发光二极管内部,支架大的为负极,支架小的为负极 电路连线图

代码 from machine import Pin import utime # 定义LED引脚数组 leds = [Pin(i,Pin.OUT) for i in range(0,5)] if __name__ == '__main__': while True: # 依次点亮 for n in range(0,5): leds[n].value(1) utime.sleep_ms(200) # 依次熄灭 for n in range(0,5): leds[n].value(0) utime.sleep_ms(100)

3.04 按键实验 四角按键图片

四角按键怎么连接

默认按键未按下的情况下,12相连接,34相连接;当按下按键时,1234才相连接。

电路接线图

代码 from machine import Pin import utime # 配置按键 # key = machine.Pin(id, mode, pull) # id:树莓派Pico引脚编号 # mode:输入输出方式,有Pin.IN(输入)和Pin.OUT(输出)两种 # pull:上下拉电阻配置,有None(无上下拉电阻)、Pin.PULL_UP(上拉电阻)和Pin.PULL_DOWN(下拉电阻)三种 key = Pin(0, Pin.IN, Pin.PULL_UP) if __name__ == '__main__': while True: # print(key.value()) if key.value() == 0: # 等待一段时间,防止抖动 utime.sleep_ms(100) if key.value() == 0: print('The button is pressed')

按键消抖可以参考https://baike.baidu.com/item/%E6%8C%89%E9%94%AE%E6%B6%88%E6%8A%96

3.05 外部中断(改进3.04 按键实验) 什么是外部中断

外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。3

外部中断的作用 节省CPU资源 代码实现

在3.04 按键实验中,检测按键是否被按下采用的是在主程序中写死循环的办法,假如这个按键被按下的频率十分低(一天只有几次被按下),采用死循环的方法将会浪费大量的CPU资源,而采用外部中断的方式检测按键是否被按下将大大节省CPU资源。

from machine import Pin import utime #配置按键 key = Pin(0, Pin.IN, Pin.PULL_UP) def external_interrupt(key): # 消除抖动 utime.sleep_ms(100) # 再次判断按键是否被按下 if key.value() == 0: print('The button is pressed') if __name__ == '__main__': # KEY.irq(handler,trigger) # handler:中断执行的回调函数 # trigger:触发中断的方式,分别为Pin.IRQ_FALLING(下降沿触发)、 # Pin.IRQ_RISING(上升沿触发)、Pin.IRQ_LOW_LEVEL(低电平触发)和 # Pin.IRQ_HIGH_LEVEL(高电平触发)四种 # 定义中断,下降沿触发 key.irq(external_interrupt, Pin.IRQ_FALLING) 3.06 定时器中断(改进3.02 板载LED闪烁) 什么是定时器中断 定时器中断是由单片机中的定时器溢出而申请的中断,即设定一个时间,到达这个时间后就会产生中断 代码

通过设置定时器中断使树莓派PICO板载LED每隔两秒闪烁一次

from machine import Pin, Timer # 创建LED对象 led=Pin(25, Pin.OUT) # 闪烁回调函数 def twinkle(tim): # toggle方法:LED状态翻转 led.toggle() if __name__ == '__main__': # 构建定时器 tim = Timer() # tim.init(period, mode, callback) # period:周期时间(单位为ms) # mode:工作模式,有Timer.ONE_SHOT(执行一次)和Timer.PERIODIC(周期性执行)两种 # callback:定时器中断的回调函数 tim.init(period=2000, mode=Timer.PERIODIC, callback=twinkle) 3.07 PWM 脉冲宽度调制(实现板载LED呼吸灯) 什么是PWM

脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。4

代码 from machine import Pin, Timer, PWM import utime led = PWM(Pin(25)) # 设置频率值 led.freq(1000) led_value = 0 # led以5%增长/减少的速度变化亮度 led_space = 5 if __name__ == '__main__': while True: led_value += led_space if led_value >= 100: led_value = 100 led_space = -5 elif led_value


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有