大数跨境
0
0

行空板行车记速仪

行空板行车记速仪 蘑菇云创造
2022-06-09
2
导读:自己做了一个“行车记速仪”~

点击 蘑菇云创造 关注我们


【项目背景】

可以在小区内活动时,我们一定要出去锻炼,小区的活动范围小,一圈的距离短,骑车比较枯燥。自己做了一个“行车记速仪”。



【项目设计】

使用“行空板”加上“霍尔传感器”,记录骑行速度、骑行里程、完成设定里程进度、骑行时间。



【硬件安装】

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 JiSuBiaoShi if (JiSuBiaoShi == 0): JiSuBiaoShi = 1 开始按钮.config(text="停止计速") else: QuanShu = 0 JiSuBiaoShi = 0 开始按钮.config(text="开始计速")def on_buttona_click_callback(): buzzer.play(buzzer.BA_DING,buzzer.Once) global SheDingLiCheng SheDingLiCheng = (SheDingLiCheng + 1) 里程设定值.config(text=SheDingLiCheng)def on_buttonb_click_callback(): buzzer.play(buzzer.BA_DING,buzzer.Once) global SheDingLiCheng if (SheDingLiCheng > 0): SheDingLiCheng = (SheDingLiCheng - 1) 里程设定值.config(text=SheDingLiCheng)def event(pin): global QuanShu global CheSu global QuanZhouChang global JinXingShiJian global LiCheng QuanShu = (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 = 0
while True: time.sleep(1) 时钟.config(h=Shi,m=Fen,s=Miao) Miao = (Miao + 1) if (Miao == 60): Miao = 0 Fen = (Fen + 1) if (Fen == 60): Fen = 0 Shi = (Shi + 1) if (Shi == 24): Shi = 0 if (JiSuBiaoShi == 1): if (LiCheng > SheDingLiCheng): 里程进度.config(w=240) else: 里程进度.config(w=((LiCheng / SheDingLiCheng) * 240)) 里程显示.config(text=LiCheng) 车速显示.config(text=CheSu)


本文来源:DF创客社区

作者:云天







推荐阅读:


【声明】内容源于网络
0
0
蘑菇云创造
蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
内容 969
粉丝 0
蘑菇云创造 蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
总阅读1.9k
粉丝0
内容969