方老师好 发表于 2022-8-23 11:23:07

【行空板】运动小助手,行空板陪你一起记录运动次数

本帖最后由 方老师好 于 2022-8-23 11:23 编辑

【行空板】运动小助手,行空板陪你一起记录运动次数
在日常锻炼过程中总是感觉很无聊,不能一直坚持下去?
在我运动的时候我经常在想,要是有一个机器人能够实时记录我的运动次数,在做完之后给我鼓励,还能根据我自己的需求调整运动目标那该多好啊!

行空板是一个非常强大的工具,我们可以通过其结合其他传感器实现日常生活中很多的创意作品,让我们一起来看一下吧。

我们通过一个行空板,碰撞模块,来实现一个运动记录屏。

任务目标

使用行空板来记录腹肌轮运动的次数,并可以设定运动次数,过程之中实时显示剩余次数,显示有趣的表情。完成之后给予提示和鼓励。


知识点

1、认识碰撞模块

2、学习使用Pinpong库控制碰撞模块

3、了解行空板GUI显示方法

4、学习使用行空板GUI制作界面

5、学习使用pingpong库初始化引脚

6、学习使用行空板自带按钮

7、学习if语句和循环语句进行实时显示运动次数

材料清单

硬件清单:




软件使用:Mind+编程软件x1


知识储备

1、什么是碰撞模块

是一款微动碰撞开关。该碰撞传感器采用惯性式机械结构,端口兼容传感器扩展板,用于碰撞检测、限位等。



2、Pinpong库连接引脚记录碰撞开关是否按下

Pinpong库from pinpong.board import Board,Pin # 导入Pinpong库
Board("UNIHIKER").begin() #初始化,选择板型,不输入板型则进行自动识别
pin1 = Pin(Pin.P24, Pin.IN)
if pin1.read_digital()==0:
    #这时碰撞模块已经按下,执行相应的操作
else:
    #这时没有按下,执行相应的操作

其中“P24”指的是板子上碰撞版块所连接的引脚,“pin1=Pin(Pin.P24,Pin.In)”是将24号引脚以数字输入的方式输入,这时我们通过pin1.read_digital( )方法检测被按下的时候数字是多少(数字输入只有0和1)。

3、什么是行空板的GUI


行空板作为一个python学习工具,有一个专门的unhiker第三方库,自带了一套适配行空板显示界面的方法。具体教程可以参考以下链接:
https://mc.dfrobot.com.cn/thread-312557-1-1.html


4、如何设置运动目标、并实时更新运动数据

首先要根据实际运动设定目标值,比如在本项目中我设定了两个模式,简单模式(目标20个)和困难模式(目标50个),现在就可以用两个变量保存
首先要根据实际运动设定目标值,比如在本项目中我设定了两个模式,简单模式(目标20个)和困难模式(目标50个),现在就可以用两个变量保存。sport_goal1=20sport_goal2=50在按下确认选择按钮之后,还需要一个变量cur_sport #现在的运动目标
利用这三个现有的变量,就可以结合行空板自带的按钮实现之后的操作。
if button_a.is_pressed()==True:
      cur_sport=sport_goal1
      text_sport.config(text ="开始")if button_b.is_pressed()==True:
      cur_sport=sport_goal2
      text_sport.config(text ="开始")
以上代码就可以实现按下A键,将当前的运动模式设定为goal1(简单模式),当按下B键,将当前的运动模式设定为goal2(复杂模式)if cur_sport-count==0:
      text_sport.config(text = "恭喜你完成",font_size=20)
      time.sleep(2)
      break

以上代码可以实现,当碰撞模块受到碰撞时,记录的变量增加1,并且把文本实时更新。当完成目标之后,就提示“恭喜你完成”。

5、完善程序,增加趣味性。

[*]    if 0.6*cur_sport<=cur_sport-count<=0.8*cur_sport:
[*]      emj1.config(emoji="Nerve")
[*]    elif 0.4*cur_sport<=cur_sport-count<0.6*cur_sport:
[*]      emj1.config(emoji="Sweat")
[*]    elif 0<=cur_sport-count<0.4*cur_sport:
[*]      emj1.config(emoji="Angry")

复制代码以上程序可以根据完成总量,来变化显示的表情。

6、以下是完整的代码

[*]
[*]from unihiker import GUI   # 导入unihiker库中的GUI模块
[*]import time# 导入time库
[*]from pinpong.extension.unihiker import *
[*]from pinpong.board import Board,Pin
[*]
[*]
[*]Board().begin()
[*]gui = GUI()# 实例化GUI类,创建gui对象
[*]
[*]
[*]# 显示填充矩形
[*]gui.fill_rect(x=75, y=30, w=90, h=30, color="#00ff00") # 显示第一个填充矩形
[*]gui.fill_rect(x=0, y=70, w=240, h=30, color="#00ff00") # 显示第二个填充矩形
[*]gui.fill_rect(x=50, y=170, w=150, h=120, color="#00ff00") # 显示第二个填充矩形
[*]
[*]# 显示文字
[*]text1 = gui.draw_text(x=120, y=30, text='运动助手:', origin = 'top')
[*]text2 = gui.draw_text(x=120, y=70, text='请按A\B选择模式', origin = 'top')
[*]text3 = gui.draw_text(x=120, y=100, text='A简单,B困难', origin = 'top')
[*]text_sport = gui.draw_text(x=120, y=180, text='', font_size=60, origin = 'top') # 显示此模式的次数
[*]
[*]# 显示表情
[*]emj1 = gui.draw_emoji(x=82, y=120, w=100, h=100, emoji="Smile", duration=0.1) # 显示初始表情
[*]
[*]#运动次数
[*]sport_goal1=20
[*]sport_goal2=50
[*]cur_sport=0
[*]pin1 = Pin(Pin.P24, Pin.IN)
[*]count = -1
[*]
[*]
[*]while True:
[*]    if button_a.is_pressed()==True:
[*]      cur_sport=sport_goal1
[*]      text_sport.config(text ="开始")
[*]      time.sleep(0.5)
[*]      text_sport.config(text = cur_sport)
[*]
[*]    if button_b.is_pressed()==True:
[*]      cur_sport=sport_goal2
[*]      text_sport.config(text ="开始")
[*]      time.sleep(0.5)
[*]      text_sport.config(text = cur_sport)
[*]
[*]    if (pin1.read_digital() == 0):
[*]      count=count+1
[*]      text_sport.config(text = cur_sport-count)
[*]      time.sleep(0.5)
[*]
[*]    if 0.6*cur_sport<=cur_sport-count<=0.8*cur_sport:
[*]      emj1.config(emoji="Nerve")
[*]    elif 0.4*cur_sport<=cur_sport-count<0.6*cur_sport:
[*]      emj1.config(emoji="Sweat")
[*]    elif 0<=cur_sport-count<0.4*cur_sport:
[*]      emj1.config(emoji="Angry")
[*]
[*]    if cur_sport-count==0:
[*]      text_sport.config(text = "恭喜你完成",font_size=20)
[*]      time.sleep(2)
[*]      break
[*]
[*]    time.sleep(0.1) # delay 0.1 秒

复制代码7、视频演示
https://www.bilibili.com/video/BV1wW4y187v4/?vd_source=eddeae8ee781cfa76a08f5539ab14cf1






小企鹅 发表于 2022-8-23 15:46:31

厉害厉害
页: [1]
查看完整版本: 【行空板】运动小助手,行空板陪你一起记录运动次数