Arduino计时器使用TM1637显示时间

本文介绍如何使用Arduino制作计时器,并使用TM1637显示时间。计时器使用2个GPIO接口作为启动计时和停止计时的按键,并要求计时精度达到0.01秒。

所需材料

  • Arduino开发板
  • TM1637显示屏
  • 2个按键
  • 杜邦线

接线说明

将TM1637显示屏的CLK、DIO引脚分别连接至Arduino的数字13、数字12引脚上。将启动计时按键接至数字2引脚上,将停止计时按键接至数字3引脚上。

代码实现

首先需要引入TM1637库,可以在Arduino IDE中搜索安装。为了计时精度达到0.01秒,我们需要使用Arduino的定时器功能。具体代码实现如下:

#include <TM1637Display.h>#define CLK 13
#define DIO 12
#define startPin 2
#define stopPin 3TM1637Display display(CLK, DIO);
volatile bool timing = false;
volatile unsigned long startTime = 0;
volatile unsigned long stopTime = 0;
volatile unsigned long elapsedTime = 0;void startTimer() {startTime = millis();timing = true;
}void stopTimer() {stopTime = millis();timing = false;elapsedTime = stopTime - startTime;
}void setup() {pinMode(startPin, INPUT_PULLUP);pinMode(stopPin, INPUT_PULLUP);display.setBrightness(0x0f);
}void loop() {if (digitalRead(startPin) == LOW) {startTimer();}if (digitalRead(stopPin) == LOW) {stopTimer();}if (timing) {elapsedTime = millis() - startTime;}int seconds = elapsedTime / 1000;int milliseconds = (elapsedTime % 1000) / 10;int displayValue = seconds * 100 + milliseconds;display.showNumberDec(displayValue, true);
}

在程序中,我们定义了CLK、DIO、startPin、stopPin等引脚。使用TM1637Display库初始化显示屏,在setup()函数中设置启动计时和停止计时按键的引脚模式为INPUT_PULLUP。

在loop()函数中,通过digitalRead()函数获取按键状态,如果启动计时按键按下,则使用startTimer()函数记录当前时间为计时开始时间。如果停止计时按键按下,则使用stopTimer()函数记录当前时间为计时结束时间,并将timing标记为false,计时结束。如果计时中,使用elapsedTime变量记录当前时间与计时开始时间之间的时间差,并计算显示在TM1637屏幕上的时间。

总结

通过本文的介绍,读者可以了解如何使用Arduino和TM1637制作计时器,并精度达到0.01秒。读者可以参考本文代码实现,并根据自己的需求进行修改和扩展。

【Arduino计时器】Arduino计时器使用TM1637显示时间相关推荐

  1. ESP8266读取网络时间TM1637显示时间

    ESP8266读取网络时间TM1637显示时间 // change next line to use with another board/shield #include <ESP8266WiF ...

  2. 8086汇编语言实现8253计时器对时且实时定点显示时间(全注释)

    作为微机原理终极大作业的一部分,个人感觉这个模块是最难的,花了我一个晚上+一个上午.因为有计时中断,也没办法开调试,Debug难度上了一个新高度,而且有时代码一点没动,运行的结果还不一样,甚至会闪退卡 ...

  3. Arduino UNO驱动TM1637四位时钟数码管显示时间

    Arduino UNO驱动TM1637四位时钟数码管显示时间 一.TM1637简介 二.引脚定义 三.Arduino UNO与数码管模块接线 四.测试代码 五.实验结果 一.TM1637简介 TM16 ...

  4. Arduino实时时钟设计(TM1637数码管显示)

    设计者:STCode(公众号同名) 1.实时时钟功能介绍 该设计利用DS1302获取时间数据,用4位led数码管显示模块显示当前的年月日信息,并且设计有一个按键,可以切换时间数据. 2. 使用主要器件 ...

  5. C语言电子闹钟(显示时间、计时器、闹钟、倒计时、世界时钟)C语言大作业

    #include <stdio.h> #include <time.h> //时间函数 #include <conio.h> //字符模式函数 #include & ...

  6. ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示

    ESP32基于Arduino框架下U8g2驱动I2C OLED时间显示

  7. 二、ESP32基于Arduino IDE OLED 联网显示时间

    上一篇学习笔记讲了如何在Arduino上配置ESP32开发环境,这次分享一下如何让ESP32联网获取时间再通过OLED来显示.此系列文章都是学习笔记,希望能有所帮助. ps:代码中调用的库如需要可在在 ...

  8. 用2553单片机实现按键倒计时响铃,用TM1637显示倒计时时间

    由于个人原因近期都没有更新博客了,现在更新一篇关于单片机的入门级的功能实现. 具体要求如下: 实现由2553单片机按键按下,实现开启给定时间的倒计时,在定时结束后蜂鸣器开始响铃.倒计时的时间实现由TM ...

  9. Arduino ESP32 通过getString方法获取网络时间和气象数据

    Arduino ESP32-通过getString方法获取网络时间和气象数据 国家气象数据API接口:http://www.weather.com.cn/data/sk/101010100.html ...

最新文章

  1. Delphi 2010 安装及调试
  2. KafkaConsumer 长时间地在poll(long )方法中阻塞
  3. 专家解读EdgeRoutine边缘程序
  4. 牛客题霸 两数之和C++题解/答案
  5. ajax获取qq音乐源码,ajax请求QQ音乐
  6. 开源开放 | 多模态实体链接数据集MELBench(CCKS2021)
  7. Mybatis高级应用 整合Ehcache
  8. 修改定时任务不重启项目,SpringBoot如何实现?
  9. i3处理器_英特尔低端霸主酷睿I3处理器又降10元!机器怎么配?为粉丝答疑
  10. hdu2369 Broken Keyboard(类似dfs)
  11. 拿到窗口ID,为什么画的内容没有显示出来
  12. paip.提升性能----SQL优化总结
  13. flex学习笔记 数据验证
  14. oracle pmon andsmon,SMON and PMON
  15. 互联网赚钱要有自己的核心思想,我为自己的分秒挣赚软件网创事业代言
  16. 边缘计算研究热点地图
  17. sin35 在C语言中怎么表示,sin35度等于多少
  18. socket网络编程 poll的简单用法
  19. windows系统切换用户(通过cmd切换用户)
  20. vue 数组中的元素 渲染到一行

热门文章

  1. 复杂验证码生成器【原创】
  2. 大家应该都用过SVN,多个小组开发时,分小组提交代码,可是有特殊情况的,小组要穿插提交增量文件,该怎么做呢?SVN补丁是一种能导出变更增量的方法。...
  3. kiss原则包括什么_KISS原则以及介绍
  4. python上位机开发经验总结01
  5. 开发人员看测试之TDD和BDD
  6. 解决Windows资源保护找到了损坏文件但无法修复的问题
  7. 【老生谈算法】matlab绘制心形曲线的程序源码——心形曲线
  8. Ghost博客手动搭建
  9. 宝塔连接服务器失败问题
  10. iphone 的屏幕像素