經過前面兩次I/O輸出的介紹,此次咱們就來實現一個交通燈的例子
實物鏈接效果如圖所示:
數碼管的控制引腳不變,3個led燈鏈接到模擬端口0、一、2,分別對應綠、黃、紅,引腳輸出低點亮LED。
說明:當6個模擬口做爲數字口的時候,其對應序號是接着其餘的數字口的,即模擬口0--5對應就是數字口14--19。
實例功能以下:
紅燈亮9秒,接着綠燈亮9秒,接着黃燈亮3秒,接着紅燈亮9秒,如此循環。數碼管顯示當前LED燈熄滅剩餘秒數
程序以下(直接粘貼到Arduino開發環境下就可直接應用,程序中略去了數碼管顯示0-9數字子函數,可參考初初教程2):
//設置控制各段及LED的數字IO腳
int a = 7;
int b = 6;
int c = 5;
int d = 11;
int e = 10;
int f = 8;
int g = 9;
int ledG = 14;
int ledY = 15;
int ledR = 16;
//引腳設置、初始化
void setup()
{
int i;//定義變量
for(i=5;i<=16;i++)
pinMode(i,OUTPUT);//設置5~16引腳爲輸出模式
}
//程序執行部分
void loop()
{
while(1)
{
//紅燈
digitalWrite(ledR,LOW);
digitalWrite(ledY,HIGH);
digitalWrite(ledG,HIGH);
digital_9(); //顯示9
delay(1000); //延時1s
digital_8(); //顯示8
delay(1000); //延時1s
digital_7(); //顯示7
delay(1000); //延時1s
digital_6(); //顯示6
delay(1000); //延時1s
digital_5(); //顯示5
delay(1000); //延時1s
digital_4(); //顯示4
delay(1000); //延時1s
digital_3(); //顯示3
delay(1000); //延時1s
digital_2(); //顯示2
delay(1000); //延時1s
digital_1(); //顯示1
delay(1000); //延時1s
//綠燈
digitalWrite(ledR,HIGH);
digitalWrite(ledY,HIGH);
digitalWrite(ledG,LOW);
digital_9(); //顯示9
delay(1000); //延時1s
digital_8(); //顯示8
delay(1000); //延時1s
digital_7(); //顯示7
delay(1000); //延時1s
digital_6(); //顯示6
delay(1000); //延時1s
digital_5(); //顯示5
delay(1000); //延時1s
digital_4(); //顯示4
delay(1000); //延時1s
digital_3(); //顯示3
delay(1000); //延時1s
digital_2(); //顯示2
delay(1000); //延時1s
digital_1(); //顯示1
delay(1000); //延時1s
//黃燈
digitalWrite(ledR,HIGH);
digitalWrite(ledY,LOW);
digitalWrite(ledG,HIGH);
digital_3(); //顯示3
delay(1000); //延時1s
digital_2(); //顯示2
delay(1000); //延時1s
digital_1(); //顯示1
delay(1000); //延時1s
}
}
有興趣童鞋的能夠編寫一個帶參數的數碼管顯示子函數,可以使程序更加精減
[ 本帖最後由 晨光熹微 於 2011-6-27 20:20 編輯 ] git