玩转硬件之Micro:bit的玩法(二) —— 秒表

news2024/11/29 18:42:37

秒表是一种计时器,用于测量时间间隔的工具。它通常具有一个数字显示屏和一个或多个按钮,用于开始、停止和重置计时器。秒表可以精确地测量时间,通常以秒为单位,但有些也可以测量毫秒或微秒。它们被广泛用于体育比赛、科学实验、工业生产和其他需要精确计时的应用中。

那我们看看某宝卖的秒表长什么样?

别说还挺好看,但你有见过这种的吗?

说实话,不是很好看,但是它可以让你真切感受到秒表制作就是这么简单。

单片机制作秒表的原理如下:
  1. 硬件设计:需要一个计时器/计数器模块、一个显示模块和一个按键模块。计时器/计数器模块用于计时,显示模块用于显示计时结果,按键模块用于控制启动、停止和复位操作。

  2. 软件设计:通过编程控制单片机的IO口和计时器/计数器模块,实现秒表的功能。

具体步骤如下:

  1. 初始化:设置计时器/计数器模块为计数模式,配置计数器的计数频率。

  2. 按键检测:通过按键模块检测启动、停止和复位按钮的状态。

  3. 启动计时:当按下启动按钮时,开始计时器/计数器的计数。

  4. 停止计时:当按下停止按钮时,停止计时器/计数器的计数。

  5. 复位计时:当按下复位按钮时,将计时器/计数器的计数值清零。

  6. 显示计时结果:通过显示模块将计时器/计数器的计数值显示出来。

  7. 循环执行:重复执行2-6步,实现秒表的持续计时功能。

通过以上步骤,单片机可以实现秒表的功能。

以上看起来有点复杂,但是使用Micro:bit,这一切就很Easy。

Step 1 当按钮A被按下时

Step 2 增加一个变量用来存储运行时间

Step 3 增加一个模块,当按钮B被按下时

Step 4 再增加一个变量用来存储经过了多少时间

Step 5 将该变量的单位变为"秒"

保存,然后运行,可以看到按钮A按下时,秒表开始计时,当按钮B按下时,显示一共经过了多少秒。

附上Javscript的代码:

let start = 0
let elpased = 0
input.onButtonPressed(Button.A, function () {
    start = input.runningTime()
})
input.onButtonPressed(Button.B, function () {
    elpased = input.runningTime() - start
    basic.showNumber(elpased / 1000)
})

附上Python的代码:

start = 0
elpased = 0

def on_button_pressed_a():
    global start
    start = input.running_time()
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_b():
    global elpased
    elpased = input.running_time() - start
    basic.show_number(elpased / 1000)
input.on_button_pressed(Button.B, on_button_pressed_b)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZYNQ实验---IQ调制实现SSB PART2

一、前言 本文实验在ZYNQ实验—IQ调制实现SSB PART1的基础上进行优化完善。 下图为IQ调制实现SSB PART1中设想实现设计框图 该图设计存在的几个问题: PC-PS的UDP传输存在丢包中断控制发包实际不适合流数据的传输采用的BRAM模块可以存储的空间较小,PC…

C++ 赋值运算重载,const成员,取地址及const取地址操作符重载

C 赋值运算重载,const成员,取地址及const取地址操作符重载 1. 赋值运算符重载1.1 运算符重载1.2 赋值运算符重载1.3 前置/--和后置/--重载 2. const成员3. 取地址及const取地址操作符重载 所属专栏:C“嘎嘎" 系统学习❤️ 🚀…

智慧灌溉平台

