秘技「USBコネクタ to WS2812B」でよりコンパクトに!単4電池1本でどこまでやれるか!?

秘技「USBコネクタ to WS2812B」でよりコンパクトに!単4電池1本でどこまでやれるか!?

IMG_3538

エモウェアはとにかく軽く、マルツで見つけた 1.5v -> 5v 昇圧回路 MHT77X-5V-KIT を使ってみましょう。

IMG_3539.jpg

電池ボックスは軽さと入手性から単4を選択。

IMG_3541.jpg

端子はmicroUSBケーブルを1つ壊してそれを取り付け。

IMG_3542.jpgIMG_3543.jpg

今回の目玉、USB to WS2812B(いや、WS2812B to USB ?)。

IMG_3544.jpg

いいでしょ?

// install emo-driver for KB1
{
    var a=mem(" ");
    mem(a,0xf0,0xb5,0x89,0xb0,0x72,0xb6,0xa0,0x22,0x80,0x20,0x80,0x24,0xd2,0x05,0x00,0x02);a=a+16;
    mem(a,0x13,0x58,0x23,0x43,0x13,0x50,0x24,0x4b,0xd0,0x58,0xa0,0x43,0xd0,0x50,0x00,0x20);a=a+16;
    mem(a,0x0f,0x68,0x03,0x94,0xf9,0x68,0x04,0x92,0x06,0x91,0x06,0x9a,0x90,0x42,0x37,0xd0);a=a+16;
    mem(a,0x10,0x21,0xc5,0x00,0x7a,0x19,0x05,0x92,0x05,0x9a,0x80,0x26,0xd2,0x69,0x0a,0x41);a=a+16;
    mem(a,0xd2,0xb2,0x07,0x92,0x08,0x22,0x02,0x92,0x07,0x9a,0x02,0x24,0x32,0x40,0x01,0xd0);a=a+16;
    mem(a,0x00,0x24,0x02,0x22,0x04,0x9d,0x01,0x92,0xed,0x58,0x03,0x9a,0x15,0x43,0x04,0x9a);a=a+16;
    mem(a,0xd5,0x50,0xa0,0x22,0xd2,0x05,0x94,0x46,0x01,0x9a,0x01,0x3a,0x01,0x92,0x01,0xd3);a=a+16;
    mem(a,0xc0,0x46,0xf9,0xe7,0x62,0x46,0x03,0x9d,0xd2,0x58,0xaa,0x43,0x65,0x46,0xea,0x50);a=a+16;
    mem(a,0x01,0x3c,0x01,0xd3,0xc0,0x46,0xfb,0xe7,0x02,0x9a,0x76,0x08,0x01,0x3a,0x02,0x92);a=a+16;
    mem(a,0x00,0x2a,0xd9,0xd1,0x08,0x39,0x0a,0x00,0x08,0x32,0xcd,0xd1,0x01,0x30,0xc4,0xe7);a=a+16;
    mem(a,0x62,0xb6,0x09,0xb0,0xf0,0xbd,0xc0,0x46,0xfc,0x3f,0x00,0x00);
    env(new Array(0));mem();
}
// send lighting plan to LED tape
function emo(p){env(p);mem();}

こちらが KB1 から WS2812B の DI 信号を出すドライバ。このドライバは一度動くとキーボードを使えなくなるので、戻したい場合はハードリセット。

IMG_3546.jpg

単4乾電池1本で動作するエモデバイスのできあがり。

IMG_3548.jpg

もちろん IchigoDake + IchigoIgai でも同じ。これで8時間ほど動く予定、実験です。

[追記]結果

2時間半ほどで赤色になり、光が弱くなった。んー、もう少し伸ばしたいところ。

Screen Shot 2018-10-30 at 14.50.19.png

秋月電子にはもっと小さい昇圧器もあるので、まだまだ小型化できそう。

Screen Shot 2018-10-30 at 14.51.39.png

そもそも 3.3v でやっちゃえば IchigoDake だけでいけるので、そっちも実験ですね。

IMG_3551.jpg

胸ポケットにおさまった!エモポケット!

