計時器由 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; } } } 觀看影片 |