まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

2016年08月

micro:bit 野球カウンタ

 Block Editorにも慣れてきた感があるので野球カウンタ作ってみた。主審がポケットに持っている、ストライクボールアウトを記録するあれです。

 仕様を考える。Aボタンでストライクを+1、Bボタンでボールを+1、A+B同時押しで全クリア。3ストライクならボールをクリアしてアウト+1、4ボールならストライクをクリア。3アウトで全クリア。アウトの+1はボタンが足らないのでストライクをカウントアップすることで代用。
 3ストライク、4ボール、3アウトでいきなり表示がクリアされてもわかりにくいのでしばらく点滅させる。
 何も表示しないと動いているかどうかわからないので、空いている場所でLEDを点滅させることにした。これはforeverループ内でチカチカさせておく。これはボタン操作とは無関係。
 変数はstrike,ball,out。数値に応じた個数のLEDを左から表示。if〜doではelseを使っている。これはif〜doブロックの歯車マークをクリックし、出てきた吹き出し内でelseをドラッグすればよい。


20160810baseballcounter

 .hexファイルはこちら。https://gist.github.com/houmei/395bb140bb22bfd4c7f84ca458646e2f

こんな表示になる。上からボール、ストライク、アウトね。

2016baseballcounter2


micro:bit互換のchibi:bit、サイコロ続き

 スイッチサイエンスのmicro:bit互換機は名前がchibi:bitに決まったようです。

イギリスの教育向けマイコンボードBBC micro:bitの互換機 「chibi:bit」を開発しました

MFT2016にて、micro:bit互換機「chibi:bit」のテスト版を販売します

 前回の続き。サイコロを数字ではなく目で表示してみる。プログラムの構造も変えて、本体を振ったら乱数のみ生成し、メインのループではそれを受けてLEDの表示を行うことにする。

 on shakeはこんなかんじ。振ったらdiceという変数に1〜6の乱数を入れる。

48

 Block Editorにはarduinoでいうところのvoid begin() { ... }がないのでforever内の冒頭でサイコロを振っていない時のイメージを用意する。無限ループで実行するのは次のwhile do内。
scroll image bg twith offset 5 and interval (ms) 200 で200msごとにLEDを交互にチカチカさせる。この次のif dice > 0 でサイコロが振られたかどうかを判断し、振られていれば背景の動きをstop animetionで止めてclear screenで消去、あとはdiceの数字に合わせた目を表示する。(一部省略)
27


 6の目まで。表示が終わったら2秒まってdice変数を0クリア。これを繰り返す。
57

.hexファイルはこちら。
https://gist.github.com/houmei/ae17406c4cf73bf2239417213f2d15ac


 さきほど、初期化に相当する記述はなさそうだと書いたけどTouch Developに変換するとfunction main()の冒頭、basic → forever doの前で使用する変数の初期化を行っているので、明に書きたければTouch Developでやれということなのかもしれない。あと、配列変数どうすればいいんだろう?この辺制限なく使いたければCK JavaScriptを使えということだろうか。

04


 ぼちぼちつづく。

スイッチサイエンスのBBC micro:bit互換機とBlock Editor

 スイッチサイエンスのmicro:bit 互換機のモニターに応募したら幸運な事に当たったので色々遊んでみた。
 開発環境の簡単な使い方に関してはQiitaの方に書いてみた。ブラウザで完結しておりチュートリアルの通りにやればだいたいOK。
BBC micro:bitの開発環境 (CK JavaScript)

 ここではブロックをドラッグ&ドロップして開発するBlock Editorとそのテキスト版であるTouch Developでサイコロを作ってみた。振ると1〜6を表示する、というのはCK JavaScriptのチュートリアルであったので、ここでは通常時はアニメーション表示、振ったらサイコロの数字を表示して1秒待つ、という風に作ってみる。

2016microbit1


 無限に繰り返して実行するにはBasic→foreverのブロック内に記述する。ここで市松模様を交互に表示させる。foreverはarduinoでのloop() { ... }に似ている。
 Input→on shakeのブロックはmicro:bit本体を振ったときに実行される。この中で乱数を発生し、LEDに数字を表示させる。変数への代入は[set "変数名" to]のブロックと代入する値を並べる。このあたりはブロックの形状でちゃんと左右に置ける場所が決まっている。
 さて、foreverループはバックグラウンドで実行され、on shakeで割り込みが発生してサイコロの数字を表示を表示後1秒待たせたいのだが、その間にforeverループでLED表示が上書きされてしまう。そこでon shake内でwaitという変数に1を代入する。foreverループ内ではwaitが1のときに次のステップに移らないよう待たせる。on shakeで1秒待った後、変数waitを0にすることでforever内の待ち合わせを解除する。
変数は最初は0に初期化されるようだ。

 Block Editorの画面コピー。
20160803microbit


 画面上部にあるボタンのRunでシミュレーションしたり、compileで.hexファイルを作りPCにmicro:bitを接続して現れるMBEDディスクにコピーすることで実機での実行ができる。また、convertでTouch Developの形式に変換することができる。
 My Scriptsの画面でソースを保存することができる。拡張子は.jszだが内容は十六進のダンプファイルである。

https://gist.github.com/houmei/2cbe532870ab071a777abc3d50c6d012

 このソースをcreate code画面のImport Codeで読み込むことができる。
20

 ということでちょっと遊んでみてください。

 以下は小型ラジコン用のバッテリー(公称3.7V)を繋いでみたところ。ウェアラブルもOKよ。

2016microbit2



記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