IMG_3535.jpg

単4電池なら4本で100円、25円/本!

 

 

 

 

 

 

.

 

WS2812Bの消費電流はmax 50mA/個!省エネ プログラムを開発してより軽く身につけよう!

WS2812Bの消費電流はmax 50mA/個!省エネ プログラムを開発してより軽く身につけよう!

IMG_3507

WS2812B LEDテープを身につけるために、まずは消費電力の調査。8個をフルパワーで光らせると約400mA。1個あたり約50mA、けっこう食います。

この動画では5個のLEDを 各色 rnd(0x80) で光らせています。この状態で40mA程度。暗いところであればこれくらいのパワーでも眩しいです。例えばこれを8時間身につけたければ 320mAh 必要です。アルカリ単4電池が 1,000mAh ぐらいらしいので、なるべく軽く小さく8時間程度、がんばれるかも!?


 

flyer01.png

PCNこどもプロコン2018、文科省についで経産省にも後援をいただきました。そしてなんと国立高等専門学校機構からも後援予定!

さぁみんな、エモい作品もそうでない作品も、どしどし応募しよう!

 

 

 

 

 

 

 

.

 

エモい作品をJavaScriptでも!IchigoLatte用 WS2812B LEDテープドライバ “emo-driver” 完成!

エモい作品をJavaScriptでも!IchigoLatte用 WS2812B LEDテープドライバ “emo-driver” 完成!

iottie1-02.jpg

LED間接照明のエモいネクタイ「IoTie」を福野くんが作っています。こんなネクタイならしてみたい。

IMG_3424.jpg

というわけで、IchigoLatte JavaScript によるエモ工作に挑戦です。とっても便利なLEDテープ( ¥2,860/150個 )ですが、通信プロトコルは独自仕様。IchigoJam BASICではマシン語によるドライバをインクルードしています。IchigoLatte JS 1.1.7以降 のマシン語は強化されているので、今回は WS2812B 用ドライバ を作るところから。

仕様はこちら。μsec単位のパルスでH,Lを送信して各LEDのGRBを0x00~0xffで指定、シンプルですね。

// install emo-driver
{
    var a=mem(" ");
    mem(a,0xf0,0xb5,0x85,0xb0,0x72,0xb6,0x0e,0x68,0x00,0x21,0xf3,0x68,0x02,0x93,0x02,0x9b);a=a+16;
    mem(a,0x99,0x42,0x3c,0xd0,0x10,0x22,0xcc,0x00,0x33,0x19,0x01,0x93,0x01,0x9b,0x80,0x25);a=a+16;
    mem(a,0xdb,0x69,0x13,0x41,0xdb,0xb2,0x03,0x93,0x08,0x23,0x9c,0x46,0x03,0x9b,0x02,0x20);a=a+16;
    mem(a,0x2b,0x40,0x01,0xd0,0x00,0x20,0x02,0x23,0xa0,0x27,0x16,0x4c,0x00,0x93,0xff,0x05);a=a+16;
    mem(a,0x3f,0x59,0x04,0x24,0x27,0x43,0xa0,0x24,0x12,0x4b,0xe4,0x05,0xe7,0x50,0x1f,0x00);a=a+16;
    mem(a,0x00,0x9b,0x01,0x3b,0x00,0x93,0x01,0xd3,0xc0,0x46,0xf9,0xe7,0xa0,0x23,0x04,0x24);a=a+16;
    mem(a,0xdb,0x05,0xdb,0x59,0xa3,0x43,0xa0,0x24,0xe4,0x05,0xe3,0x51,0x01,0x38,0x01,0xd3);a=a+16;
    mem(a,0xc0,0x46,0xfb,0xe7,0x01,0x23,0x5b,0x42,0x9c,0x44,0x63,0x46,0x6d,0x08,0x00,0x2b);a=a+16;
    mem(a,0xd4,0xd1,0x08,0x3a,0x13,0x00,0x08,0x33,0xc8,0xd1,0x01,0x31,0xbf,0xe7,0x62,0xb6);a=a+16;
    mem(a,0x05,0xb0,0xf0,0xbd,0xfc,0x3f,0x00,0x00);
}
// send lighting plan to LED tape
function emo(p){env(p);mem();}

