課題7 スピーカー

課題7-1

  1. TINKERCADのサイトにアクセスしてサインインする。
  2. 「新規作成」→「回路」をクリックする。
  3. 入れる部品の種類を「コンポーネント すべて」に切り替え、「Arduino Uno 3」「圧電」「押しボタン×2」「抵抗 (10kΩ)×2」を選んで入れ、図のように配線する。


  4. コードを「文字」に切り替え、以下のコードをコピー&ペーストする。
  5. int sPin=12; // スピーカー用のピン
    int bPin[2]={7, 8};  // ボタン用のピン
    float freq[2]={200, 300}; // 周波数
    boolean isPlaying=false; // 再生中フラグ
    void setup(){
      // ピン設定
      pinMode(sPin, OUTPUT);
      for (int i=0; i<2; i++){
        pinMode(bPin[i], INPUT);
      }
    }
    
    void loop(){
      // 再生中でないときにボタンを押したら
      for (int i=0; i<2; i++){
        if (digitalRead(bPin[i])==HIGH && !isPlaying){
          isPlaying=true; // 再生中フラグをオンにする
          tone(sPin, freq[i], 500); // ボタンに対応する周波数の音を0.5秒鳴らす
          isPlaying=false; // 再生中フラグをオフにする
        }
      }
    }

  6. 実行してボタンを押し、左ボタンで高い音 (300Hz), 右ボタンで低い音 (200Hz) が鳴ることを確認する。
  7. (どちらも鳴る時間は0.5秒)
    (音が聞こえないときはPCのサウンド設定を変える)

  8. 名前を「課題7-1」に変更し、トップページに戻ってこの回路を公開する。

課題7-2

  1. 新しい回路「課題7-2」を作って公開する。

  2. 「課題7-2」を編集し、スピーカーを使った機能をつくる。
  3. 以下に例を挙げるが、これらと全く同じものはNG。

    例1 : 楽譜に書いたメロディを鳴らす (実行すると「ちょうちょう」のメロディが流れる)


    素子・配線
    (12番ピン、GNDとスピーカーの接続のみ)


    コード
    (getFrequency関数に音の名前 (例えば"MI3"など) を渡すと、その周波数が得られる)
    (9~23行目がメロディの配列。音の種類とその長さをセットで書く。レ#の8分音符なら{"RE#3", 125})
    (音の種類を""にすれば休符になる。例えば {"", 250} は4分休符)
    (8行目が音符数+休符数。melodyの配列の要素数に合わせる)
    (49~53行目はドから1オクターブ上のドまでの音の名前。#がついたものは「ド#」など。1オクターブが上がると後ろの数字が1大きくなる (参考))
    (もっと上の音階の音を使いたい場合は、48行目の sNote に入れる数値を増やし、"DO4" のあとに "DO#4", "RE4",... のように追加するとよい)
    (ド、ド#, レ, レ#,...と半音上がるたびに周波数は「2の(1/12)乗」倍に上がる。その性質を利用して54~59行目でそれぞれの音階の周波数を計算している。そのため、メロディの中で使わない音でも49~53行目のリストから省略してはいけない)
    (Arduinoのメモリ容量の制限のため、あまり長い曲は作れない。自由制作で何かの曲を作りたい場合は、そのメロディの音の数だけ同じ音を鳴らしてテストし、ちゃんと鳴るか試すとよい)


    例2 : キーパッドを鍵盤として使ったピアノ
    (キーパッドの16個のキーを鍵盤として使い、キーを押すと対応する音を鳴らす)
    (キーと音階の対応は以下の通り。上から2, 4行目を白鍵、1, 3行目を黒鍵として使う)
    ソ# ラ#
    ド# レ# ファ#
    ファ

    素子・配線
    (キーパッドとArduinoの接続は課題6-1と同じ)


    コード
    (Arduinoで使える文字をキャラクターコード順に並べると、'0'~'9'のあとに':', ';', '<' がつづく。そのため、':'-'0' は 10, ';'-'0' は11, '<'-'0' は12になる)


    実行結果

提出

inserted by FC2 system