所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

#宅家#+瓶盖投壶

gray6666 gray6666 2022-05-22 20:42:28

疫情封闭在家,作为一个创客绝对不可以躺平。吃饱喝足之后,用积攒下来的瓶盖,肯德基食盒,外加主角行空板,制作一款瓶盖投壶的锻炼神器,既可以让你动起来,又可以练习眼力,还能锻炼机体协调力。

projectImage
材料清单 材料清单
1x
行空板
1x
声音传感器
1x
录音模块
1x
W2812灯带
步骤1 步骤1
项目思路
projectImage
步骤2 步骤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 步骤3
硬件连接

行空板

21端口连接声音传感器

22口连接灯带

23口连接录音模块

projectImage

上传测试

projectImage
步骤4 步骤4
制作外壳
projectImage
projectImage
projectImage
步骤5 步骤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) 

	                    				
Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]