課題4 いろいろな入出力

課題4-1

  1. TINKERCADのサイトにアクセスしてログインする。
  2. 「新規作成」→「回路」をクリックする。
  3. 入れる部品の種類を「コンポーネント すべて」に切り替え、「Arduino Uno R3」「Neo Pixel Ring 16」「電位差計」(3つ) を選んで入れ、図のように配線する。


  4. コードを「文字」に切り替え、以下のコードをコピー&ペーストする。
  5. #include <Adafruit_NeoPixel.h>
    int diffPin[] = {A0, A1, A2}; // 電位差計につながるピン
    int pixelPin = 5; // NeoPixelにつながるピン
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(16, pixelPin, NEO_GRB+NEO_KHZ800);
    
    void setup(){
      pixels.begin(); // NeoPixel開始
      pinMode(pixelPin, OUTPUT); // NeoPixelにつながるピンを出力に設定
      for (int i=0; i<3; i++){
        pinMode(diffPin[i], INPUT); // 電位差計につながるピンを入力に設定
      }
    }
    
    void loop(){
      for (int i=0; i<16; i++){ // LEDに対する繰り返し
        int c[3]; // RGB成分の明るさ
        for (int j=0; j<3; j++){ // 色に対する繰り返し
          int v = analogRead(diffPin[j]); // 電位差計の値の読み込み(0~1023)
          int n = (v+32)/64; // それを0~16の値に変換
          c[j] = 50*(i<n?1:0); // nがiより大きければ50, そうでなければ0
        }
        // i番目のLEDの色を設定
        pixels.setPixelColor(i, pixels.Color(c[0], c[1], c[2]));
      }
      pixels.show(); // NeoPixelに反映
    }

  6. 実行してボタンを押し、3つのダイヤルを動かしてそれぞれR, G, B成分が入ったLEDが増減することを確認する。
  7. (左から順にR, G, B成分をコントロールするもの。それぞれ一つだけをフルにすると赤・緑・青に光る。2つ混ぜるとシアン(水色)・マゼンタ(紫)・黄色、3つ混ぜると白になる)


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

課題4-2

  1. 新しい回路「課題4-2」を作って公開する (「新しい回路」ボタンからでもよいし、「課題4-1」のコピーでも構わない)。

  2. 「課題4-2」を編集し、電位差計、スライドスイッチ、DIPスイッチ、Neo Pixelのうち、少なくともどれか1つを使った機能をつくる (ただし、前回の「Arduino の LCD」のようなデフォルトの組み合わせに最初から入っている電位差計のようなものは除く)。
  3. 以下に例を挙げるが、これらと全く同じものはNG。

    例1 : LEDが1つだけ赤く点灯する。その位置が0.1秒ごとに反時計回りに動き、「IN」の次の位置に来たところで押しボタンを押すとLCDに「Hit!」、外すと「Miss」と表示される。点灯位置が1周すると表示が消える
    素子・配線
    (割り込み処理は2番ピンか3番ピンでしかできないため、LCD用には別のピンを使う。「2線 LCD」で入れたものから、紫の配線をArduinoの7番ピンにつなぎ直して他の素子・配線を追加する)


    コード


    実行結果



    例2 : 上の行に電位差計の生のデータ、下の行にそれをグラフにしたものを表示する
    素子・配線
    (「2線 LCD」で入れたものに電位差計を追加し、3本の配線を追加)


    コード


    実行結果
    (右の電位差計のダイヤルを動かすと、それに合わせて数値とグラフが変化する)

    グラフの表示には、前回の課題3-2の例3のようにオリジナルの文字を追加してそれを使っている。0番の文字は一番下のピクセルだけが白、1番は下2行が白、...で、7番はすべて白で埋め尽くされた文字。
    ちょっと工夫すれば、上下2段を使って表現することもできる。

提出

inserted by FC2 system