arduino定时器pdf_Arduino基础入门篇18—数字时钟
Arduino不但有外部中斷,還有定時器中斷,不同Arduino開發板其定時器數量及性能也各不相同,這取決于開發板主控制器。Uno R3開發板有三個定時器,本篇通過使用定時器庫「TimerOne」來更新數碼管顯示,制作一個數字時鐘。
Arduino提供了豐富的庫,關于定時器的庫包括「TimerOne」、「MsTimer2」等,更多的支持庫的信息可從官網獲取Libraries for Arduino。
1. 定時器庫安裝
在IDE中點擊「項目」—「加載庫」—「管理庫」,查找「TimerOne」進行安裝。
安裝庫
2. 實驗材料
Uno R3開發板
配套USB數據線
面包板及配套連接線
四位共陰極數碼管
4個220Ω限流電阻
3. 實驗步驟
1. 根據原理圖搭建電路。
根據四位數碼管的引腳圖,a,b,c,d,e,f,g,dp引腳分別連接開發板的數字引腳7,6,5,10,11,8,9,4。數碼管的1,2,3,4引腳分別串聯220Ω限流電阻,電阻另一端分別連接開發板的數字引腳2,3,12,13。
實驗原理圖如下圖所示:
實驗原理圖
實物連接圖如下圖所示:
實物連接圖
2. 新建sketch,拷貝如下代碼替換自動生成的代碼并進行保存。
/*
SevTimer
使用定時器驅動四位數碼管實現數字時鐘顯示
*/
#include "TimerOne.h"
#include "SevSeg.h"
SevSeg sevseg;
int Fen = 0;
int Miao = 0;
byte numDigits = 4; //數碼管位數
byte digitPins[] = {2, 3, 12, 13}; //數碼管公共極連接Arduino的引腳
byte segmentPins[] = {7, 6, 5, 10, 11, 8, 9, 4}; //數碼管a,b,c,d,e,f,g,dp對應引腳
byte hardwareConfig = COMMON_CATHODE ; // 共陰極數碼管
void setup() {
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins); //初始化數碼管
Timer1.initialize(1000000);//初始化定時器為1s
Timer1.attachInterrupt( timerIsr );//設置中斷回調函數
}
void loop() {
sevseg.setNumber(Fen * 100 + Miao, -1); //設置要顯示的數據,不顯示小數點
sevseg.refreshDisplay(); // 必須重復運行刷新數碼管顯示
}
void timerIsr()//定時器中斷處理函數
{
Miao++;
if (Miao > 59)
{
Miao = 0;
Fen++;
if (Fen > 59)
Fen = 0;
}
}
3. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。
程序下載
4. 實驗現象
數碼管1秒計數一次,滿60秒分鐘加一,實現數字時鐘效果。
實驗現象
5. 實驗分析
數碼管驅動依舊使用「SevSeg」,具體使用方法在前面文章有所介紹。在setup()中使用 Timer1.initialize(1000000)來初始化定時器,括號內為定時周期,以微妙為單位,所以這里的1000000為1秒。然后使用Timer1.attachInterrupt( timerIsr )來設置中斷回調函數。我們在程序中要實現timerIsr()函數,在里面實現分鐘和秒數的控制。
有了定時器,有了數碼管,我們可以很方便的實現一些跟時鐘有關的制作,你可以結合數碼管和蜂鳴器,來實現倒計時提示的制作。
總結
以上是生活随笔為你收集整理的arduino定时器pdf_Arduino基础入门篇18—数字时钟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNA存储大数据,峰哥身价暴涨10个亿
- 下一篇: Markdown 入门及语法详细指南 ★