疫情封闭在家,作为一个创客绝对不可以躺平。吃饱喝足之后,用积攒下来的瓶盖,肯德基食盒,外加主角行空板,制作一款瓶盖投壶的锻炼神器,既可以让你动起来,又可以练习眼力,还能锻炼机体协调力。
材料清单
- 行空板 X1
- 声音传感器 X1
- 录音模块 X1
- W2812灯带 X1
步骤1 项目思路
步骤2 代码编辑
Thonny编辑器,行空板好基友
1.导入unihiker库和pinpong库
from unihiker import GUI # 导入unihiker库中的GUI模块
import time
from pinpong.board import Board,Pin,NeoPixel#导入pinpong库
2.初始化
Board().begin()#初始化
gui = GUI() # 实例化GUI类,创建gui对象
# ADC模拟输入引脚支持: P0 P1 P2 P3 P4 P10 P21 P22
#adc21 = ADC(Pin(Pin.P21)) #将Pin传入ADC中实现模拟输入 模拟输入方法1
adc21 = Pin(Pin.P21, Pin.ANALOG) #引脚初始化为电平输出 模拟输入方法2
sound23 = Pin(Pin.P23, Pin.OUT) #引脚初始化为电平输出模式,P23为录音模块控制
NEOPIXEL_PIN = Pin(Pin.D22)#定义灯带
PIXELS_NUM = 7 #灯数
np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
3.制作灯带亮和熄灭程序
def LED8212():
for i in range(7):
np[i] = (0, 0 ,255)
time.sleep(0.3)
for i in range(7):
np[i] = (0, 0 ,0)
time.sleep(0.3)
4.行空板屏幕初始化
text1 = gui.draw_text(x=120, y=30, text='在家投壶不躺平', origin = 'top') # 显示文字“在家投壶战新冠”
text2 = gui.draw_text(x=120, y=80, text='身强体壮战新冠', origin = 'top') # 显示文字“身强体壮战新冠”
# 显示表情
emj1 = gui.draw_emoji(x=82, y=90, w=100, h=100, emoji="Sleep", duration=0.1) # 显示初始表情
5.主程序
while True:
v = adc21.read_analog() #读取A0口模拟信号数值
print("P21=", v)
time.sleep(0.3)
if v>300:
emj1.config(emoji= "Smile") # config“Smile”表情
sound23.value(1) #输出高电平 方法2
LED8212()#灯带闪烁
time.sleep(0.3) #等待1秒
else:
emj1.config(emoji= "Sleep") # config“Smile”表情
sound23.value(0) #输出低电平 方法2
time.sleep(0.3)
步骤3 硬件连接
行空板
21端口连接声音传感器
22口连接灯带
23口连接录音模块
上传测试
步骤4 制作外壳
步骤5 整体测试
from unihiker import GUI # 导入unihiker库中的GUI模块
import time
from pinpong.board import Board,Pin,NeoPixel#导入pinpong库
Board().begin()#初始化
gui = GUI() # 实例化GUI类,创建gui对象
# ADC模拟输入引脚支持: P0 P1 P2 P3 P4 P10 P21 P22
#adc21 = ADC(Pin(Pin.P21)) #将Pin传入ADC中实现模拟输入 模拟输入方法1
adc21 = Pin(Pin.P21, Pin.ANALOG) #引脚初始化为电平输出 模拟输入方法2
sound23 = Pin(Pin.P23, Pin.OUT) #引脚初始化为电平输出模式,P23为录音模块控制
NEOPIXEL_PIN = Pin(Pin.D22)#定义灯带
PIXELS_NUM = 7 #灯数
np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
def LED8212():
for i in range(7):
np[i] = (0, 0 ,255)
time.sleep(0.3)
for i in range(7):
np[i] = (0, 0 ,0)
time.sleep(0.3)
text1 = gui.draw_text(x=120, y=30, text='在家投壶不躺平', origin = 'top') # 显示文字“在家投壶战新冠,身强体壮百病消”
text2 = gui.draw_text(x=120, y=80, text='身强体壮战新冠', origin = 'top') # 显示文字“在家投壶战新冠,身强体壮百病消”
# 显示表情
emj1 = gui.draw_emoji(x=82, y=90, w=100, h=100, emoji="Sleep", duration=0.1) # 显示初始表情
while True:
v = adc21.read_analog() #读取A0口模拟信号数值
print("P21=", v)
time.sleep(0.3)
if v>300:
emj1.config(emoji= "Smile") # config“Smile”表情
sound23.value(1) #输出高电平 方法2
LED8212()#灯带闪烁
time.sleep(0.3) #等待1秒
else:
emj1.config(emoji= "Sleep") # config“Smile”表情
sound23.value(0) #输出低电平 方法2
time.sleep(0.3)
三春牛-创客2023.02.02
赞
三春牛-创客2023.02.02
厉害
ASH腻2022.09.29
哈哈哈哈这个好厉害
云天2022.05.24
好创意,赞!赞!赞!