こちらが完成したドライバ、その名も「emo-driver」。これをソースの先頭にインクルード(書いておく)してください。

var plan = new Array(5);

plan[0] = 0x00ff00;
plan[1] = 0xff0000;
plan[2] = 0x0000ff;
plan[3] = 0xffffff;
plan[4] = 0x202020;

emo(plan);

こちらがLED5個の場合のサンプルコード。5個の配列を作って各要素にLEDの色を0xGGRRBBで指定、その配列を emo(…) に渡せばLEDテープに信号を投げてくれます。(信号送信時に画面がブレます。気になる方は video(0) しておいてください。)

IMG_3426 copy.jpgIMG_3429 copy.jpgIMG_3427 copy.jpg

接続はこう。DIはEXに接続します。

IMG_3433.jpg

モバイルバッテリーにつなげばどこででも光らせられますね。

var plan = new Array(32);

var t = -90;
var r = 0xff;
var g = 0xff;
var b = 0xff;
while(1){
    if((t+90)%360 == 0){
        r = (rnd(0x80)+0x00);
        g = (rnd(0x80)+0x00);
        b = (rnd(0x80)+0x00);
    }
    var s = sin8(t)+0x100;
    var l = (((g*s)>>9)<<16) + (((r*s)>>9)<<8) + (((b*s)>>9)<<0);
    plan[ 0] = l;
    plan[ 1] = l;
    plan[ 2] = l;
    plan[ 3] = l;
    plan[ 4] = l;
    plan[ 5] = l;
    plan[ 6] = l;
    plan[ 7] = l;
    plan[ 8] = l;
    plan[ 9] = l;
    plan[10] = l;
    plan[11] = l;
    plan[12] = l;
    plan[13] = l;
    plan[14] = l;
    plan[15] = l;
    plan[16] = l;
    plan[17] = l;
    plan[18] = l;
    plan[19] = l;
    plan[20] = l;
    plan[21] = l;
    plan[22] = l;
    plan[23] = l;
    plan[24] = l;
    plan[25] = l;
    plan[26] = l;
    plan[27] = l;
    plan[28] = l;
    plan[29] = l;
    plan[30] = l;
    plan[31] = l;
    emo(plan);
    t=t+1;
    sleep(20);
}

IchigoLatte JavaScript の配列は最大32なので、今回のエモ-ドライバで32の長さのLEDテープを制御できます。ドライバにループさせる機能をつければもっと長いのもいけますね。動画は32個をランダムな色で呼吸させるプログラム!

IMG_3440.jpg

さっそくIchigoDakeにプログラムを入れてウェアラブルに。コイン電池の3Vからでも一応光りますが青色が弱い。WS2812Bの仕様上は3.5v以上のようですね。軽くて小さくてコンビニでも入手可能な3.5v前後の電池ほしいな。

みんなも「イケすぎウェア」を作ってみよう!


 

flyer01.png

みんなのエモい作品、待ってます

 

 

 

 

 

 

.

 

CEATECにたくさん来ブースいただきありがとうございました!これからのこども達にご期待ください!

CEATECにたくさん来ブースいただきありがとうございました!これからのこども達にご期待ください!

IMG_3277IMG_3281.jpg

CEATEC、弊社NaturalStyleは福井県ブースにお邪魔して出展しました。

IMG_3287.JPG

こんな立派なブース、ありがとうございます。大変多くの方に立ち寄っていただき、参考になる意見をいただくことができました。今後の動きにご期待ください。

 

IMG_3295.jpg

会場には様々あります。こちらはメガネにデバイスを簡単に取り付けることができる「neoplug」メガネ。フレームに汎用のアタッチメント構造を持っています。これはアイデア湧きそう。

IMG_3296.jpg

こちらはバンダイ発「おけいこびっと」。

IMG_3297.jpg

中にはmicro:bit

IMG_3300.jpg