1.知识百科 智慧灌溉是运用物联网、云计算、大数据等新一代信息技术,结合农业生产的实际需求,通过传感器采集土壤温湿度、光照强度等信息,利用无线传感网络传输到中央控制系统进行智能控制。智慧灌溉系统由传感器(水位传感器&…

解决关于“由于找不到vcruntime140.dll无法继续执行代码”的问题

今天,我就来谈谈关于“由于找不到vcruntime140.dll无法继续执行代码”的问题,为大家提供4个解决方案。希望我的经验和见解能对大家有所帮助。 首先,我们要明确什么是vcruntime140.dll。简单来说,它是一个动态链接库文件&#xff…

进口跨境商城源码:高效、安全、可扩展的电商平台解决方案

电子商务的兴起为跨境贸易提供了前所未有的机会和挑战。在这个全球化的时代,跨境电商平台成为许多企业进军国际市场的首选。然而,搭建一个高效、安全、可扩展的进口跨境商城并非易事。 1. 解决方案概述 我们推出的 "进口跨境商城源码" 提供了一…

3-性能分析-android-基于Choreographer渲染机制详解

3-性能分析-android-基于Choreographer渲染机制详解 一:主线程运行机制的本质1> 引入 Vsync 之前2> 引入 Choreographer二: Choreographer 简介1> 从 Systrace 的角度来看 Choreogrepher 的工作流程2> Choreographer 的工作流程三:Choreographer 处理一帧的逻辑…

【AI视野·今日Sound 声学论文速览 第三十二期】Tue, 24 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 24 Oct 2023 Totally 20 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚nvas3d, 基于任意录音和室内3D信息合成重建不同听角(位置)处的新的声音。(from apple cmu) website: htt…

CMake基础【学习笔记(八)】

声明此博客为转载 CMake基础 文章目录 CMake基础一、准备知识1.1 C的编译过程1.2 静态链接库和动态链接库1.3 为什么需要CMake1.3.1 g 命令行编译1.3.2 CMake简介 二、CMake基础知识2.1 安装2.2 第一个CMake例子2.3 语法基础2.3.1 指定版本2.3.2 设置项目2.3.3 添加可执行文件…

Python画图之皮卡丘

Python-turtle画出皮卡丘(有趣小游戏) 一、效果图二、Python代码 一、效果图 二、Python代码 import turtledef getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensi…

小样本分割的新视角,Learning What Not to Segment【CVPR 2022】

论文地址:Excellent-Paper-For-Daily-Reading/image-segmentation at main 类别:图像分割 时间:2023/11/01 摘要 目前背景:少样本分割 (FSS) 得到了广泛的发展。以前的大多数工作都在努力通过分类任务衍…

Linux C语言进阶-D5~D6指针及指针的运算

指针好处: 使程序更加间接、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值 在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为指针变量 在不影响理解的情况下,对地址、指…

gRPC之grpcui界面工具

1、grpcui界面工具 简单的说,就是gRPC中的postman,grpcui官方地址:https://github.com/fullstorydev/grpcui。 1.1 安装 go get -u github.com/fullstorydev/grpcui go install github.com/fullstorydev/grpcui/cmd/grpcuiv1.2.0[rootzsx …

VueX介绍和工作原理

一、VueX的作用 VueX就是在Vue中专门集中地管理数据的一个Vue插件。 在VueX中的数据不属于任何一个组件,所有的组价都可以访问和修改这个数据。 因此,当我们的多个组件依赖同一个状态(如用户信息)时,就可以使用VueX…

【Tomcat Servlet】如何在idea上部署一个maven项目?

目录 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署项目 7.验证程序 什么是Tomcat和Servlet? 以idea2019为例: 1.创建项目 1.1 首先创建maven项目 1.2 项目名称 2.引入依赖 2.1 网址输入mvnrepository.com进入maven中央仓库->地址…

Docker 学习路线 9:运行容器

要启动一个新的容器,我们使用 docker run 命令,后跟镜像名称。基本语法如下: docker run [选项] 镜像 [COMMAND] [ARG...] 例如,要运行官方的 Nginx 镜像,我们可以使用: docker run -d -p 8080:80 nginx…

Qt5 安装 phonon

Qt5 安装 phonon Qt5 安装 phonon问题描述安装组件 Qt5 安装 phonon 开发环境:Qt Creator 4.6.2 Based on Qt 5.9.6 问题描述 在运行 Qt5 项目时,显示错误: error: Unknown module(s) in QT: phonon这是缺少组件的原因,QT: pho…

MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发

MT6983天玑9000采用台积电4纳米工艺制程,CPU采用“134”三丛集Armv9架构,APU性能提升,ISP处理速度提升,最高支持3.2亿像素摄像头,采用Mali-G710十核GPU,搭载R16 5G调制解调器。 MT6983天玑9000芯片基本概…

吴恩达《机器学习》4-1->4-5:多变量线性回归

一、引入多维特征 在多维特征中,我们考虑的不再是单一的特征,而是一组特征,例如房价模型中可能包括房间数、楼层等多个特征。这些特征将组成一个向量,表示为(𝑥₁, 𝑥₂, . . . , 𝑥ₙ)&#x…

英语教育目标转变:更加注重实际应用能力培养

今年九月份,北京市教委发布了《关于深入推进高中阶段学校考试招生改革的实施意见》。按照该意见,北京市2024年初三年级学生的初中学业水平考试英语科目听力口语考试与笔试将分离,首次计算机考试将于2023年12月17日进行。 根据《意见》规定,听力口语计算机考试共有两次考试机会…

c++ 实现二叉搜索树

二叉搜索树的概念 二叉搜索树 (BST,Binary Search Tree),也称二叉排序树或二叉查找树。它要么是一颗空树,要么是满足以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为…