目录
简介
从树莓派开始,多少关注一点树莓派相关信息,前两年看到 Pico 之后很心动,因为不想用 c 编程,当时又很喜欢 python,加上做了点兼职有钱没处花,前后买了十几片 Pico。结果没怎么玩就扔到那吃灰了。
脱产二战失败后,想找工作缺什么都不会了,由于想从事硬件(或者说比较物联网)的行业,因此开始尝试重新捡起嵌入式编程。总之手上有什么用什么。51 的软件用起来好像很复杂,还是从 Pico 开始重拾单片机游戏吧。
对了,由于之前玩的时候没有文档,导致我现在重拾这块板子很麻烦,于是在此编写一个完整的记录博客。
入门文章参考的是 这个
单片连接
- 首先下载 Thonny IDE。初次运行时选择
简体中文
和Raspberry pi
。
将 Pico 通过带有读写功能的 micro 数据线连接到电脑上,电脑上会多出一个叫做RPI-RP2
的驱动器。若没有出现,就拔掉,按住主板上的BOOTSET
按钮,按住不松手的情况下连接电脑,之后继续按住几秒松开。 - 配置 Pico。驱动器中的文件可能不一样,但应该都有一个名为
INDEX.HTM
的网页文件。- 它会重定向到树莓派 Pico 的入门页面。
- 选择
MicroPython
的标签,观看官方的入门步骤,有一步会要求你下载一个UF2 文件
。 - 将刚才下载的文件拖入
RPI-RP2
驱动器中,驱动器会消失,此时 Pico 会自动以MicroPython 模式
启动。
- 此时查看你的 Thonny IDE 右下角的 Python 版本的位置,点击应该有一个
MicroPython
的选项。选择之后命令行会输出形如:MicroPython v1.19.1-891-g8d9a7fd22 on 2023-02-23; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>>
的提示性文字,表示你的 Thonny 已经连接到 Pico。
- 你可以输入
print("Hello Pico")
来测试,可以看到输出了对应文字,而且这是 pico 做的。 - 在上面的文本编辑器中输入代码
print("Hello Pico")
并保存为.py
文件,如Hello.py
。此时一个给 pico 运行的脚本就创建成功了。你可以保存在电脑或 pico 上,尝试保存在 pico 中。 - 保存后,点击 “运行” 按钮就可以查看运行结果。
I/O 功能 - 输出
作为一个单片机,引脚的输出是最基本的功能。所幸 pico 上继承了一个 LED 与 25 引脚连接,我们不需要做任何焊接或接线就可以进行简单的 I/O 操作。从而学习如何进行基础的信号输出。
新建一个文件,写入如下代码并命名为例如 flush.py
的 Python 文件。之后点击运行观察板载 LED 的闪烁情况。
from machine import Pin
from utime import sleep
led = Pin(25, Pin.OUT)
while True:
led.value(1)
sleep(1)
led.value(0)
sleep(1)
可以看到:
- 基础的 I/O 操作库
machine
中的Pin
类为引脚控制类。 utime
库功能基本类似time
库。led.value(bool)
方法可以控制输出引脚输出的电平。- 常用的
led.toggle()
方法可以反转输出的电平信号,即高变低/低变高
。
因此上面的代码可也写为:
import machine
import utime
led = machine.Pin(25, machine.Pin.OUT)
while True:
led.toggle()
utime.sleep(1)
I/O 功能 - 输入
接下来进行按键的测试.
可以看到,使用 machine.Pin.IN
来指定引脚的工作状态为输入。并且在第三个参数的位置指定下降沿触发还是上升沿触发。
一定要说明第三个参数,如果不指明第三个参数,也就是不指明输入引脚的工作条件,那么判定会出一些位置的问题。
你可以尝试把注释掉的代码取消注释,之后运行查看运行结果。
from machine import Pin
import utime
button_D = Pin(15, Pin.IN, Pin.PULL_DOWN)
button_U = Pin(16, Pin.IN, Pin.PULL_UP)
# button = Pin(17, Pin.IN)
while True:
if button_U.value() == 0:
print("UP")
if button_D.value() == 1:
print("DOWN")
# if button.value() == 1:
# print("DEF DOWN")
# if button.value() == 0:
# print("DEF UP")
utime.sleep(0.25)
结合上一节的输出,你已经可以做到简单的按键控制或是传感器控制啦~
末尾闲言
可能是去年的实习写过教程,即使是这个网站里我给自己写的 “教程”,也不想一个章节的信息量过大,希望能点到为止,给学习者一个缓和的契机。
掌握了基础的输入输出之后,已经能解决大多数本科期间的课设了,可以说是实用性拉满。因此我想在这里中断一下,下一章 再进行有关 pi pico
更高级应用的内容。