【项目背景】
可以在小区内活动时,我们一定要出去锻炼,小区的活动范围小,一圈的距离短,骑车比较枯燥。自己做了一个“行车记速仪”。
【项目设计】
使用“行空板”加上“霍尔传感器”,记录骑行速度、骑行里程、完成设定里程进度、骑行时间。
【硬件安装】
1、安装永磁铁
2、安装霍尔传感器
3、布线
4、安装行空板
【编写程序】
使用Mind+行空板专用版。
1、行空板界面初始化
2、设定初始值
根据车轮半径计算车轮周长,以此值来计算骑行里程和骑行速度。
3、使用中断来判断转圈数和转一圈的时间
使用引脚24连接霍尔传感器,利用上升沿引发中断。
4、A、B键设置预设里程数
4、点击按钮启动
5、时钟计时
6、实时更新数据
7、完整程序
【实地测试】
【测试视频】
【Python代码】
代码
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import GUI
import pygame
import 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 = 0
CheSu = 0
LiCheng = 0
SheDingLiCheng = 0
QuanZhouChang = ((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 = 0
Shi = 0
Fen = 0
Miao = 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)
三春牛-创客2023.02.01
赞
三春牛-创客2023.02.01
厉害