計時器由 Dr. Monk 所開發,由 Jack Christensen 稍加修改後放在 github 上。(本站下載)
下載並解壓縮後,把目錄改名成Timer,搬移到Arduino軟體開發環境的 libraries 子目錄下。
(若無法開啟 Timer.h,請重新開啟 Arduino)



請按下圖配線。

請鍵入下列程式:
(此程式由使用者掌控時間)

void setup() {
      pinMode(1,OUTPUT);
}
void loop() {
      digitalWrite(1,HIGH);
      delay(500);
      digitalWrite(1,LOW);
      delay(500);
}
請鍵入下列另一程式:
(此程式由 Ardunio 內部計時器掌控時間)

#include <Timer.h>
Timer t1;

void setup() {
     pinMode(1,OUTPUT);
     t1.oscillate(1, 500, HIGH); // 以oscillate設定每幾毫秒切換一次狀態
}

void loop() {
     t1.update();
}

下面程式是顯示時間 12:34 (只有中間兩點閃爍,沒有時鐘功能)
#include <Timer.h>
#define LED7_L 8
#define COM_L 4
const int SEG[LED7_L]={6,7,8,9,10,11,12,13};
const int com[COM_L]={2,3,4,5};
const int DD = 1;
const byte Number[]={B00111111,B00000110,B01011011,B01001111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111};
int h=12, m=34;
int hm[COM_L];
Timer t1;

void setup() {
     int i;
     pinMode(DD,OUTPUT);
     t1.oscillate(DD, 500, HIGH);
     for(i=0;i<LED7_L;i++) pinMode(SEG[i],OUTPUT);
     for(i=0;i<COM_L;i++) pinMode(com[i],OUTPUT);
}

void loop() {
     int i,j,k;
     hm[3]=h/10;hm[2]=h%10;
     hm[1]=m/10;hm[0]=m%10;
     for(i=0;i<COM_L;i++){
          for(k=0;k<COM_L;k++){
               digitalWrite(com[k],1);
          }
          digitalWrite(com[i],0);
          for(j=0,k=1;j<LED7_L;j++, k<<=1){
               digitalWrite(SEG[j],!(k & Number[hm[i]]));
          }
          delay(1);
     }
     t1.update();
}

下面程式是簡易時鐘,從 23:59:50 開始計時 (秒數不顯示)
#include <Timer.h>
#define LED7_L 8
#define COM_L 4
const int SEG[LED7_L]={6,7,8,9,10,11,12,13};
const int com[COM_L]={2,3,4,5};
const int DD = 1;
const byte Number[]={B00111111,B00000110,B01011011,B01001111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111};
int h=23, m=59, s;
int hm[COM_L];
Timer t1,t2;

void setup() {
     int i;
     pinMode(DD,OUTPUT);
     t1.oscillate(DD, 500, HIGH); //每 0.5 秒閃爍
     t2.every(1000,timeInc);//每一秒呼叫一次時鐘
     s=50;
     for(i=0;i<LED7_L;i++) pinMode(SEG[i],OUTPUT);
     for(i=0;i<COM_L;i++) pinMode(com[i],OUTPUT);
}

void loop() {
     int i,j,k;
     hm[3]=h/10;hm[2]=h%10;
     hm[1]=m/10;hm[0]=m%10;
     for(i=0;i<COM_L;i++){
          for(k=0;k<COM_L;k++){
               digitalWrite(com[k],1);
          }
          digitalWrite(com[i],0);
          for(j=0,k=1;j<LED7_L;j++, k<<=1){
               digitalWrite(SEG[j],!(k & Number[hm[i]]));
          }
          delay(1);
     }
     t1.update();
     t2.update();
}

void timeInc(){
     s++;
     if(s>=60){
          s=0;
          m++;
          if(m>=60){
               m=0;
               h++;
               if(h>=24) h=0;
          }
     }
}

觀看影片