福野泰介の一日一創 - create every day

ruby4ijを早速使っていただきました!「風船 Ruby 版 (ruby4ij)/Kidspod;

ただ、なかなかにやっかいな開発環境づくり。開発するために必要なツールが多く、それぞれがバージョンアップするので環境構築方法が変わってしまったりして鬼門です。 そこで便利なweb技術。クラウド処理もありですが、IchigoJam web でも使っている、エッジ技術、WebAssemblyを使ったパパっと手元で軽快動作を目指します。

手始めに、こちら学習用ミニCコンパイラ「ci0」を移植して作った「webci0

webci0 - mini C compiler ci0 in WebAssembly
C言語風に書いたプログラムをスタックマシンなVM用マシン語に変換、インタプリタとして実行します。標準関数は文字列表示のputstrと数表示のputnumのみ。メイン部分は500行ちょっとのオープンソース、いろいろ改造して遊んでみましょう!

WebAssembly用に標準ライブラリ系を準備して、clang, llvm-link, llc, s2wasm, wat2wasm の手順でコンパイル。16KBのWebAssembly用バイナリ ci0.wasm ファイルができあがり!(参考、WebAssembly開発環境 WABTコンパイル用シェルスクリプト

printfは「Linuxをはじめよう!:printfを自作してみる」を使わせてもらいましたが、WebAssembly環境で複数の引数の時にうまく動いていないので ci0.c では回避策をとっています。

ブラウザ上のコードエディタとして Ace を使用。快適に動作するので、普段使う標準エディタにしてもいいくらい! カラーテーマも「Ace Kitchen Sink」からC言語のハイライトに合う感じのものを選んでみました。

ci0のスタックマシンはWebAssemblyのマシン語ともよく似ているので、WASMコンパイラとして育てるのもおもしろそう!
Cコンパイラを作ってみたい人、自作言語を作ってみたい人、WebAssemblyでの開発、オススメです!
(WASM、現時点では、goto非対応、例外非対応な点に注意!)

WebAssemblyマシン語入門
- ブラウザだけでOK! 1+1からはじめる、WebAssemblyマシン語入門その1
- プログラミングはプログラミングで楽をする、WebAssemblyマシン語入門その2
- もっと楽するコンパイラ、WebAssemblyマシン語入門その3

マシン語が分かると楽しいC言語!
IchigoJamで楽しむC言語「c4ij」を最新API対応のバージョンアップ!

1セクター4KB、8セクターで32KBあるIchigoJamの内、2セクターを使って、最大7KBものマシン語プログラムを書き込んで、BASICから呼び出すことが可能です。

デモとして、WS2812B/WS2811用のドライバ呼び出しを使って色相環をぐるぐるまわすプログラムを作りました。

IchigoJam BASICで書いたHSV2RGB変換をC言語に移植!
割り算処理は、IchigoJam OSに含まれるものを使って、省メモリ化してます。

#include <std15.h> /* 100 @HSV2RGB:R=V:G=V:B=V:IF S=0 RTN 110 D=H/60%6:C=V-(59-H%60)*V/60*S/100:E=V-H%60*V/60*S/100:F=V*(100-S)/100 120 IF!DG=C:B=F 130 IFD=1R=E:B=F 140 IFD=2R=F:B=C 150 IFD=3R=F:G=E 160 IFD=4R=C:G=F 170 IFD=5G=F:B=E 180 RTN */ void hsv2rgb(int h, int s, int v, uint8_t* grb, uint64_t (*divfunc)()) { int r = v, g = v, b = v; if (s == 0) return; int d = divfunc((uint32_t)divfunc(h, 60), 6) >> 32; int hmod60 = divfunc(h, 60) >> 32; int c = v - (uint32_t)divfunc((59 - hmod60) * v * s, 6000); int e = v - (uint32_t)divfunc(hmod60 * v * s, 6000); int f = (uint32_t)divfunc(v * (100 - s), 100); if (d == 0) { g = c; b = f; } else if (d == 1) { r = e; b = f; } else if (d == 2) { r = f; b = c; } else if (d == 3) { r = f; g = e; } else if (d == 4) { r = c; g = f; } else { g = f; b = e; } grb[0] = g; grb[1] = r; grb[2] = b; } __attribute__ ((section(".main"))) int main(int param, int ram, int rom, uint64_t (*divfunc)()) { const int v = 50; const int n = 20; uint8_t* grb = (uint8_t*)(ram + 0x800); int h = 0; for (;;) { for (int i = 0; i < n; i++) { hsv2rgb(h + i * 5, 100, v, grb + i * 3, divfunc); } ws_led(3 * n, grb, GPIO_OUT1); if (inkey() == 27) break; h++; } return 0; }

新API、ws_ledを使って多数のWS2812Bを高速制御!最大輝度50(=v)で、20コのLEDを5度ずつまわす色相環。ESC(=27)が押されたらマシン語からBASICへ処理を戻します。64bitで返すことにして使うdivfuncは、上位32bit(=R1)があまり、下位32bit(=R0)が除数となります。

このコードで256byteをちょっと超える感じ。#700-#8FFまでを使った512byteまではプログラムに含められます(make poke)。それ以上はFILE1〜3の領域を使って、3KBまでのプログラムで書き込みます(make write)。 SAVEするのを諦め、まるっと残り7KB使ったプログラムづくりも可能です。(bas2bin機能をc4ijに統合しました)

IchigoJamで容量不足や、速度不足を感じて来たときの選択肢のひとつ!
(C言語はちょっと難しそうという方、Ruby版もあります)

「明和電機 x ギャル電」のイケてるアクセワークショップ!電子の力でキラキラさせよう!


夏休み特別企画「明和電機 超! 技能訓練所」開催! - 明和電機 - Maywa Denki明和電機 – Maywa Denki」 (オモチャは買って遊ぶより、自分で作ったほうがはるかに楽しい)

links
- 高専でなぜC言語を学ぶのか? IchigoJamマシン語生成プログラム c4ij で作る、C言語版かわくだり
- C言語で拡張するIchigoJam BASIC - 3KBマシン語をIchigoJamで動かすウラワザ
- c4ij - イチゴジャム レシピ
- IchigoJamで計算する色相環、色相・彩度・明度を光の三原色に / HSV2RGB in BASIC
- 実機転送実行まで1秒! Ruby on Jam でサクサク楽しい組み込みアジャイル開発

はんだづけして、自分のパソコンづくりからチャレンジするプログラミング&こどもシビックテック!
初めての「はんだづけ」資料をバージョンアップ。

はんだづけ、はじめのいっぽ(PDF)」(イラレaiファイル
やけどに注意と、はんだごてより怖い、ニッパーの注意を強調。はんだの盛り具合、動画へのQRコードを追加。
CC BYのオープンデータなので、どこかに出典を書いていただければ、自由に改変、再配布、販売用途にも活用方法は自由です。

ひとまず手頃に集められる機材
- はんだごて 30W 500円 - DAISO
- こて台 300円 - DAISO (または、灰皿や陶器のお皿などはんだごてを置けるもの)
- ニッパー 100円 - DAISO
- 鉛入りはんだ 0.8mm または 1mm 100円 - DAISO (1コで十分組み立てできます)
※もし、鉛フリーはんだを使う場合、はんだごては温度調整機能付きのものをご用意ください。


今年は2日間、2組の親子に体験してもらう、こどもシビックテック。Day1に続いてDay2の講師は、地元PCN品川代表、清水さん!


まずは、はんだづけ!


LED1、ついた!


ゲームづくり、楽しんでくれました!改造したら、それは、自分だけのゲーム!


センサーデバイスをつくった!手であたためると赤くなる。センサーを持って、まちあるき!


感想をそれぞれまとめます。


発表!


電子工作が楽しくなったら「電子工作マガジン&ベーマガ」をどうぞ!
PCN五反田、電波新聞社の大橋さん、登場!


ご参加、ありがとうございました!


会場、豊葉の杜(ほうようのもり)学園、ステキな学校!


PCN五反田PCN品川PCN鯖江

links
- 親子でチャレンジ、まちをよりよくプログラミング in 品川区! データ収集活用入門、温度センサーxフルカラーLEDで簡易快適度チェッカー Day1

夏休み、品川区でオープンデータ関連こども向けイベント with Code for Tokyo & PCN品川

品川区の小中学生にパソコンづくりとプログラミング、電子工作によるデータ収集とまちあるきを伝授!
10時〜17時、長時間ワークショップ後にもこの笑顔!


会場、品川区立 豊葉の杜学園!いい天気!


はじまりました、おやこでチャレンジ、まちをプログラミングでよくしよう with IchigoJam in 品川区


まずは今日使うパソコンをはんだづけして組み立てるところからスタート!
小学2年生、初めてのはんだづけにチャレンジ!


ニッパーの使い方もバッチリ! (指を添えて切れ端が飛ばさないように注意)


カラフルパーツで自分だけのパソコンに!


カラーカスタマイズで姉妹IchigoJamでも間違えない!


動いた!


みるみる慣れるキーボード。


使うセンサー集めで、電子部品パーツ屋さん気分!


自分で作ったセンサーデバイスを持って、データ収集、まちあるきスタート!


まちあるき後はまとめの時間。
暗いところと明るいところ、人の感覚とセンサーによる値の違いがおもしろかったとのこと!
IchigoJamの絵、ありがとう!

こちら、触れなかったおみやげの温度センサーMCP9700Aの使い方例を紹介!

温度センサーもマイコン内蔵LEDも直接挿して使えちゃいます。


光の三原色で遊ぶ、マイコン内蔵フルカラーLED、PL9823の使い方 for IchigoJam 1.4β
IchigoJamのバージョン番号に注意! (書き換え方法PCN秋葉原でも書き換えできます!)
ichigojam-1.4.0b07.zip


快適温度で調整しておくと、暑いときには赤、涼しいときに青に変わるデバイスのプログラム。


画面に表示される値を、20行にいれるとその値が基準となって、高いときには赤く、低いときには青くなります。


上記加筆したスライド「おやこでチャレンジ まちをプログラミングでよくしよう with IchigoJam (PDF)」(Keynote, PowerPoint)
(はんだづけ、エルチカ、エルチカロボ、かわくだりゲーム、改造方法、光センサー、温度センサー、マイコン内蔵フルカラーLED)
自由に活用可能なオープンデータ、復習にもどうぞ!


ご参加、ありがとうございました!

links
- はんだづけ、はじめのいっぽ - まちをよくするプログランミング in 品川区 Day2! (2019)
- こどもも大人もコードフォーじぶんのまち! 品川区はんだづけ&センサー入門、練馬区IoT資料 - with PCN (2018)
- 地図アプリでふりかえる、センサーとまちあるき!まちをよくするアイデアとIchigoJamプログラミングつぎのいっぽ (2018年)

総額3700万円をかけた一大イベント、鯖江市議選「SABAE20総選挙」スタート!
候補者25人から今後4年、10億円をかける鯖江市議会の運営メンバー20名が決まります。(議員報酬1人あたり3400万円)
福野あおい 鯖江市議会議員 — 鯖江市議会議員選挙

鯖江市の未来を担う、20名のポートフォリオを決定するのに、1名だけを選ぶという不思議な選挙制度ですが、現行ルールなので仕方ありません。
Code for Sabae として、候補者一覧オープンデータ(CSV-utf8)デジタルポスター掲示版アプリをひとまず開発しました。 いろんなアプリを作って盛り上げましょう!(ハッシュタグ #sabae20


SABAE20総選挙2019 鯖江市議候補者デジタルポスター&オープンデータ
ダブリンコアに習って、sabae.cc語彙を作りました。schema.orgにないものを勝手に作っていきます。

選挙カーを使う候補者の方、前回の2015年選挙時につくったアプリをご活用ください!

選挙カー連呼スポット探しアプリ
オープンデータ選挙カー連呼スポット探しアプリ 鯖江市議選スタート!
* 認められているのは、8時〜20時、学校・病院・診療所その他の療養施設の周辺以外、連呼行為(車上の連呼以外は公職選挙法違反です)

各地で欲しいとの声多数。地方公共団体の方、学校と病院オープンデータ、ぜひ5つ星オープンデータ化してください。(odpへの登録いただければ、即アプリに反映されます)

投票日は、6/30日曜日です
鯖江市議会議員選挙のお知らせ – めがねのまちさばえ 鯖江市

音は数学と物理でできています。
何かが1秒間に440回振動すると「ラ」の音、440Hz。
倍の880回だと1オクターブ高い「ラ」。220回だと1オクターブ低い「ラ」。

こちらがオクターブ1の「ド」からオクターブ5の「シ」までの、周期の半分の8bitに収まる数値、60コ、60byte。これをテレビ画面に1ライン引くために使っている、15.7068kHzで動くタイマーを流用して鳴らしています。 流用しないで別途タイマーを使うこともできますが、サーボやモーターの速度制御に使う分を確保するとあまりがありません。

240, 226, 213, 201, 190, 179, 169, 160, 151, 142, 134, 127, 120, 113, 106, 100, 95, 89, 84, 80, 75, 71, 67, 63, 60, 56, 53, 50, 47, 44, 42, 40, 37, 35, 33, 31, 30, 28, 26, 25, 23, 22, 21, 20, 18, 17, 16, 15, 15, 14, 13, 12, 11, 11, 10, 10, 9, 8, 8, 7

今回このタイマーをひとまず倍速で動かし精度を上げてみようと思いましたが、1ライン描画するタイマー処理と重なってしまうため、きれいな周期で鳴らすことができず断念。VIDEO0でビデオ出力を止めた時のみ音痴が直るという実装方法ならありかもしれません。 ひとまず今回は倍速化までで容量オーバー。

IchigoJam 1.3.2β16 - 「ichigojam-1.3b16.zip
(VIDEO0にした際のサウンド倍速化(暫定版)、ビデオ表示調整(VIDEO3以降)、複雑な式でComplex expressionがでるように変更)


付属の圧電サウンダーから、「エイリアンスピーカー」や、ステレオ端子経由やアンプ経由でスピーカーにつなぐとだいぶ良く聞こえます。

SOUND端子ではなく、OUT5端子などに接続し、プログラムで音痴を回避する方法もあります。
IchigoJamのPLAY文と似ているMML風に書くとPWMを使って鳴らしてくれるプログラムが、KidsPod;に公開されています!(by イチゴジャムおじさん
ジングルベル PWM_MUSIC/Kidspod;
PWM_MUSICの検索結果/Kidspod;

平均律に近い音階の周期データを計算するC言語のプログラムはこちら!

#include <stdio.h> #include <math.h> int main() { int vsync = 3056; int cpuhz = 48000000; int cnt = 0; for (int i = -33; i <= 26; i++) { double freq = pow(2, (double)i / 12) * 440; double len = 1.0 / freq; double d = len / ((double)vsync / cpuhz); int n = (int)(d + 0.5); //printf("%f %f %d\n", freq, d, n); printf("%d, ", n); cnt++; } printf("\nlen: %d\n", cnt); return 0; }

進む、jigインターン2019の選考プロセス。面接で好きなプログラミング言語を聞いて、C言語と答える高専生は割と多い。 黒い画面にテキストで動く地味なプログラム、それで楽しさは伝わるのだろうか?

中学生の頃、その頃のパソコン好きが辿った、BASIC、Z80マシン語の次のC言語。妙に気に入ったのが、ファイル変換プログラム。バイナリデータをテキストに変換するプログラム(matsumoto)や、K&Rスタイルしか対応していなかったMSXのC言語をモダンに使えるように変換するプログラムなど、BASICでは遠かった実用性を感じて感動。

時は現代、IchigoJamβのバグフィックス。C言語なくてはありえない24KBのOSづくり。スクリプト言語ではランタイムが収まらず。マシン語で書くには複雑すぎる。 C言語の魅力は、生成されるマシン語が想像でき、コンピューターの本来の力をほぼ最大限に引き出してあげられてる感にある。

コンパイラが生成したLPC1114用24KBのバイナリをAPI追加するポストプロセス。インテルHEXファイルに反映し忘れていた不具合を直すため、変換プログラムを書く。 RubyでもPythonでもJavaでもJavaScriptでも書けるが、エコなC言語が気持ちいい。このくらいの規模だと、自作コンパイラでも手が届く。


「bin2hex.c - バイナリデータからインテルヘックスファイルへの変換プログラム in C」

このプログラムを使ってできあがったもの
IchigoJam 1.3.2β15 - 「ichigojam-1.3b15.zip
(USキーボードで効かないキーがあった不具合修正、HEXファイルでAPIが使えない不具合修正)

API呼び出しサンプルプログラム RNDを使ったサイコロプログラム(for IchigoJam 1.3.2b15)

10 LET[0],#21C0,#8809,#4708:?USR(#800,6)+1 RUN 5

地味ゲー好きだとカミングアウトしてくれた鯖江の少年に後押しされて誕生したIchigoJam。 自動運転、キラキラVR、ロボット、ドローンなど、派手な応用領域も地味なファイル変換も根っこは同じ、コンピューターとの対話、プログラミング。


福井県小中学生 プログラミング・フェス
福井新聞との取り組み、小中学生プログラミングフェスも4年目!
今年の舞台は禅のふるさと、福井県永平寺町の曹洞宗の大本山、永平寺。
座禅とプログラミングで、自分自身をアップグレードし続ける楽しさに気づけるか!?

去年大活躍した、自分でプログラミングする自動運転車「らでぃっしゅ」今年も登場!


プログラミングフェス2018の様子を、福井県町の岩田さんが取材してくれた様子。
体当たり撮影「すごい」県庁職員 福井県広報課の岩田早希代さん | 政治・行政 | 福井のニュース | 福井新聞ONLINE

伝えよう、世界中のどこにもないものを創り出せるワクワク感。

links
- 福井県小中学生 プログラミング・フェス

bin2hex.c

#include <stdio.h> void out(int address, char* buf, int nbuf) { int crc = nbuf + address + (address >> 8); printf(":%02X%04X00", nbuf, address); for (int i = 0; i < nbuf; i++) { printf("%02X", buf[i] & 0xff); crc += buf[i]; } printf("%02X\n", -crc & 0xff); } int main(int argc, char** argv) { char buf[16]; int nbuf = 0; int address = 0; for (;;) { int c = getchar(); if (c == EOF) { if (nbuf > 0) { out(address - nbuf, buf, nbuf); } printf(":00000001FF\n"); break; } buf[nbuf++] = (char)c; address++; if (nbuf == 16) { out(address - nbuf, buf, nbuf); nbuf = 0; } } return 0; }

IchigoJam BASICでコンピューターを操る楽しみを知り、マシン語でその正体を知ったら、人類の英知コンパイラを学び、広がり続けるプログラミング言語、開発ツールの海へと出港しましょう!

コンパイラとは人間とマシン語をつなぐ翻訳者。やってほしいこと(アルゴリズム)を0と1の並びへと変換してくれるソフトウェアのこと。

福井高専電子情報工学科にもコンパイラという授業がありました。講義を単に受けるのではなく、自分でコンパイラを作りながら学ぶのが近道で楽しいのでオススメです。

C言語はその代表格。その機能限定版を実際のソースコードを読んだり、改造するのが近道です。自分だけのプログラミング言語づくりも簡単に楽しめる、コンパクトな実装「ci0 - ミニCインタプリタ」を発見。Macで動くように編集してみました。(src on GitHub

$ cat test0-hello.c int main() { println("Hello World!"); return 0; } $ ./ci0 test0-hello.c Hello World! $ ./ci0 -trace test0-hello.c 0: int ************** execute ***************** entryPoint = 2 2: entry 3: addsp int 0 4: push str "Hello World!" 5: call str println Hello World! 6: addsp int 1 7: push int 0 8: ret

このコンパイラ、字句解析、構文解析、VMまで含めて512行ととっても短いのが特徴です!
for文に対応していないなど、言語仕様は極力削ってあるので、欲しい構文を好きなように追加することも楽しめます。

VMはJavaVMやWebAssmeblyと同様のスタックマシン(mrubyはレジスタマシンなのでちょっと違う)になっていて、中間コードを見たり(-codeオプション)、実行内容を見たり(-trace)もできます。

WebAssemblyのビットコードを出力するようにして、ブラウザ上の開発環境にしてみたり、IchigoJamで動くCコンパイラに挑戦するのもおもしろそう。

links
- ミニCインタプリタ (言語処理入門 by Minoru Hatada 氏)
- 高専でなぜC言語を学ぶのか? IchigoJamマシン語生成プログラム c4ij で作る、C言語版かわくだり
- オールマシン語かわくだり - API対応 IchigoJam 1.3.2β12
- mruby VM level 1 in 2KB / 実用最小限VMとIchigoJam BASICと動かす組込Ruby

APIに対応し、オールマシン語でかいた「かわくだり」、APIをC言語環境から呼び出せる環境を整えたC言語用ヘッダファイル std15.h を作って、C言語版も作ってみました。 PCとUSBシリアルケーブルを手に入れれば、BASICではできないスゴイモノが簡単に作れます!(マシン語をハンドアセンブルすれば、PCがなくても同等以上のものは作れます)

#include <std15.h> __attribute__ ((section(".main"))) int main(int param, int ram, int rom, int (*divfunc)()) { cls(); int x = 15; for (;;) { locate(x, 5); putc('O'); locate(rnd(32), 23); putc('*'); putc(10); wait(3); int c = inkey(); if (c == LEFT) x--; if (c == RIGHT) x++; if (scr(x, 5)) break; } return x; }

IchigoJam BASIC に慣れた人なら読めますね!(IchigoJam BASIC版、Ruby版
#include というのは、コンパイラ向けの命令で、その後ろに書かれた std15.h というファイル名のファイルの中身をまるっと取り込んでくれます。 このファイルの中に main cls locate などが何なのかが書いてあります。(通常のC言語では stdio.h というファイル名をincludeしますね)

std15.h の中身はこのような感じ。IDを覚えていなくても、分かりやすい名前で呼び出せて、コンパイルする際、間違った使い方は警告してくれるなど、いたれりつくせり。

typedef unsigned int uint32_t; typedef unsigned short uint16_t; typedef uint32_t (*IJFUNC_P1R)(uint32_t n); #define rnd(n) ((IJFUNC_P1R)(void*)(uint32_t)*(uint16_t*)0xC0)((n))

生成されたコードサイズは、108byte、オールマシン語で作ったものが 90byte だったので20%ほどコード量が増えてしまってますが、十分に小さいのでOKですね。 使える容量は、#700-#7FFまでで256byte、変数を使わないことにすれば512byteまで。プログラム領域#C00以降にPOKEコマンドで書き込むように変更すると、1KB近くまで使えます。

ダウンロードはこちら(IchigoJam 1.3.2b12 以降用)
IchigoJam/c4ij: C language for IchigoJam」 - src on GitHub

マシン語を読みたいときは、 make dasm とすると、マシン語コードを表示します。コンパイラがどのようなマシン語にするか辿って、どこに無駄があるか読んでみるもまたおもしろいですよ。

某現役高専生による高専生のためのC言語連載が始まりました!
C言語 - Part.0:C言語とは - 某高専生の某高専生による高専生のための...
ただ、C言語、初めてプログラミングとしていきなり学ぶのはオススメしません。

まずは、IchigoJam BASIC、JavaScript、Python、Ruby、Unity、何でもいいので、サクッと簡単に楽しいゲームが作れることを体験しましょう。 便利なツールを使って、実現したいことを最短で実現し、もっとやってみたい!と興味を持つことが何より大事です。

コンピューターの気持ちが気になったら、コンピューターの構造(アーキテクチャ)、マシン語、C言語、現代言語の順に学ぶのがオススメです。

マシン語を触ってコンピューターの真の力を体感し、ちょっとしたプログラムを作るのに苦労してもらった上で、C言語のコンパイラに触れると、もう一度コンピューターってすごい!となれます。 もっと楽しく、もっと速く作りたい!という思いが、Python、Ruby、JavaScript、Go、Javaなどの言語を産みました。

なぜC言語を学ぶのか、それは、それらのモダン言語と言われている言語自体を作った言語がC言語だからです。

光るもの、いいですよね!
フルカラーに輝くLED、WS2812Bは1ツブ約10円!
自由自在に制御して、ステキな演出してみませんか?

こちら、光るメガネの制御実験

Maker Faire Kyoto 2019の帰途、京都駅の階段イルミ。
WS2812B系を多量に使ったと思われる、階段アートにひとだかり。地元でもチャレンジしてみたい?

多量につくるためには、極力安く作りたいので、複雑な制御も65円で買ったLPC810だけでやってみます。

開発環境を用意して、USBシリアルケーブルでPCと接続して、開発、転送。
taisukef/devkit-lpc800: devkit for LPC800 series in C

今回、ボタンを1つ、つけました。
WS2812Bの制御などは、マシン語をasm15でC言語形式に出力して組み込んでいます(ws2812b.h)。

開発言語はC言語、キラキラするエフェクトはこういうプログラムで動いてます

int flash(int len) { int v = 40; for (int j = 0; j < 300; j++) { clear(); set(rnd(len), rgb(v, v, v)); flush(); if (btn()) wait(5000); else wait(50000); } return 0; }

LPC810、コンピューターに書き込んでしまえば、あとは電源接続するだけで動きます!
(IchigoJamプログラミング体験で、やっている通り!)

マトリクス状のLEDを制御したり、同じように大きく並べることで、イルミネーションができあがります。

IchigoJamからシリアルや、I2Cで手軽に使えるキットにするのもいいかも?

Hana道場から商品化され、鯖江と明和電機秋葉原店で買える「光るネクタイ
付属のLPC810でもオリジナルイルミづくりチャレンジできます!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像