2017年3月26日日曜日

chibi:bitで音声

マイコンボードのchibi:bit,今日は音声出力を試してみた。
わかりにくいけど,ブレッドボードの上にあるのがレシーバ(スピーカ)。
携帯電話の受話用などに使うようなレシーバなので,耳元で鳴らす程度。これをchibi:bitのP0とGNDに接続。
で,chibi:bitのIDEで次のようなプログラムを作成して,転送。
120bpmでドとミを交互にならすだけ。で,正常に鳴ることを確認。

じゃあ,ドレミの歌かえるの歌を演奏させてみようということで,これはブロックエディタでは大変(配列が扱えない)なので,javascriptで。
 let REST = 0  
 let C4 = 0  
 let B3 = 0  
 let A3 = 0  
 let G3 = 0  
 let F3 = 0  
 let E3 = 0  
 let D3 = 0  
 let C3 = 0  
 basic.forever(() => {  
 })  
 C3 = 262  
 D3 = 294  
 E3 = 330  
 F3 = 349  
 G3 = 392  
 A3 = 440  
 B3 = 494  
 C4 = 523  
 REST = -1  
 let song = [C3, D3, E3, F3, E3, D3, C3, REST,  
   E3, F3, G3, A3, G3, F3, E3, REST,  
   C3, REST, C3, REST, C3, REST, C3, REST,  
   C3, D3, E3, F3, E3, D3, C3, REST]  
 function playSong() {  
   let i = 0  
   let v = 0  
   for (i = 0; i < song.length; ++i) {  
     v = song[i]  
     if (v < 0) {  
       music.rest(music.beat(BeatFraction.Whole))  
     } else {  
       music.playTone(v, music.beat(BeatFraction.Whole))  
     }  
  }  
 }  
 music.setTempo(120)  
 control.inBackground(() => {  
   playSong()  
 })
動かしてみたら,ちゃんと演奏できた。

じゃあ,輪唱もということで試してみたのだけど,残念ながら,出力は排他的で,勝手に音声を合成してくれるわけじゃなかった。そりゃそうか。

2017年3月18日土曜日

chibi:bitでI/O

先日買ったマイコンボード「chibi:bit」,ようやくI/Oポートを使ってみた。
とりあえず,chibi:bitには,3VとGND,あと任意のI/Oができるポートが3個ついている。
ブレッドボードを使ってI/OをLEDにつないでみた。
その上で,chibi:bitの照度センサの値によって,明るければ0を,暗ければ1023(3V)を出力するようなプログラムを作って実行。
chibi:bitを隠してやると,無事LEDが点灯。おお,簡単にアナログ信号が出力できる。ADC(DACの間違い)内蔵(再修正:アナログ出力はPWMだった)っていうのがいいね。(なお,ADCDACを介さず,デジタルI/Oとしても使用可能)

2017年3月1日水曜日

chibi:bit

イギリスでBBCが小学生に配布している「micro:bit」という教育用マイコンボードがあるとSoftware Design誌で読んで,使ってみたいと思っていたものの,技適の関係で日本では使えないとのことだった。
その記事で,互換機を試作したと書いてあったのだけど,その後忘れていて,ふと気づくと,スイッチサイエンスから互換機「chibi:bit」が発売されていた。(2016年の年末のことらしい)で,買ってみた。

今日届いたので,早速開封。
小さい!勝手に名刺サイズくらいかと思っていたのだけど,5cm×4cmくらいだ。

で,プログラムを書く。
とりあえず,Scratchみたいなブロックプログラムが使えるので,それで。
開発環境はWebブラウザ。ブラウザで,IDEのページ(http://chibibit.io/ide/)にアクセスすると,ブロックプログラム環境が表示される。そこでプログラムを作成して,できたプログラムをダウンロード。
chibi:bit IDE
PCとchibi:bitはUSBケーブルで接続しておく。すると,マスストレージとして見えるので,ダウンロードしたHEXファイルをコピーしてやる。
で,chibi:bit裏面のリセットボタンを押すと,プログラムが動く。とりあえず,Aボタンを押すと矢印が左から右に,Bボタンを押すと矢印が右から左に動くプログラムを作ってみた。(後ろで食洗機がうるさくてすみません)
うーん,簡単。
これなら,子どもも遊べそうだ。

で,なにげにすごいのが,IDEでブロックプログラムを書いたもののjavascript変換結果を見られること。

今回は使っていないけど,

  • 磁気センサ(コンパス)内蔵
  • 加速度センサ内蔵
  • BLE内蔵
  • ADCつきGPIO3ポート
などもあるので,結構楽しめそう。