いよいよおもちゃメーカーも本格的に参入してくれそうです、ありがとうございます!

IMG_3308.jpg

NORDIC社も出展していました。Bluetooth SDKについて改善を要望してみましたが、なかなか難しいとのこと。

IMG_3302.jpg

電子工作マガジンの電波新聞社も出展。IchigoJamも販売していただけました。

IMG_3305.jpg

電波新聞社、ベーマガグッズも販売中!

 

IMG_3318.JPG

香港から CLASSROOM の Waris-san、来ブースありがとうございます!

IMG_3319.JPG

さくらインターネット 田中さん、来ブースありがとうございます!

 

たくさんのご意見、とても励ましになりました。これからのこども達にご期待ください!

 

 

 

 

 

 

.

 

フィボナッチ数を出しまくれ!Scratch, BASIC, JavaScript そして Quest、はたして君の考えたやり方は本当に動くのか!?

フィボナッチ数を出しまくれ!Scratch, BASIC, JavaScript そして Quest、はたして君の考えたやり方は本当に動くのか!?

IMG_3241

昨日のPCN勝山クラブで、こどもがフィボナッチ数列を出したいとScratchでプログラムを組み出しました。何やら小学6年生の算数の教科書にフィボナッチ数列がのっていたらしく、フィボナッチ数列を出す機械を作りたいとのことで、できたソースコードが上の写真。過去2つの数値を足し続ける、ということで変数を2つ、なかなか良い出来です。

では、BASIC だとどうでしょうか。

IMG_3250.jpg

10 Z=1
20 L=1
30 ?1:WAIT60
40 @ズット
50   ?L:WAIT60
60   Z=L+Z
70   ?Z:WAIT60
80   L=L+Z
90 GOTO @ズット

こちらは上記Scratchコードをそのまま IchigoJam BASIC に移植したもの、行数も同じです。ちなみに出たばかりの最新バージョン 1.3b1 。

実行するとこんな具合です。

IMG_3253.jpg

28657 の次に -19168 となっているのは、IchigoJam BASIC の変数箱の大きさが -32,768~32,767 であるため。この範囲外に出ようとするとおかしな値になります。

 

では JavaScript だとどうでしょうか。

IMG_3254.jpg

var zee=1;
var loo=1;
log( 1, "\n" );sleep(1000);
while(1){
  log( loo, "\n" );sleep(1000);
  zee=loo+zee;
  log( zee, "\n" );sleep(1000);
  loo=loo+zee;
}

こちらは IchigoLatte JavaScript に移植したもの、同じですね。

実行するとこんな感じです。1836311903 の次が -1323752223 になっているのは BASIC 同様、変数箱の数値範囲を超えたからです。IchigoLatte JS の数値範囲は -2,147,483,648~2,147,483,647 で、IchigoJam BASIC よりも大きい数字を扱えます。(最後、画面にゴミが出ているのはマシンスタックが不足したためで、IchigoLatteの仕様です。ご愛嬌。)

 

さて、お次はQuest言語で。

IMG_3258.jpgIMG_3259.jpg

IchigonQuestでのソースコードはこういう具合、全11行に移植しました。表示は じゅもん「ぷりんと」でもよかったですが「はこG に入れることが表示である」ということしました。

実行するとこういう具合です。IchigoJam BASIC と同じで 28657 の次が -19168 になっています。IchigonQuest の変数の数値範囲も -32,768~32,767 です。Quest言語は実行しているところも見えるし、変数の中身も常に見えているので楽ですね。ちなみに「ゆっくり実行」もあるので、どこを実行しているのかゆっくり見ながら楽しむこともできます。

 

さて、最後にScratch 3.0でやってみましょう。

IMG_3261.jpg

こちらがソースコードです。現状のScratchと色使いまで同じですね。

実行するとこんな具合、おなじみのネコが喋ります。Scratch 3.0 は一般的なJavaScriptで作られているらしく、数値範囲は ±1.7976931348623157×10³⁰⁸ ぐらいでしょうか(詳細求む)。リッチなプログラミング環境だと表現力もリッチ、リッチな君は挑戦してみよう!ちなみに、何秒見ていれば最後を見れるか、わかるかな?

 

