这是个arduino计时器程序,这个程序可以调整计时器进行倒计时,可以设置倒计时时间。

一共两个按钮,两个电位器,三个led灯。

两个按钮其中一个控制计时开始和计时结束,另一个按钮循环移位时分秒设置,按下之后可以设置当前的计时,时分秒依次设置。

两个电位器,一个调节1602屏幕亮度,另一个设置计时器时间。

3个led灯,一个2秒闪一次,一个一分钟闪两次,一个一小时闪两次。

代码:

//include file
#include <LiquidCrystal.h>//define a pin to control beep
#define buzzer_pin 6//define a pin to detect key signal
//when you press the key which controled by key1,the timer start work
#define key1 7
//when you press the key which controled by key1,you could set the timer
#define key2 13//define the pin to control led
//second
#define led_s 8
//minite
#define led_m 9
//hour
#define led_h 10
//led HIHG time
#define lit 100//define a lcd object
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//the int to save timer goal
//second goal
unsigned int seco_g=30;
//minite goal
unsigned int mini_g=1;
//hour goal
unsigned int hour_g=0;unsigned long seco_sum=0;//define the now time
//second
unsigned int seco=0;
//minite
unsigned int mini=0;
//hour
unsigned int hour=0;unsigned long seco_sum_pre=0;unsigned long seco_pre=0;
unsigned long mini_pre=0;
unsigned long hour_pre=0;bool fi_s=false;
//set bit
//0 for second 1 for minite 2 for hour
unsigned int swit=0;
//set timer mode,0,1
bool swit_s=false;//the timer status
bool js_status=false;//detect key1
bool anjian1(){if(digitalRead(key1)==HIGH){delay(10);if(digitalRead(key1)==HIGH)return true;elsereturn false;}return false;
};//detect key2
bool anjian2(){if(digitalRead(key2)==HIGH){delay(10);if(digitalRead(key2)==HIGH)return true;elsereturn false;}return false;
};void display_t()
{hour=seco_sum/3600;mini=(seco_sum-hour*3600)/60;seco=seco_sum-hour*3600-mini*60;lcd.clear();lcd.setCursor(0,0);lcd.print("Arduino Timer");lcd.setCursor(0, 1);lcd.print(hour);lcd.setCursor(2, 1);lcd.print(":");lcd.setCursor(3, 1);lcd.print(mini);lcd.setCursor(5, 1);lcd.print(":");lcd.setCursor(6, 1);lcd.print(seco);
}
void setup()
{//初始化引脚for(int i=2;i<=6;i++){pinMode(i,OUTPUT);digitalWrite(i,LOW);}pinMode(7,INPUT);for(int i=8;i<=12;i++){pinMode(i,OUTPUT);digitalWrite(i,LOW);}pinMode(13,INPUT);//初始化串口Serial.begin(115200);lcd.begin(16, 2); // 启动与LCD键盘的通信lcd.setCursor(0,0);lcd.print("Arduino-");lcd.setCursor(0, 1);lcd.print(" Timer");delay(3000);Serial.println("Init suss!");seco_sum=hour*3600+mini*60+seco;display_t();
}void loop(){if((anjian1()==true)&&(js_status==false)){seco=seco_g;mini=mini_g;hour=hour_g;js_status=true;seco_sum_pre=millis();seco_pre=millis();mini_pre=millis();hour_pre=millis();}else if((anjian1()==true)&&(js_status==true))js_status=false;//if the timer not work ,you can set the timer'goalif(js_status==false){if(anjian2()==true){if((swit_s==false)||(swit==2))swit=0;elseswit++;swit_s=true;}if(swit_s==true){//set the timer's goalif(swit==0){if(hour_g!=map(analogRead(A0),0,1023,0,24))lcd.clear();hour_g=map(analogRead(A0),0,1023,0,24);}else if(swit==1){if(mini_g!=map(analogRead(A0),0,1023,0,59))lcd.clear();mini_g=map(analogRead(A0),0,1023,0,59);}else if(swit==2){if(seco_g!=map(analogRead(A0),0,1023,0,59))lcd.clear();seco_g=map(analogRead(A0),0,1023,0,59);}//lcd.clear();//set modelcd.setCursor(0,0);lcd.print("Set mode-");lcd.setCursor(0, 1);lcd.print(hour_g);lcd.setCursor(2, 1);lcd.print(":");lcd.setCursor(3, 1);lcd.print(mini_g);lcd.setCursor(5, 1);lcd.print(":");lcd.setCursor(6, 1);lcd.print(seco_g);}}if(js_status==true){seco_sum=hour*3600+mini*60+seco;if(seco_sum>0){if((millis()-seco_sum_pre)>=1000){seco_sum--;display_t();seco_sum_pre=millis();}if((millis()-seco_pre)>=2000){seco_pre=millis();digitalWrite(led_s,HIGH);delay(100);digitalWrite(led_s,LOW);}if((millis()-mini_pre)>=60000){mini_pre=millis();digitalWrite(led_m,HIGH);delay(100);digitalWrite(led_m,LOW);delay(100);digitalWrite(led_m,HIGH);delay(100);digitalWrite(led_m,LOW);}if((millis()-hour_pre)>=3600000){hour_pre=millis();digitalWrite(led_h,HIGH);delay(100);digitalWrite(led_h,LOW);delay(100);digitalWrite(led_h,HIGH);delay(100);digitalWrite(led_h,LOW);}}else{if(fi_s==false){lcd.clear();fi_s=true;}else;lcd.setCursor(0,0);digitalWrite(buzzer_pin,HIGH);lcd.print("Timer finished!");}}
}

