回到顶部 回到顶部
best-icon

#宅家#+瓶盖投壶 简单

头像 gray6666 2022.05.22 1253 2

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

project-image

材料清单

  • 行空板 X1
  • 声音传感器 X1
  • 录音模块 X1
  • W2812灯带 X1

步骤1 项目思路

project-image

步骤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口连接录音模块

project-image

上传测试

project-image

步骤4 制作外壳

project-image
project-image
project-image

步骤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) 

评论

user-avatar
  • ASH腻

    ASH腻2022.09.29

    哈哈哈哈这个好厉害

    0
    • 云天

      云天2022.05.24

      好创意,赞!赞!赞!

      0