今回のプログラムはあくまで1つのやり方。プログラミングに正解はない、君も君なりのやり方でやってみよう、それこそが「プログラミング的思考」です。


 

IMG_3263.jpg

Scratchの開発者 ミッチェル・レズニック教授 もやって来る「SCRATCH 2018 TOKYO」は今週末 2018.10.20(sat) 、六本木アカデミーヒルズ (六本木ヒルズ・森タワー49階) にて。残念ながら事前申し込みは定員に達したためClosedとのこと。

Scratch好きに会えるチャンス!

 

 

 

 

 

 

 

 

 

.

 

呼吸するLEDで「Lチカウェア」、自前PWMで光る強さをいろんな数式に変えてみよう!

呼吸するLEDで「Lチカウェア」、自前PWMで光る強さをいろんな数式に変えてみよう!

IMG_3199.jpg

胸元で輝く「ウェアラブルLチカ」、最近のお気に入りです。でもちょっと物足りない。

IMG_3215

というわけで今回は「呼吸するLチカ」をやってみましょう。

var ss=new Array(2);
ss[0]=64;
ss[1]=1;

var sn=0;

while(1){
 var t=0;
 while( t<180 ){
  var b=sin8(t);

  led(1);
  sleep( b>>4 );
  led(0);
  sleep( (256-b)>>4 );

  t=t+ss[sn];
 }

 sn=(sn+btn())&0x1;

 sleep(3333,1);
}

使用したOSはIchigoLatte、JavaScriptでプログラミングします。コードはこのようにしてみてください。sinを使ってゆるーりと呼吸するようにしてみました。ちなみにボタン電池で駆動させるため省エネ目的で起動時は瞬ピカモード、ボタンを押すと呼吸モードになります。

いかがでしょう?

胸元がちょっとカッコよくなりました。もう少し尾をひく消え方もいいですね、みんなもsinだけでなくいろんな数式を考えてみよう。

 

contest2018-2.jpg

ギャル電さんのようなLチカウェアを作ったなら、ぜひPCNプロコンに応募を。みなさんの作品、お待ちしています!

 

 

 

 

 

 

 

.

 

低学年はキーボードで運筆から!リンゴが美味しい信濃へお越しの際はぜひ南相木村の文化祭にもどうぞ。この秋は「すべてのこども達に芸術も!」

低学年はキーボードで運筆から!リンゴが美味しい信濃へお越しの際はぜひ南相木村の文化祭にもどうぞ。この秋は「すべてのこども達に芸術も!」

IMG_3167

りんごが豊作、長野県佐久平。

IMG_3142.jpg

今月の南相木村、低学年のクラスはもうキーボードもお手の物。何はともあれまずは運筆。

IMG_3144.jpg

「命令を繰り返したい」というナイスな質問が飛び出し、GOTOをレクチャーしました。やりたいことが出てくるのは良いことです。

IMG_3153.JPG

高学年〜中学生クラスは前回仕掛けて帰った3Dプリンタの剥がしから。

IMG_3146.jpg

綺麗に寺子屋のプレートが完成していました。

IMG_3155.JPG

文化祭の展示に向けて、今度はプレートのついたて作り。

IMG_3150.jpg

これも次回までに完成してるかな?

IMG_3160.JPGIMG_3152.JPG

展示用のゲーム「キノコヲヒロエ」も完成!ぜひ南相木村に立ち寄ってこども達の展示をご覧ください。

IMG_3169.jpgIMG_3172.jpg

この時期、シャキシャキおいしいりんご「シナノスイート」も待っていますよ!


 

Screen Shot 2018-10-16 at 11.42.41.png

「全ての子供たちへ平等に芸術を」、PCN東京を運営している ココロエデュケーションラボ がミュージカル「ひなた号の冒険~7つの島の伝説~」をやります!なんと IchigoJam プログラマーが世界を救う!? というストーリーとのこと。

2018年10月27日(土)、かめあり リリオホール にて!

 

 

 

 

 

 

.