2015年5月7日 星期四

課程10-搶答器

目的:

使用Arduino製作一個簡單的搶答器,讓最先按到按鈕的人顯示燈號,並發出聲音,第二位以後的玩家無法再搶答,有一個重製按鈕,來開啟下一局。


電子元件:
麵包板 x 1
Arduino 主板 x 1
無斷開關 x 4
LED x 3
蜂鳴器 x 1

電路圖:



程式碼:



  1. #include "pitches.h"
  2. const int buzzer = 8;
  3. const int buttonA = 2;
  4. const int buttonB = 3;
  5. const int buttonC = 4;
  6. const int buttonRest = 5;
  7. const int ledPinA = 9;
  8. const int ledPinB = 10;
  9. const int ledPinC = 11;
  10. boolean start_flag=true;
  11. void setup(){
  12.  pinMode(ledPinA ,OUTPUT);
  13.  pinMode(ledPinB ,OUTPUT);
  14.  pinMode(ledPinC ,OUTPUT);
  15.  pinMode(buttonA ,INPUT);
  16.  pinMode(buttonB ,INPUT);
  17.  pinMode(buttonC ,INPUT);
  18.  pinMode(buttonRest  ,INPUT);
  19. }
  20. void loop(){
  21.  if(start_flag){
  22.    if(digitalRead(buttonA) == HIGH){
  23.      digitalWrite(ledPinA,HIGH);
  24.      start_flag = false;
  25.      tone(buzzer,NOTE_F5,1000);
  26.    }
  27.    if(digitalRead(buttonB) == HIGH){
  28.      digitalWrite(ledPinB,HIGH);
  29.      start_flag = false;
  30.      tone(buzzer,NOTE_F5,1000);
  31.    }
  32.    if(digitalRead(buttonC) == HIGH){
  33.      digitalWrite(ledPinC,HIGH);
  34.      start_flag = false;
  35.      tone(buzzer,NOTE_F5,1000);
  36.    }
  37.  }
  38.  if(digitalRead(buttonRest ) == HIGH){
  39.    digitalWrite(ledPinA,LOW);
  40.    digitalWrite(ledPinB,LOW);
  41.    digitalWrite(ledPinC,LOW);
  42.    start_flag = true;
  43.  }
  44. }


程式說明:

第一行 匯入定義檔。
第二行 定義蜂鳴器腳位為Pin8。
第三行~第九行 定義四個按鈕分別為Pin2、Pin3、Pin4、Ping5,三個LED腳位為Pin8、Pin9、Pin10。
第十行 定義一個布林變數start_flag用來辨別是否開始搶答。
第十一行~第十九行  宣告LED 為輸出腳位、開關為輸入腳位。
第二十行~第四十四行 為主程式。
第二十一行~第三十七行 先用IF來辨別現在是否在搶答,如果在搶答,就偵測開關。
第二十二行~第二十六行 使用IF辦別按鈕A有沒有被按如果有執行下面三行:
第二十三行 把LEDA打開。
第二十四行 並把搶答旗標設定結束強答。
第二十五行 發出聲音。
第二十七行~第三十一行 使用IF辦別按鈕B有沒有被按如果有執行下面三行:
第二十八行 把LEDB打開。
第二十九行 並把搶答旗標設定結束強答。
第三十行 發出聲音。
第三十二行~第三十六行 使用IF辦別按鈕C有沒有被按如果有執行下面三行:
第三十三行 把LEDC打開。
第三十四行 並把搶答旗標設定結束強答。
第三十五行 發出聲音。
第三十八行~第四十三行 把LED 全部關閉,並起設定搶答旗標為開始搶答。

實實影片:

1 則留言:

  1. 你好,最近也想要做一個搶答器,直接用上面程式碼就可以嗎?
    如果沒有定義檔差在哪邊呢?
    如果一定要定義檔,可否提供此#include "pitches.h"定義檔呢?謝謝

    回覆刪除

Arduino、Raspberry Pi、System Integration,如有問題或建議,可以互相討論喔~