推文
在下面实验中,我们需要将 风雅一号板-七彩触控扩展板 插入到 风雅一号板-通用兼容扩展板 上:
在以下例程中,我们通过 Signal 类控制两个不同电路连接的 LED 灯,其中 GP17 连接的 LED 灯负极连接到了地,对应 GPIO 输出高电平点亮;而 GP16 连接的 LED 灯正极连接到了 +3V3,对应 GPIO 输出低电平点亮。我们通过 Signal 类来包装现有的 Pin 对象,最终实现通过相同方法控制 LED 灯的点亮。
代码如下:
C++
# Python env : MicroPython v1.23.0
# -*- coding: utf-8 -*-
# @Time : 2024/6/21 上午10:32
# @Author : 李清水
# @File : main.py
# @Description : Signal类实验,完成对两个不同电路连接的LED进行控制
# ======================================== 导入相关模块 ========================================
# 硬件相关的模块
from machine import Pin, Signal
# 时间相关的模块
import time
# ======================================== 全局变量 ============================================
# ======================================== 功能函数 ============================================
# ======================================== 自定义类 ============================================
# ======================================== 初始化配置 ==========================================
# 上电延时
time.sleep(3)
# 打印调试信息
print("FreakStudio : Signal Class Test")
# 设置GPIO 17为LED1(共阳极)输出引脚,下拉电阻使能
LED1_Pin = Pin(17, Pin.OUT, Pin.PULL_DOWN)
# 设置GPIO 16为LED2(共阴级)输出引脚,下拉电阻使能
LED2_Pin = Pin(16, Pin.OUT, Pin.PULL_DOWN)
# ======================================== 主程序 ============================================
# 不使用Signal类,直接使用Pin类时需要考虑外部电路的差异,输入不同电平来点亮LED灯
# LED1输入高电平点亮
LED1_Pin.value(1)
# LED2输入低电平点亮
LED2_Pin.value(0)
# 使用Signal类包装现有的Pin对象
# 对于LED1_Pin不使用反转,高电平-1、低电平-0
LED1 = Signal(LED1_Pin, invert=False)
# 对于LED2_Pin使用反转,高电平-0、低电平-1
LED2 = Signal(LED2_Pin, invert=True)
# 现在可以使用一个方法进行两个LED灯的点亮
LED1.on()
LED2.on()
# 等待5秒
time.sleep(5)
# 获取信号状态
print("LED 1 value :", LED1.value())
print("LED 2 value :", LED2.value())
# 获取引脚状态
print("LED1_Pin value :", LED1_Pin.value())
print("LED2_Pin value :", LED2_Pin.value())
# 关闭两个LED灯
LED1.off()
LED2.off()
# 等待1秒
time.sleep(1)
# 获取信号状态
print("LED 1 value :", LED1.value())
print("LED 2 value :", LED2.value())
# 获取引脚状态
print("LED1_Pin value :", LED1_Pin.value())
print("LED2_Pin value :", LED2_Pin.value())
烧录代码,打开终端,使用 mpremote 连接树莓派 Pico,可以看到输出如下:
我们可以看到 风雅一号板-七彩触控扩展板 上的 HIGHLED 和 LOWLED 先同时点亮,之后同时关闭: