Arduino-based-Countdown-Timer.jpg (54.03 KB, 下载次数: 86)

2018-4-18 17:18 上传

计时器是一种时钟形式,通常用于测量时间间隔。有两种类型的计时器,一种是从零开始向上计数,用于测量已用时间,称为秒表。而第二种类型的计时器从用户提供的指定持续时间倒计时,通常称为倒计时器。

在本教程中,我们将向您展示如何使用Arduino开发板制作一个倒计时器。在本文中,我们没有使用任何实时时钟(RTC)模块来获取时间。持续时间由用户通过键盘和1602的LCD设定的。当计时器归零时,将会通过蜂鸣器发出警报声。

所需的材料

●    Arduino UNO开发板

●    LCD显示模块1602

●    4 * 4的矩阵键盘

●    蜂鸣器

●    按钮

●    电位器(10k)

●    电阻(10k、100欧)

●    连接导线

电路原理图

Arduino-based-Countdown-Timer-circuit-diagram.png (64.07 KB, 下载次数: 87)

2018-4-18 17:18 上传

在这里,Arduino Uno开发板用作主控制器。使用键盘来设定持续时间,以及LCD显示模块1602来显示倒计时。按钮用于启动定时。有关如何将Arduino开发板与4x4矩阵键盘进行连接,请参考:https://www.yiboard.com/thread-780-1-1.html。

代码和说明

在本文的末尾处,给出了完整的Arduino计时器代码。

在下面的代码中,我们正在初始化键盘和LCD的库以及代码中使用的变量。

#include

#include

long int set1;

long int set2;

long int set3;

long int set4;

long int j;

int t1, t2, t3, t4, t5, t6;

int r1, r2, r3;

char key;

String r[8];

String hours;

String minutes;

String seconds;复制代码

在下面的代码中,我们初始化行和列的数目,用于定义键盘矩阵。

const byte ROWS = 4; // Four rows

const byte COLS = 4; // Three columns

char keys[ROWS][COLS] = {

{'1','2','3','A'},

{'4','5','6','B'},

{'7','8','9','C'},

{'*','0','#','D'}

};复制代码

为了将连接4 * 4矩阵键盘与Arduino开发板进行连接,我们必须定义使用的行和列的引脚。所以在下面的代码中我们已经定义了键盘的引脚以及1602模块的引脚。

byte rowPins[ROWS] = { 6, 7, 8, 9 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins

byte colPins[COLS] = { 10, 11, 12, 13 };// Connect keypad COL0, COL1 and COL2 to t

LiquidCrystal lcd(A0, A1, 5, 4, 3, 2); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)复制代码

下面的代码用于声明一个keypad数组:

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );复制代码

在void setFeedingTime()函数中,按下按钮后,我们可以输入定时器的时间,然后在输入完成后,我们必须按下D开始倒计时。

void setFeedingTime()

{

feed = true;

int i=0;

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Set feeding Time");

lcd.clear();

lcd.print("HH:MM:SS");

lcd.setCursor(0,1);

while(1){

key = kpd.getKey();

char j;

if(key!=NO_KEY){

lcd.setCursor(j,1);

lcd.print(key);

r[i] = key-48;

i++;

j++;

if (j==2 || j == 5)

{

lcd.print(":"); j++;

}

delay(500);

}

if (key == 'D')

{key=0; break; }

}

lcd.clear();

}复制代码

在void setup()函数中,我们初始化了LCD和串行通信,并在下面的代码中将引脚定义为INPUT和OUTPUT。

void setup()

{

lcd.begin(16,2);

Serial.begin(9600);

pinMode(A0, OUTPUT);

pinMode(A1, OUTPUT);

pinMode(A3, INPUT);

pinMode(A4, OUTPUT);

}复制代码

这个Arduino倒计时器的工作原理很简单,但代码有点复杂。

最初,它会在LCD显示屏上打印输出“Arduino Timer”,直到您按下按钮。只要按下按钮,它会通过调用“setFeedingTime”函数来要求输入倒计时时间。然后你可以通过使用键盘输入持续时间。然后你需要按'D'来保存时间并开始倒计时。在void loop()函数中,我们已经做了一些计算以逐秒递减时间,并根据剩余时间显示Hour、Minutes和Seconds(HH:MM:SS)相应的值。您可以在下面查看完整的代码。

Arduino-based-Countdown-Timer-in-action.jpg (60.52 KB, 下载次数: 80)

2018-4-18 17:18 上传

当计时器归零时,蜂鸣器开始发出蜂鸣声并且只发出100次蜂鸣声。要停止蜂鸣器,请按住按钮。您可以随时使用按钮在计数时停止定时器。

Arduino-based-Countdown-Timer-ringing.jpg (59.18 KB, 下载次数: 72)

2018-4-18 17:18 上传

代码

本文中的完整代码如下:

main.rar

(1.55 KB, 下载次数: 347)

2018-4-18 17:20 上传

点击文件名下载附件

arduino彩灯计时器电路_基于Arduino开发板的倒计时器相关推荐

  1. request[limit]取不到前台的值_基于uFUN开发板的心率计(二)动态阈值算法获取心率值...

    前言 上一篇文章:基于uFUN开发板的心率计(一)DMA方式获取传感器数据,介绍了如何获取PulseSensor心率传感器的电压值,并对硬件电路进行了计算分析.心率计,重要的是要获取到心率值,本篇文章 ...

  2. arduino小车前进代码_基于Arduino操纵杆扩展板Funduino制作机器人小车

    在本篇文章中,我们将制作一款两轮遥控机器人小车,使用的组件包含nRF24L01模块.Arduino UNO和Funduino操纵杆扩展板组成的控制部分,Arduino nano开发板以及和一个用于控制 ...

  3. gazebo 直接获取传感器数据_基于uFUN开发板的心率计(一)DMA方式获取传感器数据...

    前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...

  4. angularjs 获取复选框的值_基于uFUN开发板的心率计(一)DMA方式获取传感器数据

    前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...

  5. arduino点阵声音频谱_基于Arduino和频谱分析的LED音乐课节拍器

    摘要: 音乐课上,学习乐器或者唱歌的学生都需要节拍器来练习稳定速度和节奏.而传统的节拍器主要是机械构造,只拥有稳定的速度,发出"嘀嗒嘀嗒"的节拍声.但是,人类最敏锐的感官是视觉,设 ...

  6. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法

    Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法 首先,我们来看一下Arduino UNO开发板的具体引脚排列,如下图所示, 再了解一下三色RGB LED模块,如下图所示 ...

  7. 二氧化碳传感器CCS811简单的测试驱动_基于Arduino

    二氧化碳传感器CCS811简单的测试驱动_基于Arduino 目的 简单介绍 由于MOX Sensor材料特性在使用过程中要注意的问题 IC的初始化过程 IC的读数据过程 可配置参数 完整程序代码 数 ...

  8. 基于uFUN开发板的心率计(二)动态阈值算法获取心率值

    文章目录 前言 IBI和BPM 核心操作 -- 识别一个脉搏信号 问题一:阈值的选取 问题二:特征点识别 算法整体框架与代码实现 总结 基于uFUN开发板的Keil源码下载 uFUN评测系列文章 前言 ...

  9. 基于uFUN开发板的RGB调色板

    前言 使用uFUN开发板配合Qt上位机,实现任意颜色的混合,Qt上位机下发RGB数值,范围0-255,uFUN开发板进行解析,然后输出不同占空比的PWM,从而实现通过RGB三原色调制出任意颜色. Qt ...

最新文章

  1. 2020年度中国生命科学十大进展公布 | 中国科协生命科学学会联合体
  2. hessian原理解析二(服务端分析)
  3. [LeetCode] Binary Tree Postorder题解
  4. Python dataframe修改列顺序(pandas学习)
  5. Spring Web Flow实例教程
  6. 通过实现继承TabActivity并且实现TabContentFactory的方法创建选项卡的一点心得
  7. matlab语句运算相关论文,毕业论文MATLAB在复变函数中的应用.doc
  8. matlab图像拼接 设计,MATLAB图像拼接算法及实现.doc
  9. 数据库 - 交集、并集和补集
  10. Spring-几种组件注册方式
  11. 经纬度 在线计算距离
  12. 值得收藏:程序员必去的社区与网站
  13. HDU 5238 Calculator【线段树】
  14. 【计算机图形学】实验报告1用OpenGL画线命令绘制一个多边构成图形或场景
  15. 杭电ACM2075题
  16. 参考文献在Latex编译后的文章中无法显示
  17. None、Null与空字符‘‘什么区别
  18. oc和java的优点缺点_oc语言的优点和缺点
  19. 思考关于瞬变电磁信号降噪
  20. mysql 活锁_Go语言死锁、活锁和饥饿概述

热门文章

  1. 使用Bot Framework遇到WebChat无法发送消息的问题解决
  2. 计算机课信息化大赛说课稿,全国信息化教学设比赛一等奖:说课稿.pdf
  3. 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  4. 计算机网络校园网建设设计摘要,计算机网络专业校园网建设设计.doc
  5. 台达B3伺服电机485通讯的调试过程
  6. 《11.uboot的移植-从三星官方uboot开始移植》
  7. pythonturtle画飞机_浅谈pygame编写外星人入侵游戏第一步(屏幕上绘制飞机)......
  8. android 歌词解析 依赖,Android实现歌曲播放时歌词同步显示具体思路
  9. 常见的排序算法比较及总结
  10. 计算机网络局域网笔记,计算机网络笔记四 无线局域网