点击 蘑菇云创造 关注我们
【项目背景】
可以在小区内活动时,我们一定要出去锻炼,小区的活动范围小,一圈的距离短,骑车比较枯燥。自己做了一个“行车记速仪”。
【项目设计】
使用“行空板”加上“霍尔传感器”,记录骑行速度、骑行里程、完成设定里程进度、骑行时间。
【硬件安装】
1、安装永磁铁
2、安装霍尔传感器
3、布线
4、安装行空板
【编写程序】
使用Mind+行空板专用版。
1、行空板界面初始化
2、设定初始值
根据车轮半径计算车轮周长,以此值来计算骑行里程和骑行速度。
3、使用中断来判断转圈数和转一圈的时间
使用引脚24连接霍尔传感器,利用上升沿引发中断。
4、A、B键设置预设里程数
5、点击按钮启动
6、时钟计时
7、实时更新数据
8、完整程序
【实地测试】
【测试视频】
Python代码
# -*- coding: UTF-8 -*-# MindPlus# Pythonfrom pinpong.extension.unihiker import *from pinpong.board import Board,Pinfrom unihiker import GUIimport pygameimport time# 事件回调函数def button_click1():global JiSuBiaoShiif (JiSuBiaoShi == 0):JiSuBiaoShi = 1开始按钮.config(text="停止计速")else:QuanShu = 0JiSuBiaoShi = 0开始按钮.config(text="开始计速")def on_buttona_click_callback():buzzer.play(buzzer.BA_DING,buzzer.Once)global SheDingLiChengSheDingLiCheng = (SheDingLiCheng + 1)里程设定值.config(text=SheDingLiCheng)def on_buttonb_click_callback():buzzer.play(buzzer.BA_DING,buzzer.Once)global SheDingLiChengif (SheDingLiCheng > 0):SheDingLiCheng = (SheDingLiCheng - 1)里程设定值.config(text=SheDingLiCheng)def event(pin):global QuanShuglobal CheSuglobal QuanZhouChangglobal JinXingShiJianglobal LiChengQuanShu = (QuanShu + 1)CheSu = round(((QuanZhouChang / (pygame.time.get_ticks() - JinXingShiJian)) * 3600),2)LiCheng = round(((QuanZhouChang * QuanShu) / 1000),2)JinXingShiJian = pygame.time.get_ticks()Board().begin()u_gui=GUI()pygame.init()u_gui.on_a_click(on_buttona_click_callback)u_gui.on_b_click(on_buttonb_click_callback)HuoEr = Pin((Pin.P24))HuoEr.irq(trigger=Pin.IRQ_RISING, handler=event)JiSuBiaoShi = 0CheSu = 0LiCheng = 0SheDingLiCheng = 0QuanZhouChang = ((2 * 3.1415926) * 0.25)QuanShu = 0里程标签=u_gui.draw_text(text="里程:",x=0,y=0,font_size=20, color="#0000FF")里程显示=u_gui.draw_digit(text="",x=120,y=10,font_size=20, color="#FF6600")车速标签=u_gui.draw_text(text="车速:",x=0,y=45,font_size=20, color="#0000FF")车速显示=u_gui.draw_digit(text="",x=120,y=55,font_size=20, color="#FF0000")里程进度=u_gui.fill_rect(x=0,y=110,w=0,h=10,color="#FFFF00")里程设定值=u_gui.draw_text(text="0",x=115,y=105,font_size=20, color="#CC33CC")开始按钮=u_gui.add_button(text="开始计速",x=70,y=150,w=100,h=45,onclick=button_click1)时钟=u_gui.fill_clock(x=120,y=260,r=50,color="#00FF00",fill_color="#0000FF")开始按钮.config(onclick=button_click1)JinXingShiJian = 0Shi = 0Fen = 0Miao = 0while True:time.sleep(1)时钟.config(h=Shi,m=Fen,s=Miao)Miao = (Miao + 1)if (Miao == 60):Miao = 0Fen = (Fen + 1)if (Fen == 60):Fen = 0Shi = (Shi + 1)if (Shi == 24):Shi = 0if (JiSuBiaoShi == 1):if (LiCheng > SheDingLiCheng):里程进度.config(w=240)else:里程进度.config(w=((LiCheng / SheDingLiCheng) * 240))里程显示.config(text=LiCheng)车速显示.config(text=CheSu)
本文来源:DF创客社区
作者:云天
推荐阅读:

