計時器是一種時鐘形式,通常用于測量時間間隔。有兩種類型的計時器,一種是從零開始向上計數(shù),用于測量已用時間,稱為秒表。而第二種類型的計時器從用戶提供的指定持續(xù)時間倒計時,通常稱為倒計時器。
在本教程中,我們將向您展示如何使用Arduino開發(fā)板制作一個倒計時器。在本文中,我們沒有使用任何實時時鐘(RTC)模塊來獲取時間。持續(xù)時間由用戶通過鍵盤和1602的LCD設(shè)定的。當(dāng)計時器歸零時,將會通過蜂鳴器發(fā)出警報聲。
所需的材料
● Arduino UNO開發(fā)板
● LCD顯示模塊1602
● 4 * 4的矩陣鍵盤
● 蜂鳴器
● 按鈕
● 電位器(10k)
● 電阻(10k、100歐)
● 連接導(dǎo)線
電路原理圖
在這里,Arduino Uno開發(fā)板用作主控制器。使用鍵盤來設(shè)定持續(xù)時間,以及LCD顯示模塊1602來顯示倒計時。按鈕用于啟動定時。有關(guān)如何將Arduino開發(fā)板與4x4矩陣鍵盤進(jìn)行連接,請參考: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;
在下面的代碼中,我們初始化行和列的數(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開發(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)
下面的代碼用于聲明一個keypad數(shù)組:
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
在void setFeedingTime()函數(shù)中,按下按鈕后,我們可以輸入定時器的時間,然后在輸入完成后,我們必須按下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()函數(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);
}
這個Arduino倒計時器的工作原理很簡單,但代碼有點復(fù)雜。
最初,它會在LCD顯示屏上打印輸出“Arduino Timer”,直到您按下按鈕。只要按下按鈕,它會通過調(diào)用“setFeedingTime”函數(shù)來要求輸入倒計時時間。然后你可以通過使用鍵盤輸入持續(xù)時間。然后你需要按'D'來保存時間并開始倒計時。在void loop()函數(shù)中,我們已經(jīng)做了一些計算以逐秒遞減時間,并根據(jù)剩余時間顯示Hour、Minutes和Seconds(HH:MM:SS)相應(yīng)的值。您可以在下面查看完整的代碼。
當(dāng)計時器歸零時,蜂鳴器開始發(fā)出蜂鳴聲并且只發(fā)出100次蜂鳴聲。要停止蜂鳴器,請按住按鈕。您可以隨時使用按鈕在計數(shù)時停止定時器。
編輯:hfy
-
計時器
+關(guān)注
關(guān)注
1文章
426瀏覽量
32774 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
892瀏覽量
46023 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5093瀏覽量
97802 -
Arduino
+關(guān)注
關(guān)注
188文章
6474瀏覽量
187430
發(fā)布評論請先 登錄
相關(guān)推薦
評論