arduino计时器程序
这是个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计时器程序相关推荐
- 【Arduino计时器】Arduino计时器使用TM1637显示时间
Arduino计时器使用TM1637显示时间 本文介绍如何使用Arduino制作计时器,并使用TM1637显示时间.计时器使用2个GPIO接口作为启动计时和停止计时的按键,并要求计时精度达到0.01秒 ...
- python画完图 程序暂停运行_[Python实战]你也能写的计时器程序
文章地址:[Python实战]你也能写的计时器程序 上次,公众号介绍了如何使用 Pyqt5 制作猜数游戏界面,并介绍了如何在 Pycharm 中使用 Qt Designer 生成 UI 文件.这次,我 ...
- arduino 停止程序_极路由1S OpenWrt开机自启程序及串口调试
如何给openwrt添加启动项?首先在/etc/init.d中创建一个文件,在CRT终端中直接用vi命令即可,自行创建startCamera文件,如下图所示. vi编辑器中输入下图所示内容,START ...
- 如何用 Visual Studio 2017 开发 Arduino 应用程序
如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...
- c51倒计时程序汇编语言,两位倒计时器程序(单片机—汇编语言).doc
两位倒计时器程序 ? ??? ORG? ?00H? ?? ?JMP? ?START? ?? ?ORG? ?30HSTART:MOV? ?P2,#00H? ? :位选置低电平? ? 显示00??? ?? ...
- 用4.0蓝牙模块给arduino下载程序
实验器材:Arduino Pro Mini,JDY-08蓝牙4.0模块,USB-TTL串口 由于Arduino下载程序的波特率为57600,所以蓝牙模块的波特率先要设置成57600. 两个4.0蓝牙之 ...
- 编写一个简易计时器程序(edu)
程序设计 编写一个简易计时器程序.要求: (1)页面包含一个"开始"按钮,一个"停止"按钮,一个"清零"按钮以及一个用于显示时间的文本框. ...
- arduino 计时器和中断
index 什么是计时器? 定时器0: 计时器1: 定时器2: Timer3,Timer4,Timer5: 计时器寄存器 时钟选择和定时器频率 计时器模式 什么是中断? 定时器中断 计时器溢出: 输出 ...
- arduino 停止程序_建立Arduino机器人,第五部分:障碍规避
欢迎阅读教程系列的第五篇文章,其中我正在构建一个基于遥控Arduino的车辆机器人. 这是我到目前为止发表的文章列表: 第一部分:硬件组件 第二部分:Arduino编程 第三部分:组装机器人 第四部分 ...
最新文章
- Ubuntu下搭建Janus Server
- java调试案例_Spring-boot的debug调试代码实例
- 官方文档太辣鸡?TensorFlow 2.0开源工具书,30天「无痛」上手
- LoadRunner参数化时的各个选项说明
- java getselectedrow_Java Swing实现展示数据,以及过滤排序
- 第一章节 ASP.NET Web应用程序基础(二)
- netcat,nmap常用例子
- 赣州计算机教师招聘,江西省赣州市章贡区2019年招聘教师人员岗位表
- PHP安装OPENSSL扩展模块
- iTextSharp 列表
- python代码表达失恋_利用python程序浪漫安慰失恋妹纸
- 打开计算机桌面不显示不出来怎么办,电脑桌面黑屏不显示任何东西
- 为Exynos4412移植2022版U-Boot(一)步骤及其原理分析
- Kinect外包团队(长年承接微软Kinect体感项目外包,有大型Kinect案例)
- 火水未濟 (易經大意 韓長庚)
- 冰蝎3 冰蝎2 behinder流量分析 流量解密
- 原生 JS 实现一个瀑布流插件
- 老大让我优化数据库,我上来就分库分表,他过来就是一jio
- 分享一个二维码生成的接口,简单好用
- Group BOM 和BOM group