///////////////////////////////////////////////////////////
// /*
// 電子元件:LED
// 功能:紅綠燈
// */
// #define redPin 13
// #define yellowPin 12
// #define greenPin 14
// void setup() {
// pinMode(redPin, OUTPUT);
// pinMode(yellowPin, OUTPUT);
// pinMode(greenPin, OUTPUT);
// }
// void loop() {
// // 綠燈3秒
// digitalWrite(greenPin, HIGH);
// delay(3000);
// digitalWrite(greenPin, LOW);
// // 黃燈1秒
// digitalWrite(yellowPin, HIGH);
// delay(1000);
// digitalWrite(yellowPin, LOW);
// // 紅燈5秒
// digitalWrite(redPin, HIGH);
// delay(5000);
// digitalWrite(redPin, LOW);
// }
//////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/*
電子元件:LED
功能:紅綠燈 + 倒計時
*/
// 紅綠燈腳位設定
#define redPin 13
#define yellowPin 12
#define greenPin 14
// 七段顯示器腳位設定
#define pin_A 19
#define pin_B 18
#define pin_C 4
#define pin_D 2
#define pin_E 15
#define pin_F 21
#define pin_G 22
#define pin_DP 5
// 七段顯示器
byte segmentPins[8] = {pin_A, pin_B, pin_C, pin_D, pin_E, pin_F, pin_G, pin_DP};
int num[10][8] = {
{1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1, 0},
{1, 1, 1, 1, 0, 0, 1, 0},
{0, 1, 1, 0, 0, 1, 1, 0},
{1, 0, 1, 1, 0, 1, 1, 0},
{1, 0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 1, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 0, 1, 1, 0},
};
void displayNum(int number){
for(int j = 0; j < 8; j++){
digitalWrite(segmentPins[j], num[number][j]);
}
}
// 紅綠燈
byte trafficLightPin[3] = {redPin, yellowPin, greenPin};
void trafficLight(int color, int ms){
int s = ms/1000;
digitalWrite(trafficLightPin[color], HIGH);
for(int i=0; i<=s; i++){
displayNum(s-i);
delay(1000);
}
digitalWrite(trafficLightPin[color], LOW);
}
void setup() {
// 七段顯示器初始化
for(int i = 0; i < 8; i++){
pinMode(segmentPins[i], OUTPUT);
}
// 紅綠燈初始化
for(int i = 0; i < 3; i++){
pinMode(trafficLightPin[i], OUTPUT);
}
}
void loop() {
// 綠燈5秒
trafficLight(2, 5000);
// 黃燈1秒
trafficLight(1, 1000);
// 紅燈3秒
trafficLight(0, 3000);
}