/* 期中考 :
* 有B.C兩顆按鈕,兩顆沒有按下時,
* 0~9循環(A迴圈),
* 按下B時,亂數K,顯示K,直到按下C
* 按下C時,如果K是0~5,向左三圈
* 如果K是6~9,向右三圈
* 然後繼續循換0~9
*/
int pins[7] = {D3,D2,D4,D5,D6,D0,D1};
const boolean data[11][7] = {
1,1,1,1,1,1,0, // 0
0,1,1,0,0,0,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
1,0,1,1,1,1,1, // 6
1,1,1,0,0,1,0, // 7
1,1,1,1,1,1,1, // 8
1,1,1,1,0,1,1, // 9
0,0,0,0,0,0,0, }; // 10 ( off_all_LED )
void writeNumber(int n){ //把七段顯示器顯示函式獨立
for(int i = 0; i < 7; i++){
digitalWrite(pins[i], data[n][i] == HIGH);
} }
void setup(){
Serial.begin(9600);
pinMode(D0,OUTPUT);
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
pinMode(D5,OUTPUT);
pinMode(D6,OUTPUT);
pinMode(D7, INPUT);
pinMode(D8, INPUT);
}
int k;
boolean X = false;
boolean Y = true;
void loop(){
int b = digitalRead(D7);
int c = digitalRead(D8);
if(b == HIGH && c == LOW && Y == false) {
Y = true;
k = random(10);
writeNumber(k); delay(250);
Serial.println("B迴圈1"); //按下B
Serial.print("亂數 = "); Serial.println(k);
}
else if(b == LOW && c == LOW && Y == true) {
writeNumber(k); delay(250);
Serial.println("B迴圈2"); //放開B,等待C按下
Serial.print("亂數 = "); Serial.println(k);
}
else if(b == LOW && c == HIGH && Y == true) {
X = !X; Y = false; Serial.println("C迴圈"); //C按下,執行C
if (k <= 5){
writeNumber(10);
for (int n = 0; n <= 2; n++) {
Serial.println("向左,順");
for (int thisPin = 6 - 1; thisPin >= 0; thisPin--) {
digitalWrite(pins[thisPin], HIGH);
delay(100);
digitalWrite(pins[thisPin], LOW);
} //向左,逆
}
}
else if (k >= 6){
writeNumber(10);
for (int n = 0; n <= 2; n++) {
Serial.println("向右,順");
for (int thisPin = 0; thisPin < 6; thisPin++) {
digitalWrite(pins[thisPin], HIGH);
delay(100);
digitalWrite(pins[thisPin], LOW);
} //向右,順
}
}
}
else if(b == LOW && c == LOW && Y == false){
for(int n = 0; n <= 9; n++){
writeNumber(n); delay(250);
Serial.println("A迴圈"); //C執行結束,進入A,等待B按下
}
}
}