計(jì)時(shí)器是一種時(shí)鐘形式,通常用于測(cè)量時(shí)間間隔。有兩種類型的計(jì)時(shí)器,一種是從零開(kāi)始向上計(jì)數(shù),用于測(cè)量已用時(shí)間,稱為秒表。而第二種類型的計(jì)時(shí)器從用戶提供的指定持續(xù)時(shí)間倒計(jì)時(shí),通常稱為倒計(jì)時(shí)器。
在本教程中,我們將向您展示如何使用Arduino開(kāi)發(fā)板制作一個(gè)倒計(jì)時(shí)器。在本文中,我們沒(méi)有使用任何實(shí)時(shí)時(shí)鐘(RTC)模塊來(lái)獲取時(shí)間。持續(xù)時(shí)間由用戶通過(guò)鍵盤和1602的LCD設(shè)定的。當(dāng)計(jì)時(shí)器歸零時(shí),將會(huì)通過(guò)蜂鳴器發(fā)出警報(bào)聲。
所需的材料
● Arduino UNO開(kāi)發(fā)板
● LCD顯示模塊1602
● 4 * 4的矩陣鍵盤
● 蜂鳴器
● 按鈕
● 電位器(10k)
● 電阻(10k、100歐)
● 連接導(dǎo)線
電路原理圖
在這里,Arduino Uno開(kāi)發(fā)板用作主控制器。使用鍵盤來(lái)設(shè)定持續(xù)時(shí)間,以及LCD顯示模塊1602來(lái)顯示倒計(jì)時(shí)。按鈕用于啟動(dòng)定時(shí)。有關(guān)如何將Arduino開(kāi)發(fā)板與4x4矩陣鍵盤進(jìn)行連接,請(qǐng)參考:https://www.yiboard.com/thread-780-1-1.html。
代碼和說(shuō)明
在本文的末尾處,給出了完整的Arduino計(jì)時(shí)器代碼。
在下面的代碼中,我們正在初始化鍵盤和LCD的庫(kù)以及代碼中使用的變量。
#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;
在下面的代碼中,我們初始化行和列的數(shù)目,用于定義鍵盤矩陣。
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開(kāi)發(fā)板進(jìn)行連接,我們必須定義使用的行和列的引腳。所以在下面的代碼中我們已經(jīng)定義了鍵盤的引腳以及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)
下面的代碼用于聲明一個(gè)keypad數(shù)組:
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
在void setFeedingTime()函數(shù)中,按下按鈕后,我們可以輸入定時(shí)器的時(shí)間,然后在輸入完成后,我們必須按下D開(kāi)始倒計(jì)時(shí)。
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()函數(shù)中,我們初始化了LCD和串行通信,并在下面的代碼中將引腳定義為INPUT和OUTPUT。
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A3, INPUT);
pinMode(A4, OUTPUT);
}
這個(gè)Arduino倒計(jì)時(shí)器的工作原理很簡(jiǎn)單,但代碼有點(diǎn)復(fù)雜。
最初,它會(huì)在LCD顯示屏上打印輸出“Arduino Timer”,直到您按下按鈕。只要按下按鈕,它會(huì)通過(guò)調(diào)用“setFeedingTime”函數(shù)來(lái)要求輸入倒計(jì)時(shí)時(shí)間。然后你可以通過(guò)使用鍵盤輸入持續(xù)時(shí)間。然后你需要按'D'來(lái)保存時(shí)間并開(kāi)始倒計(jì)時(shí)。在void loop()函數(shù)中,我們已經(jīng)做了一些計(jì)算以逐秒遞減時(shí)間,并根據(jù)剩余時(shí)間顯示Hour、Minutes和Seconds(HH:MM:SS)相應(yīng)的值。您可以在下面查看完整的代碼。
當(dāng)計(jì)時(shí)器歸零時(shí),蜂鳴器開(kāi)始發(fā)出蜂鳴聲并且只發(fā)出100次蜂鳴聲。要停止蜂鳴器,請(qǐng)按住按鈕。您可以隨時(shí)使用按鈕在計(jì)數(shù)時(shí)停止定時(shí)器。
編輯:hfy
-
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
428瀏覽量
33453 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
893瀏覽量
46670 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5499瀏覽量
102071 -
Arduino
+關(guān)注
關(guān)注
188文章
6490瀏覽量
190058
發(fā)布評(píng)論請(qǐng)先 登錄
Linux文件系統(tǒng)打包及鏡像制作,觸覺(jué)智能RK3562開(kāi)發(fā)板演示

通過(guò)Arduino Nano Matter開(kāi)發(fā)板構(gòu)建智能卷簾系統(tǒng)

無(wú)錫太湖機(jī)床展倒計(jì)時(shí)!高端制造 筑夢(mèng)之展

倒計(jì)時(shí)8天! 免費(fèi)開(kāi)發(fā)板申領(lǐng)即將截止|2025 Matter 應(yīng)用開(kāi)發(fā)比賽

ST×米爾STM32MP25x線下培訓(xùn)會(huì)倒計(jì)時(shí)12天

倒計(jì)時(shí)無(wú)線遙控開(kāi)關(guān)生產(chǎn)多快好省改進(jìn)案例

系統(tǒng)化課程體系——2天倒計(jì)時(shí)!

掌握EMC核心知識(shí)——7天倒計(jì)時(shí)!

Arduino Nano Matter開(kāi)發(fā)板正式上市
基于Arduino的串口通信項(xiàng)目
看門狗定時(shí)器的工作原理

LMC555 CMOS計(jì)時(shí)器數(shù)據(jù)表

評(píng)論