LMS知識社群歷程檔案Login
123
by 蔡煒俊 2020-01-03 11:33:59, Reply(0), Views(28)
#include<time.h>

#define DELAY_TIME 200
#define RIGHT_LED 2
#define WRONG_LED 3
#define BUTT_1 4
#define BUTT_2 5
#define BUTT_3 6
#define BUZZER 7
const int toneTable[7][5]={

    { 66, 131, 262, 523, 1046},  // C Do

    { 74, 147, 294, 587, 1175},  // D Re

    { 83, 165, 330, 659, 1318},  // E Mi

    { 88, 175, 349, 698, 1397},  // F Fa

    { 98, 196, 392, 784, 1568},  // G So

    {110, 220, 440, 880, 1760},  // A La

    {124, 247, 494, 988, 1976}   // B Si

};
char toneName[]="CDEFGAB";
char beeTone[]="GEEFDDCDEFGGGGEEFDDCEGGEDDDDDEFEEEEEFGGEEFDDCEGGC";
int beeBeat[]={

    1,1,2, 1,1,2, 1,1,1,1,1,1,2,

    1,1,2, 1,1,2, 1,1,1,1,4,

    1,1,1,1,1,1,2, 1,1,1,1,1,1,2,

    1,1,2, 1,1,2, 1,1,1,1,4

};
int getTone(char symbol) {
    int toneNo = 0;
    for ( int ii=0; ii<7; ii++ ) {
        if ( toneName[ii]==symbol ) {
            toneNo = ii;
            break;
        }
    }
    return toneNo;
  }

void setup() {
  
  pinMode(BUZZER,OUTPUT);// 蜂鳴器
  noTone(BUZZER);// 蜂鳴器

  for (int i = 2; i <= 3; i++)// 對錯燈泡
    pinMode(i, OUTPUT);
  for(int LED_TIME=1;LED_TIME<=3;LED_TIME++){// 對錯燈泡
    for(int i=2;i<=3;i++){
      digitalWrite(i,HIGH);
      delay(DELAY_TIME);
      digitalWrite(i,LOW);
      delay(DELAY_TIME);
    }    
  }
  for(int QL=8;QL<=10;QL++)
  pinMode(QL,OUTPUT);
 for(int QL_TIME=1;QL_TIME<=3;QL_TIME++){
    for(int QL=8;QL<=10;QL++){
      digitalWrite(QL ,HIGH);
      delay(DELAY_TIME);
      digitalWrite(QL,LOW);
      delay(DELAY_TIME);
    }
 }
  int j, length, toneNo;
  int duration;
  length = sizeof(beeTone)-1;
  for (int  j=0; j<length; j++ ) {// 入場音樂
       toneNo = getTone(beeTone[j]);
       duration = beeBeat[j]*333;
       tone(BUZZER,toneTable[toneNo][3]);
       delay(duration);
       noTone(BUZZER);
    }

 Serial.begin(9600);
}
void loop(){
  int temp,error=0,score=0;
  for(int times=1;times<=1000;times++){
    int b1 = digitalRead(BUTT_1);
    int b2 = digitalRead(BUTT_2);
    int b3 = digitalRead(BUTT_3);
    temp = times;
    temp = rand()%3+8;
    digitalWrite(temp,HIGH);
    delay(DELAY_TIME);
    digitalWrite(temp,LOW);
    delay(DELAY_TIME);
   Serial.print("score: ");
     Serial.print(score);
      Serial.print("\n");
      delay(DELAY_TIME);
    if(b1==HIGH)
      digitalWrite(2,HIGH);
    else if(b2==HIGH)
      digitalWrite(2,HIGH);
    else if(b2==HIGH)
      digitalWrite(2,HIGH);
    score++;
    error++;
    if(error%5==0){
      score = score - 2;
    }
  }
}
Attachments:
Reply