第八章 進階專題3
CH8-1 紅綠燈
實習清單
實驗名稱 | 紅綠燈 |
---|---|
預期實驗結果 | 利用七段顯示器與LED做出紅綠燈之效果 |
實驗目的 | Ø 了解如何使用七段顯示器 |
材料清單 | Ø Arduino*1 Ø 共陰極 七段顯示器*1 Ø LED*3 |
元件介紹
七段顯示器是由七段LED來組成、可以顯示0~9的數字
如下圖
七段顯示器使用A~G的代號來表示每一段LED加上DP來表示小數點、每一段LED都由一隻接腳來控制如下圖
七段顯示器有兩種類型:
1、共陰極七段顯示器:顧名思義,及顯示器的COM共接點接地,而其他接腳如為高電位則LED發光、如為低電位則不發光。
1、共陽極七段顯示器:顧名思義,及顯示器的COM共接點接VCC,而其他接腳如為低電位則LED發光、如為高電位則不發光。
特別注意,七段顯示器有兩個COM點,只要其中一個接地就可以了。
實習步驟與說明
本次實驗要教導大家如何利用七段顯示器顯示數字,並且利用二維矩陣儲存資料。
這次實驗所用的七段顯示器為共陰極、所以如要讓各段LED顯示,則各腳位需輸入高電位
假設各腳位的狀態儲存於一矩陣內、則各腳位狀態如下
{a,b,c,d,e,f,g}
{1,1,1,1,1,1,0},\/\/顯示『0』時各腳位的狀態
{0,0,0,0,1,1,0},\/\/顯示『1』時各腳位的狀態
{1,1,0,1,1,0,1},\/\/顯示『2』時各腳位的狀態
{1,1,1,1,0,0,1},\/\/顯示『3』時各腳位的狀態
{0,1,1,0,0,1,1},\/\/顯示『4』時各腳位的狀態
{1,0,1,1,0,1,1},\/\/顯示『5』時各腳位的狀態
{0,0,1,1,1,1,1},\/\/顯示『6』時各腳位的狀態
{1,1,1,0,0,0,0},\/\/顯示『7』時各腳位的狀態
{1,1,1,1,1,1,1},\/\/顯示『8』時各腳位的狀態
{1,1,1,1,0,1,1},\/\/顯示『9』時各腳位的狀態
矩陣內的”0”代表低電位,”1”代表高電位
如果使用的是共陽極七段顯示器,則將上列狀態表的0與1互換即可
電路實作
佈線圖
Arduino程式實作
完整程式碼
001 int p0[7]={ 1,1,1,1,1,1,0}; \/\/顯示『0』時各腳位的狀態 002 int p1[7]={0,0,0,0,1,1,0}; \/\/顯示『1』時各腳位的狀態 003 int p2[7]={1,1,0,1,1,0,1}; \/\/顯示『2』時各腳位的狀態 004 int p3[7]={1,1,1,1,0,0,1}; \/\/顯示『3』時各腳位的狀態 005 int p4[7]={0,1,1,0,0,1,1}; \/\/顯示『4』時各腳位的狀態 006 int p5[7]={1,0,1,1,0,1,1}; \/\/顯示『5』時各腳位的狀態 007 int p6[7]={0,0,1,1,1,1,1}; \/\/顯示『6』時各腳位的狀態 008 int p7[7]={1,1,1,0,0,0,0}; \/\/顯示『7』時各腳位的狀態 009 int p8[7]={1,1,1,1,1,1,1}; \/\/顯示『8』時各腳位的狀態 010 int p9[7]={1,1,1,1,0,1,1}; \/\/顯示『9』時各腳位的狀態 011 int plow[7]={0,0,0,0,0,0,0}; \/\/七段顯示器不顯示 012 int green=10; \/\/pin10設定為綠燈 013 int yellow=11;\/\/pin11設定為黃燈 014 int red=12;\/\/pin12設定紅燈; 015 void setup() 016 { 017 for(int z=2;z<=13;z++) 018 { 019 pinMode(z,OUTPUT); 020 } 021 } 022 void loop() 023 { 024 \/\/綠燈狀態維持四秒 025 digitalWrite(green,HIGH); 026 digitalWrite(red,LOW); 027 digitalWrite(yellow,LOW); 028 Count(p1); \/\/顯示『1』維持一秒 029 Count(p2); \/\/顯示『2』維持一秒 030 Count(p3); \/\/顯示『3』維持一秒 031 Count(p4); \/\/顯示『4』維持一秒 032 \/\/黃燈狀態維持兩秒 033 digitalWrite(green,LOW); 034 digitalWrite(red,LOW); 035 digitalWrite(yellow,HIGH); 036 Count(plow);\/\/黃燈倒數器不顯示維持兩秒 037 delay(1000); 038 \/\/紅燈狀態狀態3秒 039 digitalWrite(green,LOW); 040 digitalWrite(red,HIGH); 041 digitalWrite(yellow,LOW); 042 Count(p1); 043 Count(p2); 044 Count(p3); 045 } 046 void Count(int p[7]) \/\/七段顯示器副程式 047 { 048 int i=0; 049 for(int z=2;z<=8;z++) 050 { 051 digitalWrite(z,p[i]); 052 i++; 053 } 054 delay(1000); 055 } |
---|