//按鍵按3下,會隨機亮燈 C,T值
#define BUTTON_PIN PB3
byte LEDS[][2] = {
{PB0, PB1}, //0
{PB1, PB0}, //1
{PB0, PB2}, //2
{PB2, PB0}, //3
{PB2, PB1}, //4
{PB1, PB2}, //5
{PB4, PB0}, //6沒用到
{PB4, PB1}, //7沒用到
{PB4, PB2}, //8沒用到
};
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP); //按鍵
}
byte gBtnPress = 0; //按下的次數
bool gDiagnosed = false; //確診值
void loop() {
if (digitalRead(PB3) == LOW) {
gBtnPress ++; //累積按下的次數
led_On(5); //按下燈示
delay(200); //跑馬燈速度
Led_dark(); //全暗
if (gBtnPress >= 3) { //按3次時
Led_Marquee(); //跑馬燈
gBtnPress = 0; //按鍵重新計數
gDiagnosed = ( random(2) == 1) ; //隨機確診值
}
else {
delay(100); //debunce, PB3和GND間要加電容
}
}
if (gBtnPress == 0) { //按完第三次顯示確診值
led_On(1); //C value
if (gDiagnosed) { //是否確診
led_On(3); //T value
}
}
}
void led_On(int index) {
Led_dark();
pinMode(LEDS[index][0], OUTPUT);
pinMode(LEDS[index][1], OUTPUT);
digitalWrite(LEDS[index][0], LOW);
digitalWrite(LEDS[index][1], HIGH);
}
void Led_dark() {
pinMode(PB0, INPUT);
pinMode(PB1, INPUT);
pinMode(PB2, INPUT);
//pinMode(PB4, INPUT);
}
void Led_Marquee() {
for (int i = 0; i <= 5; i++) { //跑馬燈
led_On(5 - i);
delay(200);
}
}