Posted at

(再掲)micro:bitでリズムをきざむ

More than 1 year has passed since last update.

これは micro:bit Advent Calendar 2017 の 24 日目の記事(の再掲)です。

※YouTube埋め込みたくてはてなブログに書いていた


何をつくるか

ボタンでリズムを作って鳴らすやつを作りたい。

なんて呼ぶのか分からないのだが機能的にはステップシーケンサーに近い?


部品をそろえる

8拍子コントロールするのにスイッチを8つ買うことにした。あとはmicro:bit使ってみることにした。

Amazonやスイッチサイエンスで部品を探してポチる。


micro:bit

今回の主役。USB microケーブルでPCと接続し、Webで書いたプログラムを書き込む。


タクトスイッチ

もう一方の主役。ステップのON/OFFを制御するのに使う。好みでok。


その他

ここに書いたのを買った場合、しめて7000円弱。LED周りはmicro:bitについているものをそのまま使えば買わなくてよい。

さらにマストではないけど配線上の電圧やスイッチの仕様などの確認でテスターが手元にあるとよい。


使う入力ピンを決める

入出力端子の一覧を見ながら、どのピンにデジタル入力がきたらON/OFFが変わるようにするかを考える。

LEDと共有されていないP5, P1, P8, P16, P2, P13, P14, P15をここでは使うことにした。

イヤホン出力はP0から行う。


配線する

ブレッドボードジャンパー、メス-オスジャンパー、ワニ口クリップを取り回して配線する。各タクトスイッチを押すと電源ラインが入力ピンと導通するだけのシンプルな回路。

エッジコネクタボード上の配線は次のようにする。


  • 3.3V(右から3つめのピン、赤いケーブル)をブレッドボードの電源ラインへ。

  • P0(左から2つめのピン、左、赤ケーブル)をイヤホンジャックへ。

  • GND(右から1/2つめのピン)をイヤホンジャックへ。

  • 残りのデジタル入力ピンをタクトスイッチへ。

イヤホンはジャックを買う必要はなく、ワニ口クリップでつなげばP0からの出力で音が出る。


変数をつくる

せっかくなので、ブロックでのプログラミングをやってみる。

まず初期化で、必要な変数をつくる。


  • 各ステップのON/OFFをtrue/falseで保持する配列

  • 各ステップを表示するLEDの座標(x,y)を保持する配列


ON/OFFの値を変える

foreverループで8拍子分のステップを回す。毎ステップごとに全てのタクトスイッチの入力を読み、入力があれば該当するステップの変数のON/OFFを切り替える。


ON/OFFの値を出力する

まず、該当するステップの変数を見る。

OFFだったら何もしないで20ミリ秒待つ。

ONだったらLEDとイヤホンへ出力して20ミリ秒待ち、LEDを消す。

ここでLEDのどこかを光らせる・消すかを決めるのに、先ほど作っておいた座標配列を使う。次のステップに行く前に適当に(ここでは250ms)待つ。


動かす

画面のシミュレータでも確認した後、プログラムのhexファイルをダウンロードしてFinder上でmicro:bitへドラッグする。

動画にうつっていないのだが音はイヤホンから出ている。


感想

スイッチ入力はトグルスイッチを使えば変数の値の設定が楽になるだろうし、可変抵抗やアナログ入力を使えば、音程、BPMなども調整できるようになるはず。クリスマスソング鳴らすのもいいけど、自分で音をいじってみるのもなかなか楽しい。


参考書籍

これを買えば基本的なことはだいたいわかる。