吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Arduino制作倒數計時器

科技觀察員 ? 來源:circuitdigest ? 作者:潘卡伊·卡特里 ? 2022-11-17 15:45 ? 次閱讀

計時器是一種用于測量時間間隔的時鐘。有兩種類型的計時器,一種從零開始向上計數,用于測量經過的時間,稱為秒表。并且,第二個從用戶提供的指定持續時間開始倒計時,通常稱為倒數計時器。

在這里,在本教程中,我們將向您展示如何使用Arduino制作倒數計時器。

所需材料

Arduino UNO

液晶屏 16*2

4*4矩陣鍵盤

蜂鳴器

按鈕

電位器 (10k)

電阻器(10k,100歐姆)

連接線

Arduino倒數計時器電路圖

poYBAGN15rGAeUvUAADaeUHqgEw155.png

Arduino Uno在這里用作主控制器。鍵盤用于饋送持續時間,16*2 LCD用于顯示倒計時。按鈕用于啟動時間。

Arduino倒數計時器代碼和解釋
完整的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;
現在,在下面的代碼中,我們正在初始化 no。用于定義鍵盤矩陣的行和列。

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 連接,我們必須定義行和列的引腳。因此,在下面的代碼中,我們定義了鍵盤和 16x2 LCD 的引腳。

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 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()函數中,我們做了一些計算來逐秒遞減時間,并根據剩余時間顯示小時,分鐘和秒(HH:MM:SS)的正確值。所有代碼都通過注釋進行了很好的解釋。您可以查看下面的完整代碼和演示視頻

pYYBAGN15rOAP1T0AADnu9iwG50236.jpg

當計時器達到零時,蜂鳴器開始發出嗶嗶聲并僅發出 100 次嗶嗶聲(根據代碼)。要停止蜂鳴器,請按住按鈕。您可以隨時使用按鈕在計數之間停止計時器。

pYYBAGN15rWACmBZAADi5qg71bg370.jpg

// Arduino Countdown Timer Code


#include

#include


const byte ROWS = 4; // Four rows

const byte COLS = 4; // Three columns


long int set1;

long int set2;

long int set3;

long int set4;

long int j;


String hours;

String minutes;

String seconds;

// Define the Keymap


char keys[ROWS][COLS] = {


{'1','2','3','A'},


{'4','5','6','B'},


{'7','8','9','C'},


{'*','0','#','D'}


};


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


Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );



LiquidCrystal lcd(A0, A1, 5, 4, 3, 2); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)


int t1, t2, t3, t4, t5, t6;

int r1, r2, r3;



boolean feed = true; // condition for alarm


char key;

String r[8];


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.begin(16,2);

Serial.begin(9600);

pinMode(A0, OUTPUT);

pinMode(A1, OUTPUT);

pinMode(A3, INPUT);

pinMode(A4, OUTPUT);

}



void loop()