arduino计时器程序相关推荐

  1. 【Arduino计时器】Arduino计时器使用TM1637显示时间

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

  2. python画完图 程序暂停运行_[Python实战]你也能写的计时器程序

    文章地址:[Python实战]你也能写的计时器程序 上次,公众号介绍了如何使用 Pyqt5 制作猜数游戏界面,并介绍了如何在 Pycharm 中使用 Qt Designer 生成 UI 文件.这次,我 ...

  3. arduino 停止程序_极路由1S OpenWrt开机自启程序及串口调试

    如何给openwrt添加启动项?首先在/etc/init.d中创建一个文件,在CRT终端中直接用vi命令即可,自行创建startCamera文件,如下图所示. vi编辑器中输入下图所示内容,START ...

  4. 如何用 Visual Studio 2017 开发 Arduino 应用程序

    如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...

  5. c51倒计时程序汇编语言,两位倒计时器程序(单片机—汇编语言).doc

    两位倒计时器程序 ? ??? ORG? ?00H? ?? ?JMP? ?START? ?? ?ORG? ?30HSTART:MOV? ?P2,#00H? ? :位选置低电平? ? 显示00??? ?? ...

  6. 用4.0蓝牙模块给arduino下载程序

    实验器材:Arduino Pro Mini,JDY-08蓝牙4.0模块,USB-TTL串口 由于Arduino下载程序的波特率为57600,所以蓝牙模块的波特率先要设置成57600. 两个4.0蓝牙之 ...

  7. 编写一个简易计时器程序(edu)

    程序设计 编写一个简易计时器程序.要求: (1)页面包含一个"开始"按钮,一个"停止"按钮,一个"清零"按钮以及一个用于显示时间的文本框. ...

  8. arduino 计时器和中断

    index 什么是计时器? 定时器0: 计时器1: 定时器2: Timer3,Timer4,Timer5: 计时器寄存器 时钟选择和定时器频率 计时器模式 什么是中断? 定时器中断 计时器溢出: 输出 ...

  9. arduino 停止程序_建立Arduino机器人,第五部分:障碍规避

    欢迎阅读教程系列的第五篇文章,其中我正在构建一个基于遥控Arduino的车辆机器人. 这是我到目前为止发表的文章列表: 第一部分:硬件组件 第二部分:Arduino编程 第三部分:组装机器人 第四部分 ...

最新文章

  1. Ubuntu下搭建Janus Server
  2. java调试案例_Spring-boot的debug调试代码实例
  3. 官方文档太辣鸡?TensorFlow 2.0开源工具书,30天「无痛」上手
  4. LoadRunner参数化时的各个选项说明
  5. java getselectedrow_Java Swing实现展示数据,以及过滤排序
  6. 第一章节 ASP.NET Web应用程序基础(二)
  7. netcat,nmap常用例子
  8. 赣州计算机教师招聘,江西省赣州市章贡区2019年招聘教师人员岗位表
  9. PHP安装OPENSSL扩展模块
  10. iTextSharp 列表
  11. python代码表达失恋_利用python程序浪漫安慰失恋妹纸
  12. 打开计算机桌面不显示不出来怎么办,电脑桌面黑屏不显示任何东西
  13. 为Exynos4412移植2022版U-Boot(一)步骤及其原理分析
  14. Kinect外包团队(长年承接微软Kinect体感项目外包,有大型Kinect案例)
  15. 火水未濟 (易經大意 韓長庚)
  16. 冰蝎3 冰蝎2 behinder流量分析 流量解密
  17. 原生 JS 实现一个瀑布流插件
  18. 老大让我优化数据库,我上来就分库分表,他过来就是一jio
  19. 分享一个二维码生成的接口,简单好用
  20. Group BOM 和BOM group

热门文章

  1. 奥比中光Femto相机环境配置
  2. Linux面试题目(一)
  3. python爬虫快速添加请求头、随机生成user-agent
  4. 考研复试-数据结构-面试题
  5. 【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库
  6. 《中国人史纲》读书笔记:第四章 半信史时代 第五章 信史时代
  7. 淘宝iOS拍立淘微距能力探索与实现
  8. 思维导图怎么画?思维导图快速绘制教程
  9. PC端自动化工具开发:Pywinauto的安装及使用
  10. C++ Opencv之3D透视变换