|
计时器是一种时钟形式,通常用于测量时间间隔。有两种类型的计时器,一种是从零开始向上计数,用于测量已用时间,称为秒表。而第二种类型的计时器从用户提供的指定持续时间倒计时,通常称为倒计时器。
在本教程中,我们将向您展示如何使用Arduino开发板制作一个倒计时器。在本文中,我们没有使用任何实时时钟(RTC)模块来获取时间。持续时间由用户通过键盘和1602的LCD设定的。当计时器归零时,将会通过蜂鸣器发出警报声。
所需的材料 ● Arduino UNO开发板 ● LCD显示模块1602 ● 4 * 4的矩阵键盘 ● 蜂鸣器 ● 按钮 ● 电位器(10k) ● 电阻(10k、100欧) ● 连接导线
电路原理图
在这里,Arduino Uno开发板用作主控制器。使用键盘来设定持续时间,以及LCD显示模块1602来显示倒计时。按钮用于启动定时。有关如何将Arduino开发板与4x4矩阵键盘进行连接,请参考:https://www.yiboard.com/thread-780-1-1.html。
代码和说明 在本文的末尾处,给出了完整的Arduino计时器代码。
在下面的代码中,我们正在初始化键盘和LCD的库以及代码中使用的变量。 - #include <LiquidCrystal.h>
- #include <Keypad.h>
- 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)相应的值。您可以在下面查看完整的代码。
当计时器归零时,蜂鸣器开始发出蜂鸣声并且只发出100次蜂鸣声。要停止蜂鸣器,请按住按钮。您可以随时使用按钮在计数时停止定时器。
代码 本文中的完整代码如下:
main.rar
(1.55 KB, 下载次数: 722)
|