{

lcd.setCursor(0,0);

lcd.print("Arduino Timer");

//Serial.println(A3);


if (digitalRead(A3)==1) //

{

lcd.clear();

setFeedingTime();

for(int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially

{

Serial.print(r[i]);

Serial.println();

}



hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one string and save it to "hours"

minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one string and save it to "minutes"

seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one string and save it to "seconds"




set1 = (hours.toInt()*3600); //converting hours into seconds

set2 = (minutes.toInt() * 60); //converting minutes into seconds

set3 = seconds.toInt();

set4 = (hours.toInt() * 3600)+ (minutes.toInt() * 60) + seconds.toInt(); //adding set1, set2 and set3 together in set4

Serial.print("set4");

Serial.print(set4);

Serial.println();


lcd.setCursor(0,0);

lcd.print("Countdown begins");

delay(1000);

lcd.clear();



for(long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds

{

Serial.println(j);



lcd.setCursor(0,0);

lcd.print("HH:MM:SS");



long int HH = j / 3600; // converting the remaining time into remaining hours

lcd.setCursor(0,1);

Serial.println(HH);

if (HH < 10) { lcd.print('0'); }

lcd.print(HH);

lcd.print(":");



long int MM = (j - (HH*3600))/60 ; //converting the remaining time into remaining minutes

lcd.setCursor(3,1);

Serial.println(MM);

if (MM < 10) { lcd.print('0'); }

lcd.print(MM);

lcd.print(":");



long int SS = j - ((HH*3600)+(MM*60)); //converting the remaining time into remaining seconds

lcd.setCursor(6,1);

Serial.println(SS);

if (SS < 10) { lcd.print('0'); }?

lcd.print(SS);

delay(1000);


if (digitalRead(A3)==1){break;}


if (j == 0)



{

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Timer Stop");

lcd.setCursor(2,1);

lcd.print("-Ring-Ring-");



for(int k =0; k<= 100; k++) //this for loop is used for the buzzer to beep 100 time as the timer reaches zero

{

digitalWrite(A4,HIGH);

delay(300);

digitalWrite(A4,LOW);

delay(300);

if (digitalRead(A3)==1){break;}

}

}

}

}

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計時器
    +關注

    關注

    1

    文章

    426

    瀏覽量

    32861
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187818
收藏 人收藏

    評論

    相關推薦

    倒數計時器設計

    請教高人,如何使用74LS161,112,90,00,以及20設計一個三分鐘倒數計時器?由數碼管來進行倒計時顯示
    發表于 05-29 21:52

    基于FPGA的音樂倒數計時器

    基于FPGA的音樂倒數計時器,設計FPGA的時序,當倒計時為0時,通過輸入電平的不同頻率和高低電平的占空比控制蜂鳴器,播放音樂。
    發表于 05-05 15:23

    計時器,什么是計時器,計時器原理是什么

    計時器,什么是計時器,計時器原理是什么 計時器,是利用特定的原理來測量時間的裝置。計時器的種類包括電磁打點
    發表于 03-08 17:52 ?9688次閱讀

    時鐘計時器設計與制作

    本文主要介紹了時鐘計時器設計與制作.
    發表于 06-26 08:00 ?43次下載
    時鐘<b class='flag-5'>計時器</b>設計與<b class='flag-5'>制作</b>

    帶繼電器的Arduino倒數計時器開源分享

    電子發燒友網站提供《帶繼電器的Arduino倒數計時器開源分享.zip》資料免費下載
    發表于 10-26 17:26 ?0次下載
    帶繼電器的<b class='flag-5'>Arduino</b><b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>開源分享

    Arduino倒數計時器

    電子發燒友網站提供《Arduino倒數計時器.zip》資料免費下載
    發表于 10-28 14:30 ?6次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    Arduino計時器

    電子發燒友網站提供《帶Arduino計時器.zip》資料免費下載
    發表于 10-28 09:17 ?0次下載
    帶<b class='flag-5'>Arduino</b>的<b class='flag-5'>計時器</b>

    使用Arduino制作顯示分鐘和秒的4位倒數計時器

    電子發燒友網站提供《使用Arduino制作顯示分鐘和秒的4位倒數計時器.zip》資料免費下載
    發表于 11-07 11:17 ?1次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>顯示分鐘和秒的4位<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    帶7段顯示的Arduino可調倒數計時器

    電子發燒友網站提供《帶7段顯示的Arduino可調倒數計時器.zip》資料免費下載
    發表于 11-08 10:03 ?4次下載
    帶7段顯示的<b class='flag-5'>Arduino</b>可調<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    紅外遙控LED倒數計時器

    電子發燒友網站提供《紅外遙控LED倒數計時器.zip》資料免費下載
    發表于 11-11 09:49 ?3次下載
    紅外遙控LED<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    使用Arduino Uno制作洗手計時器

    電子發燒友網站提供《使用Arduino Uno制作洗手計時器.zip》資料免費下載
    發表于 11-29 15:03 ?3次下載
    使用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>洗手<b class='flag-5'>計時器</b>

    復古1980年代LED時鐘/倒數計時器

    電子發燒友網站提供《復古1980年代LED時鐘/倒數計時器.zip》資料免費下載
    發表于 12-13 10:03 ?0次下載
    復古1980年代LED時鐘/<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    Arduino的OLED倒數計時器

    電子發燒友網站提供《帶Arduino的OLED倒數計時器.zip》資料免費下載
    發表于 06-09 10:40 ?2次下載
    帶<b class='flag-5'>Arduino</b>的OLED<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    Snap:bit-帶燈光和聲音的倒數計時器

    電子發燒友網站提供《Snap:bit-帶燈光和聲音的倒數計時器.zip》資料免費下載
    發表于 06-20 11:23 ?0次下載
    Snap:bit-帶燈光和聲音的<b class='flag-5'>倒數</b><b class='flag-5'>計時器</b>

    Arduino沙漏計時器

    電子發燒友網站提供《Arduino沙漏計時器.zip》資料免費下載
    發表于 07-06 10:05 ?3次下載
    <b class='flag-5'>Arduino</b>沙漏<b class='flag-5'>計時器</b>
    澳门百家乐赌场文| 京城娱乐城开户| 百家乐官网走势图解| OG百家乐大转轮| 黔西县| 百家乐打印机分析| 大富豪百家乐| 百家乐庄闲分布概率| 大发888博彩| 百家乐官网电投网站| 全迅网百家乐的玩法技巧和规则 | 百家乐官网高手论坛| 嘉年华百家乐的玩法技巧和规则 | e世博线上娱乐| 百家乐筹码多少钱| 宝龙线上娱乐城| 百家乐技巧大全| 网上百家乐官网洗码技巧| 百家乐网上娱乐场开户注册 | 大发888体育场| 百家乐官网手机投注| 百家乐庄家必赢诀窍| 网上百家乐官网投注技巧| 新锦江百家乐娱乐| 澳门百家乐官网职业赌客| 水果机定位器| 百家乐官网黏土筹码| 都兰县| 百家乐玩法规| 宿松县| 百家乐qq游戏| 百家乐官网庄家必赢诀窍| 大发888娱乐能借钱| 做生意需要找风水先生吗| 临猗县| 百家乐定位膽技巧| 鲨鱼百家乐官网游戏平台| 二八杠算法| 互博百家乐现金网| 百家乐官网平注法是什么| 德州扑克 下载|