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

ver 1.3、ちょっとメモリの使い方を誤り、ver 1.2.3 で動いていた数式で動かない問題が発覚。

P=PEEK([0]) Complex expression

このエラーは、数式が複雑すぎる時にでるエラー。

例えば 3+(2*5) という計算をする場合、
1. まず3と、足し算する必要あり、と覚える
2. 括弧があるので、さらに2と、かけ算する必要あり、と追加で覚える
3. 5とかけ算し、10と覚える
4. 覚えていた3と足し算し、答は13
という感じのプログラムが IchigoJam BASIC というOS(オーエス、基本ソフト)の中で動いてます。

計算と記憶が得意なコンピューターくんですが、無限に記憶できるわけではありません。
IchigoJamで使える容量は、4kbyte、32768bit。3万個ちょっとの0か1のデータを記憶できます。
(4kbyte = 4 x 1024byte = 4096byte = 4098 x 8bit = 32768bit)

メモリをどのように使っているか表す図をメモリマップといいます。
IchigoJam BASIC on LPC1114 RAM メモリマップ (ver 1.3 beta 6)


計算式の中で、後から使うものはどんどんスタックに積んで、一時的に覚えていきます。
LPC1114では、スタックを末尾のアドレス 10000FDF から、小さくなる方向に向かって使っていきます。

一次記憶がどんどん溜まっていくと・・・、そう、この図でいうとI2Cバッファ、コマンドラインバッファの順に浸食していってしまうのです。 ちょっといいCPUだと、このような浸食を防ぐための仕組みがありますが、シンプルなCPU LPC1114にはありません。

そこで計算途中にスタックの今使ってるポイントをチェックして、溢れそうなら Complex expression エラーを出すように作ってあるわけです。 ver 1.3.0 では、IchigoJam BASIC OS用変数領域がちょっと大きく、そのメモリ位置をスタックのすぐ上にしてしまったことで、フリーズリスクが高まってしまっていました。 (ARM 関数呼び出し引数の渡し方 - Qiita

こちら、ver 1.3 beta 6は、上記のようにOS用のメモリの使用量をちょっと削減し、物理メモリの先頭に配置、万が一のスタック溢れにも最悪I2Cバッファやコマンドラインバッファの破壊までにとどめて、フリーズすることがある不具合を解消しました。
IchigoJam 1.3b06.zip

このようにメモリギリギリの戦いにはArmマシン語を含むコンピューターそのものの知識は欠かせません。興味がでた方、こちらからどうぞ!
Armマシン語入門

IchigoJamは、MSXに習って、上位互換。
こどものお小遣いでも手が届く「安さ」と「学びやすさ」にこだわるIchigoJam。
大幅な機能拡大や、容量アップを行わない、変わらない安定感がウリです。

IchigoJam ver 1.2.3 の使い勝手をそのままに、IoTと、ちょっとした改善の積み重ねた ver 1.3。
IoT/オープンデータ/ビッグデータ/AIでも連携する、さくらインターネットさんとの共同プレスリリース。
回路もCPUも変更ないので、いままで全てのIchigoJamをバージョンアップできます!

餅は餅屋。いろんな業種の人による「プラスIoT」が熱い!
さくらインターネット「IchigoSoda (=IchigoJam x sakura.io)」のIoT火災報知器。

火災報知器と連動した無線通報端末「火守くん」を“IchigoSoda”で開発 - 導入事例・構成例導入事例・構成例
「子どもの頃、プログラミングが好きでBASICでゲームを開発していたんです。これなら私でも開発できると考えました」と社長の刀根さん自らが開発! 大人も楽しいIoT、IoT研修などのお問い合わせもどうぞ!(ichigojam@jig.jp)

2/3(日) サイボウズさん、さくらインターネットさんとも共同で、IchigoSodaを使った、IoT親子ワークショップも開催!
はじめてのIoTデータ活用 親子プログラミングワークショップ kintone x sakura.io x IchigoJam - さくらのイベント(関東版) | Doorkeeper

IchigoJam BASIC ver 1.3、5つの主な変更点
1. コマンド1つで IoT
2. ちゃんとした RENUM
3. 打ちやすくなったローマ字と絵文字
4. ゲームの幅広がる、カーソルスイッチ
5. 70% 高速化

1. コマンド1つで IoT
月額64円(年間でも768円)で実現できちゃう4G/LTEを使ったIoT。 さくらインターネットの sakura.io をIchigoJamと接続するお手軽IoTをもっと手軽にするIoTコマンドを搭載!

IoT.OUT 1 OK

IoT.OUTコマンドで16bitの数値が送信完了!sakura.ioの管理画面でリアルタイムにデータが届く様子が見えます。 受け取りたいサーバーのアドレスを打ち込めば、webサービスと簡単に接続できますし、WebSocketを使えばリアルタイムに動作するアプリをJavaScriptなどで簡単に作れます。

反対に、ネットから受け取るコマンドは IoT.IN()

?IoT.IN() 5 OK

スマホから家の内外にある家電・ロボットの遠隔操作だってできちゃいます。

いままでのIoTコマンドでは配列や、PCG領域などを使っていましたが、新たなRAM領域を使うようにしたので、使い勝手アップ!

確保した新しいRAM領域(#114A-#117F)の54bytes、ご活用ください!(IchigoJam ver 1.3 メモリマップ
また、I2Cの初期化処理を変更時のみに限定し高速化、BPSの第二パラメータでI2Cの通信速度設定にも対応しました。

2. ちゃんとした RENUM
プログラムに機能をどんどん足していって、ごちゃっとしたものをきれいに整理することを、リファクタリングといいます。 行番号でプログラムを管理する IchigoJam BASIC、10刻みではじめて、間に1刻みでいれていったのに入らない!そんな時に使う RENUM ですが、今までは行番号の振替に非対応でした。

1 LED1:WAIT10 2 LED0:WAIT10 3 GOTO1 RENUM 10 LED1:WAIT10 20 LED0:WAIT10 30 GOTO1 RUN Line error in 30 30 GOTO1

GOTO1が書き換わらないためエラーになり、手で振り直しが必要だった、ver 1.2.3。
ver 1.3 では、番号振り直しに対応したので、リファクタリングがはかどります!
ただし、プログラムの容量を変えない方針で書き換えるので、GOTO1 が GOT100 という形でコマンドにめり込む形になるので、そこは手で修正してあげください。

1 GOTO1 RENUM 100 OK 100 GOT100 OK

3. 打ちやすくなったローマ字と絵文字
キーボードを使いこなすこと、現代のコンピューターを活用する上での必須スキル。 試験の現場でも効率化のため、手描きからキーボード入力への切り替えが進むのは間違いないでしょう。 幼稚園児でもわかるアルファベットのABC、次のステップのSHIFTキーを伝授する前に、ALTキーを使った絵文字遊びがオススメです。

今回の変更で、右ALTと左ALTの違いをなくし、押しても出なかったWXYZも矢印絵文字として割り当てたので、アルファベットと合わせてお楽しみください! 「ALTを押しながらC」で感覚をつかんだら、「SHIFTを押しながら8」などもスッと伝わります。

またローマ字入力 KAK と3つキーを押した時の違いです

' ver 1.2.3 カ ' ver 1.3 カK

このように打ったキーがそのまま表示するようにしたので、打ち間違いを修正しやすくなり「キーを押しても何も出ません!」というケースがなくなります。

通常のパソコンと違って、漢字変換がないので、シンプルにローマ字入力のみを学べます。
Nの区切りとして「'」にも追加対応し、小学校でのローマ字の学習にオススメ「日本式ローマ字」にも対応!
小学校で教えるローマ字は日本式で決まり! IchigoJamプリント「ローマじでうつ、カタカナ - こくごコース」と授業計画例

また、意図せず「OK0」コマンドを使ってしまい「エラーメッセージがでません!」となるケースに対応し、表示なしは「OK2」へと変更。

RNDと「(」の間に空白をいれてしまうと Syntex error と、エラーが起きてしまう分かりにくい間違いを防ぐために、空白無視への変更。

' ver 1.2.3 ?RND (6) Systax error ' ver 1.3 ?RND (6) 5

4. ゲームの幅広がる、カーソルスイッチ
位置を指定するコマンドLOCATE(省略形LC)の第三パラメーターに1を指定すると、点滅するカーソルを表示できるようにしました。

ゲームで学ぶ、アルファベット! LOCATEの第三パラメーター、カーソルスイッチ実装
パズルゲームなどにオススメ!ベーマガへの投稿の際は IchigoJam ver 1.3 と明記しましょう。
逆に、1.2.3で、カーソルスイッチでエラーになってしまう場合は、第三パラメータを消し、自前でカーソルを表示するように改造すればOKです!

5. 70%高速化
速度より機能優先の IchigoJam ですが、せっかくのバージョンアップなので内部ロジックチューニングで少し高速化。
いままでちょっと重いなと思ったゲームが、遊びやすくなります。
1.3にして、いろいろ工夫してもまだ重い?100倍高速化するマシン語を使うのも手ですよ!
はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

その他の変更
BPSで-100以下を指定することで、シリアル通信速度の高速指定に変更(BPS-2304 → 230400bps)
UART4(bit2が1)でキー入力をシリアル通信にエコーバックモード
プログラム実行時にキーバッファをクリアしないように変更
FILES0,0でファイル0のみ表示するよう変更
SOUNDピンをマシン語で使用可能に変更(SOUND()に反映されない不具合修正)
SWITCH時のバージョン表示廃止

IchigoJam BASIC ver 1.3、変わらない点
- NXP LPC1114 向け、IchigoJam BASIC が動く24KBのOS(回路に変更無いので全IchigoJamバージョンアップ可能)
- プログラムは1KB(約1000文字)、4つまで本体に保存可能(0番はボタン押しながら起動で自動起動)
- 32x24テキストスクリーン、64x48のハーフグラフィックス(PCGでパターン変更、VIDEO3などで拡大表示対応)
- 小さなこどもでもわかりやすい、アルファベット大文字を基本に、ローマ字入力でカタカナ入力にも可能

IchigoJam BASIC ver 1.3 リファレンス
IchigoJam BASIC リファレンス ver 1.3
IchigoJam BASIC reference ver 1.3 (英語版)

バージョンアップ方法
店頭のIchigoJamは順次、ver 1.3 へと置き換わっていく予定です。
お手元のIchigoJamも、自分でバージョンアップに挑戦したり、書き換えサービスで、ver 1.3 へと更新できます!
ダウンロード | こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円)

links
- こどもIoTを実現する、こどもパソコン『IchigoJam』ver 1.3 をB Inc.がリリース ~さくらインターネットの『sakura.io』を利用した通信用コマンドを標準搭載~
- こどもIoTを実現する、こどもパソコン『IchigoJam』ver 1.3 をB Inc.がリリース | さくらインターネット
- コマンド1つでIoTも可能な1,500円のこどもパソコン「IchigoJam BASIC ver1.3」 - PC Watch
- 子どものプログラミング教育向けに開発された「IchigoJam BASIC」のver1.3がリリース:EdTechZine(エドテックジン)
- ASCII.jp:子供パソコン「IchigoJam BASIC」、さくらインターネットのIoTに対応

アプリをケータイする文化は、日本から始まった!

2001年、世界初のアプリ対応ケータイとして発売された docomo F503i/P503i。 低速で高額な2Gネットワークのため、初搭載された「iアプリ」の最大容量は10kbyte(わずか約1万文字)。 この10KBになんとか納めてリリースしたパケット通信料を節約するブラウザアプリが「jigブラウザ」のベースです。

Javaのクラスを使わないのはもちろん、メソッド数を減らし、バイトコードを後処理で減らし、圧縮の最小化を図るなどなど。 いかに誰もやってなさそうな削減テクニックを編み出すか? 楽しく、あれこれ工夫できたのは、すべて利用者の喜びのため。 できた達成感と共に、一利用者としての楽しみもあって一石二鳥。 使っている内に、またやりたいことが増えるので、容量ダイエットに励み、機能アップ、というサイクル。

あれから18年、舞台はArmマイコン上のC言語でOSとして実装する、IchigoJam BASIC。 衝撃価格、100円 32bit CPU、LPC1114の容量は32KB。 8KBをユーザープログラムの保存領域として使うので、残り24KBがOSに許された容量です。

IoT、ローマ字対応を終え、いよいよ完成が見えてきた新バージョン 1.3 リリースを目前に、100byte単位の大減量に成功。勢いに乗って実装したのが RENUM コマンド!


RENUM(リナンバー、リナム)コマンドは、行番号を振り直すコマンド。
今まではプログラム内で指定してある行番号は手で変更する必要がありましたが、1.3からは自動で振り直しされます!(一部、制限あり)

1 LED1:WAIT10 2 LED0:WAIT10 3 GOTO1

とLEDを点滅させるプログラム、2と3の間にキーを押したら止めるプログラムを追加したい。 そんな時に RENUM コマンド。

RENUM OK LIST 10 LED1:WAIT10 20 LED0:WAIT10 30 GOTO10 OK

3行のGOTO1がGOTO10へと書き換わるようになりました。これで25として新たな行が追加できます。

25 IF INKEY() END

RENUMのパラーメータで1から1ずつにも振り直せます。

RENUM1,1 OK 1 LED1:WAIT10 2 LED0:WAIT10 3 IF INKEY() END 4 GOTO 1

ここで制限、RENUM100と、100行から10ずつにすると、このように一部欠けます。(GOT100、Oが欠けた)

RENUM100 OK 100 LED1:WAIT10 110 LED0:WAIT10 120 IF INKEY() END 130 GOT100

これはプログラム量が変化して、容量オーバーやプログラム領域外を破壊してしまわないように、加えて、容量不足で対策困難なための制限です。 動かせば Syntax error が起きるので手動で修正してください。行番号を1から10000など大きく変化させると、元がGSBだったかGOTOだったか分からなくなるので注意です。

実際使ってみると思いの外、快適です。今まで、ご不便おかけし、すみませんでした。

RENUM対応ベータ版、ダウンロードはこちら
IchigoJam 1.3b03.zip

IchigoJam web」 でも、体験いただけます!

IchigoJam 1.3、MacやWindowsでも動くアプリ版も準備中。

IchigoJam ver 1.3b3 メモリマップ

* ver 1.2.3との互換性を取る形で1.3b2から変更 (keybuf 126byteへ戻す、i2cbuf 54byteへ拡大)

先行公開した IchigoJam webに、続き、マイコン(LPC1114)バージョンのファームウェアを公開!
IchigoJam 1.3b02.zip」 (* 最新版は 1.3b3)
容量削減、がんばりました!

一番目立つ点は、Nが続く文字をコンマで区切る日本式ローマ字に対応し、打っている途中の文字も表示するように変更したところ。 その他、いろいろと細かい修正、調整を行い、近日正式版のリリースとなる予定です。


標準搭載となった IOT.OUT / IOT.IN コマンド、I2C用の送受信バッファを別に確保したので、配列と合わせて使っても大丈夫!

I2C実装の問題で動作しなかった 温湿度計 AM2320 (600円@秋月電子) にも対応。

10 'AM2320 20 CLS:A=#5C:B=#700:POKE B,3,0,4 30 W=I2CW(A,B,3,B+3,0) 40 R=I2CR(A,B,0,B+3,8) 50 IF R ?"I2C ERROR":GOTO 200 60 H=PEEK(B+5)*256+PEEK(B+6) 70 M=PEEK(B+7)>=128 80 T=PEEK(B+7)&#7F*256+PEEK(B+8) 90 IF H<0 ?"NO DATA":GOTO 200 100 CLS 110 ?"HUM: ";H/10;".";H%10;"%" 120 IF M ?"TMP:-"; ELSE ?"TMP: "; 130 ?T/10;".";T%10;"dC" 140 ?"MEM:";:FORI=0TO8:?PEEK(B+I);" ";:NEXT:?"" 200 WAIT 60:GOTO 30

今までのメモリマップに加えて、下記のメモリ領域が使えます。
つまり、ver1.3 では、上記プログラム、B=#110C とすることで、PCGも配列もVRAMも破壊せずに、使えます。(* b3でアドレス変更になりました)

32byte確保してある、I2Cバッファの先頭アドレスは、#110C、I2Cと覚えやすい! (b3でアドレス変更になりました)

また、#700は、LPC1114の物理RAMアドレスの先頭 0x10000000 へと移しました。
結果、マシン語使用時に、レジスタ R1 として渡される値は、必ず 0x10000000 - 0x700 となります。
1.3以降専用で作る場合、ちょっと楽できますね!
はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

今後の IchigoJam のメジャーバージョンとなる予定です。不具合、ご要望など、お寄せいただけるとうれしいです。
Facebook IchigoJam-FAN、Twitter #IchigoJam、メール ichigojam@jig.jp まで!

links
- 定数行番号のRENUMに一部対応! わずか24KBのOS、IchigoJam 1.3 beta 3

4年前のココ、秋葉原Assemblageで高専の後輩、槇野さんによる電子工作ショップオープンの書き込みを見て、東京第一回目のIchigoJamワークショップを開催。
IchigoJam はんだづけ教室 レポート / つくりかたマニュアル大人向け
IchigoJamのバージョンが 0.8.6 とまだ1未満!


Assemblageでの秋葉原初のIchigoJam販売が始まり、それをベーマガ創始者で、電波新聞社の記者だった、大橋さんが発見したことがミラクルの始まりでした。 ベーマガ復活しますとメッセージ来て、大興奮した思い出。その後、電子工作マガジン内コーナーとして再開し、今回の別冊復活へ。


ベーマガ創始者の大橋さんから、再創刊ベーマガと、1993年ベーマガにサインもらいました!


この日もAssemblage / PCN秋葉原でも、5才の女の子、はんだづけからのプログラミング体験。 みるみる上達するはんだづけ、最初から最後まで自分ではんだづけ仕切ったのすごい!はんだづけ仕立ての部品はちょっと熱い。


はじめてのプログラミングで、LEDついた!
画面に名前をランダムに表示しながら、LEDが光って音がなるプログラムで喜んでくれました。

10 CLS 20 LC RND(30),RND(20):?"*" 30 LED RND(2) 40 BEEP RND(100) 50 WAIT 30 60 GOTO 20

お父さんも元ベーマガ読者!一緒に楽しんでください!


初心に返って打ち込み、打ち終えるまでは10分、打ち間違いのデバッグにもう10分!
打ち込むとプログラムの作り方の違い、アルゴリズムの実現方法など、学びや発見が多くて楽しいです。

さすが何千年も前から続く勉強法「写経」奥が深い。
コピペでは味わえないこの感動、ぜひ短いものからぜひご体験ください!

電子工作マガジン2018冬号 特別別冊付録付き」← 再創刊ベーマガが特別別冊付録
一番短くて改造方法いろいろ掲載、かわくだりゲーム載ってます
ブラウザだけで動く、IchigoJam web でも打ち込み体験可。


オセロ的に縦横挟むと消える落ちゲー、オセロス。
ステージクリアするごとに速くなり、初期配置が高くなるのが熱い!


IchigoBoyを持っていなくても大丈夫!「オセロス」のIchigoJam用改造法がこちら

IN(7) → BTN(28) or BTN(LEFT)
IN(6) → BTN(29) or BTN(RIGHT)
IN(5) → BTN(30) or BTN(UP)
IN(8) → BTN(31) or BTN(DOWN)
IN(11) → BTN(32) or BTN(SPACE)
SWITCH1 → VIDEO3 or VIDEO4

IchigoBoyは、ミニ液晶とゲームパッド搭載、三重県発のIchigoJam互換機。
写真は、LPC1114内蔵の IchigoBoy pocketです。 IchigoJamに液晶をつけ、SWITCHコマンドで切り替えることで、お持ちのIchigoJamでも作れます!

画面サイズ、通常のIchigoJamが32x24ですが、IchigoBoyは16x8。
VIDEO3の16x12表示にして、操作方法を変更すると、いい感じで遊べます!
操作方法はそのままに、コントローラーを自作するのもいいですね!


ベーマガ再創刊号「オセロス」 on IchigoJam
700行、LC0,3 を LC1,3 にするとクリア表示がフィールド内に収まっていい感じになります。


遊びたいゲームは、自分で改造や、移植して楽しむのが、ベーマガ流!

こちら、小中学生のこどもにお勧め、ノートパソコンや3Dプリンターをゲットするビッグチャンス!
PCNこどもプロコン」締切は12/31です。

ベーマガへの投稿は、大人もOK、1,000投稿/月でベーマガ月刊化!?

まちがキラキラしがちな12月、電飾も身近なコンピューター制御。
エモグラスに触発され、手軽に装備できて、映えてエモい、ペンダントタイプを作りました。

ぐるぐる回る発光パターンを、ランダムに3秒置きに切り替えます。ボタンを押したら強制切り替え!


WS2812Bが12コ、円形にはんだづけされたモノ「waves WS2812B 12個 5V 円形 リング
L字ピンヘッダーを3ピン使ってDIN/VCC/GNDにはんだづけ、そのまま挿すだけ!
もうひとつを反対側にさせば、メガネ型にもできそう!

IchigoJam BASICのプログラム

10 POKE#700,240,181,68,24,12*3,32,13,73,0,34,114,182,128,37,35,120,1,52,210,67,10,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,210,67,10,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189 11 POKE#73A,0,0,0,1,0,80 15 OUT11,0 20 CLT:H=0:V=10:S=100:X=RND(2):Y=RND(2):Z=RND(2):W=RND(10) 30 COPY#800,#803,11*3 40 GSB@HSV2RGB:POKE#800+11*3,X*G,Y*R,Z*B:H=(H+30)%360 50 WAIT W 60 U=USR(#700,#800) 70 IF TICK()>5*60 OR BTN() GOTO 20 ELSE GOTO30 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

10-15行 準備:左側CN4のVCCとGNDの隣、IN4が使えると都合がよかったので、OUT11,0 でIN4をOUTに切り替えて、マシン語でアドレス #50000100 を制御しています。(参考、LPC1114 GPIOアドレス
20-70行 メインループ:発光パターン生成
100-180行 サブルーチン:色相H、彩度S、明度Vを光の三原色赤R、緑G、青Bに変換


DakeCap(販売準備中)に、単4電池2本の電池ケースをはんだづけ。


電源を切って置く時は、DakeCapに裏刺し!

links
- 企業の枠を超えたプログラミングと電子工作を広める「KidsVenture」 in 大阪(エモグラス活躍)
- 光るネクタイ IoTie 小型化 ver1.1
- WS2812B x IchigoJamでエモいウェアラブル「イチゴ帽子」プログラミング入門とマシン語、舞鶴x鯖江コラボに向けて

おまけ、asm15 Armマシン語プログラム WS2812B IN4用ドライバ

' DOUT WS2812B DOUT [R1]を変更で他のピンにも変更可能 ' R0 - data count 30コ固定 ' R1 - GPIO address ' R2 - OUT value 0/#FF ' R3 - data value ' R4 - data address G1,R1,B1,G2,R2,B2 .... ' R5 - bit count ' R6 - wait count buf ' R7 - wait count @WS2812B PUSH {LR,R4,R5,R6,R7} R4=R0+R1 R0=30*3 R1=[@DOUT]L R2=0 CPSID @LOOP_DATA R5=#80 R3=[R4] R4+=1 @LOOP_BIT R2=~R2 [R1]L=R2 R7=3 '(3*4+1)=13 <- 16.8+-7.2 R6=10 '(10*4+1)=41 <- 43.2+-7.2 R3&R5 IF 0 GOTO @SKIP R7=10 '(10*4+1)=41 <- 43.2+-7.2 R6=3 '(3*4+1)=13 <- 16.8+-7.2 @SKIP R7-=1 'wait R7*4+1 clock IF !0 GOTO -1 R2=~R2 [R1]L=R2 R6-=1 'wait R6*4+1 clock IF !0 GOTO -1 R5=R5>>1 IF !0 GOTO @LOOP_BIT R0-=1 '+6clock IF !0 GOTO @LOOP_DATA CPSIE POP {PC,R4,R5,R6,R7} 'RET @DOUT DATA L #50000100 'IN4

こども起業家創出目指す「KidsVenture
2018年、大阪最終イベントははんだづけ、キラキラ、ロボット、自動運転まで活動の集大成!

KidsVenture加盟企業、さくらインターネット、ビットスター、共立電子産業、アイティプロジェクト、ナチュラルスタイル、jig.jp、大阪、東京、札幌、仙台、福井から大集合!


IchigoJamのはんだづけからスタート


自分でつくったパソコンで、早速プログラミングに挑戦です!


電気の流れと合わせて、LEDを接続する電子工作はじめのいっぽ!


接続したLEDをコントロールするのはプログラム!


飾り付け!お家でも飾ってね!


共立電子産業、長者原さんからの激励、なんとかしようとする心がすべての原点!
限界は低いけど意外と奥が深いIchigoJamは、修行にぴったり!


裏では、大人向けのプログラミング講座、人気かつとっても熱心!
自宅でぜひ、こどもたちには紹介しなかったゲームづくりをご披露くださいー


一緒についてきたお子様、休憩時間用に展示も充実!
IchigoJamゲームコーナーには、8方向、縦横無尽に飛び回る!SPACE ATTACK、物理ボタンとレジンLEDがかわいいもぐらたたき!


その場でハイスコア付き、横スクロールアクションゲームに魔改造したかわくだりゲーム
若干おかしなゲームバランスがまた中毒性を持ったようで、ハマってました!


大人も楽しいミニコンテスト、かわくだりゲーム魔改造コンテストや、ライブコーディングなどの余興にも、ぜひどうぞ!


ミニオンズのコスプレメガネ 880円」をベースに「WS2812B 12個 円形 679円」を2コ付け制御!


自動運転、大人が乗っても大丈夫!


アイロンビーズは、大人にも大人気!


アイロンビーズでお手軽立体作品!iPadを裏にひいて設計図化するのも良さそう。
配置データの標準化と、5つ星オープンデータ化もしたいですねっ!


自分たちで作ったキラキラ電飾をバックに記念撮影!


高専狙う中学3年生!再開、楽しみにしてますっ


忘年会スタート!おでん!


エモグラスをかけると、誰でも自然と笑顔に!


IchigoJam育ての親、ナチュラルスタイルとPCNの代表、松田さん到着!


大阪発のエモグラス!メガネの国、鯖江も負けてられないですね!


とーとつにスタート、第一回 SAKURA.Jam 表面実装はんだづけ大会!
大人も子供も楽しい、はんだづけ!(さくらさんからのギフトバージョンは、表面実装はんだづけは不要なのでご安心ください)


優勝は、共立電子産業の岩田さん!さすが!(福野は3位)


さくらインターネットのロゴバリエーション!
コーポレートロゴへ込めた想い | 20周年記念 | さくらインターネット


上下、さくらの花びら揃いました!(両方白もOK!


始まる、表面実装レクチャー


そして、第二回大会!


共立さんのエモグラス試作基板!LPC1114添付モデルもぜひっ


KidsVentureの軌跡。
ルワンダ、フィリピン、宇宙(?)まで、いろいろあったKidsVenture。
きっとこれから、もっといろいろあります!

links
- 噂のSAKURA.Jamを高火力に魔改造!KidsVentureは挑戦意欲溢れる次世代の創出に貢献中! – about yrm
- KidsVenture

キラキラとさり気なく光るネクタイは、イチゴ帽子と比べて汎用性が高い。
1日着けて歩いて見ると、やはりケーブルで外部につながっていると邪魔で、断線リスクあり。


ということで、一体化させてバージョンアップ、名付けて「IoTie(アイオータイ)」ver1.1


お手軽に小型化として、IchigoJamのマイコン、LPC1114FN28をそのまま使いました。
お好みで、IchigoDakeや、IchigoJam ZeroでもOK!


2本だけジャンパー、自動起動のためのGND-BTN間は、緑
VCCを左右接続するためには、白がちょうどよい感じ。
ブレッドボード・ジャンパーワイヤ 14種類×10本ブレッドボード・ジャンパーワイヤ 14種類×5本 @秋月)


あとはマイコンへ書き込み。
USBシリアルで書き込む他、IchigoJam UやTでICソケットを使うのもOK!

ひとまずIoT分を一旦消して、光らせないオフセット(O)を0にしてプログラム。BTNによる輝度操作もなし。

10 POKE#700,240,181,68,24,90,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 11 CLV:L=30:O=0 12 POKE#704,L*3 14 Y=5 15 H=180:S=100:W=0 16 T=60 17 A=12 18 FOR I=1 TO L 20 W=W+Y:IFW%100=0Y=-Y 21 V=W*T/100 30 GSB@HSV2RGB 50 Z=#840+O*3:POKEZ,G,R,B:COPYZ+L*3-1,Z+L*3-4,-L*3+3 60 U=USR(#700,Z-O*3) 70 WAIT 5 80 NEXT 85 H=(H+A)%360 90 GOTO17 'use H,S,V,R,G,B,C,D,E,F 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

着けてみると割といい感じだけど、単3電池ボックスはちょっと重かった・・・。
単4電池ボックススイッチ付きがオススメです。

FPGAの評価ボードに替えて、雑誌付録のMAX10基板でフルカラーエルチカできました!

書き込み器「USB Blaster」は、なんと687円!?


FPGA MAX10搭載基板が付録の「FPGA電子工作スーパーキット」+1,000円ちょっとで揃います!
著書は、LPC1114との出会いの書「2枚入り!組み合わせ自在!超小型ARMマイコン基板」と同じ、圓山宗智さん。


付録のFPGAチップ搭載の基板!
クリスタルオシレーター(48MHz)とピンヘッダーで、USB Blaster仕様の最小仕上げをします。
※写真は家にあった12MHzのクリスタルオシレーター


USB BlasterのJTAGケーブルを接続するCN7端子を、ピンヘッダー5ピンx2にして、はんだづけ。
(JTAGケーブルを挿してはんだづけするとゆがみにくい!)


裏面、はんだジャンパーを12箇所、はんだづけします。


CN3のVCC33とGNDで電源を供給できるようにピンソケットをはんだづけ。


Flashに書き込めば、電源つないだら数msecで即動作!
MeganeJamは5Vから3.3Vを生成するためにのみ使用、単3を2本の電池ボックスなどでもOK)

無償で使える開発環境 Quartus Prime Light edition、IPカタログからALTPLLを選択して、クリスタルオシレーターと入力周波数を合わせ(12MHzや、48MHzなど)、倍率を設定することで任意の周波数で動かせます。

クリスタルオシレーター12MHzを39倍にした468MHzまでは動作しました!(40倍の480MHzでは沈黙)
* スペックとしては450MHzでした (2018.9.23 追記)

自由自在に超高速エルチカできる環境が手に入ったわけです!

下記、動作確認で使ったエルチカプログラム Verilog for MAX10-FB書籍付属基板
ピン配置(外部クロック 27、LED_R/G/B 120/121/122、タクトスイッチ 123)

`define PER_CLOCK 48_000_000 / 10 module max10cq(input clk, output [2:0] leds, input sw1); wire clk2; wire locked; wire clk48; wire red; wire green; assign leds[0] = sw1 == 0 ? 1 : red; assign leds[1] = sw1 == 0 ? 1 : green; clkdivider clkdiv(clk48, clk2); ledsign led1(clk2, red, green, leds[2]); pll pll1(1'b0, clk, clk48, locked); endmodule module clkdivider (input inclk, output reg outclk); reg [31:0] cnt; initial begin cnt <= 32'b0; outclk = 1'b0; end always @(posedge inclk) begin if (cnt == `PER_CLOCK / 2 - 1) begin cnt <= 0; outclk <= ~outclk; end else cnt <= cnt + 32'b1; end endmodule module ledsign (input clk, output reg a, output reg b, output reg c); reg [2:0] memcnt; reg [2:0] mem [3:0]; initial begin { a, b, c } <= 3'b111; memcnt <= 0; mem[0] <= 3'b110; mem[1] <= 3'b101; mem[2] <= 3'b011; mem[3] <= 3'b101; end always @(posedge clk) begin { a, b, c } <= mem[memcnt]; memcnt <= memcnt + 3'b1; end endmodule

links
- (1)MAX10(2)ライタ(3)DVD付き! FPGA電子工作スーパーキット (トライアルシリーズ) | 圓山 宗智 |本 | 通販 | Amazon
- 憧れのCPUづくりが超簡単!あの4bitコンピューターTD4マシン語プログラム on FPGA MAX10
- FPGAはじめのいっぽ、MAX10 FPGA 評価キットでエルチカ成功!

ハンドメイドクラフトの祭典「クリエイターズランド@サンドーム福井

手芸屋さんと電子パーツ屋さんは、たくさんのテンション上がるパーツがあるワクワク感がそっくり。 初心者用のキットもあって、道具もいろいろ。少しずつ技をゲットし、自分なりの作品を作ったらマーケットへ!という流れは一緒。 ものづくりの楽しさ、融合すると、きっともっと楽しい!

「プログラミングも電子工作も、手芸のひとつ」を知ってもらうべく出展。

ちょっとはんだづけ体験してみる・・・の予定が、結局全部一人ではんだづけした小学1年生!
子供にはまだ早いかも?と思う親心に反して、夢中になる子供たち。


キーボード(500円)も合わせて、自分だけのパソコンを買ってもらえることになりました!
良かったね!


初めてのキーボードでも大丈夫、ガシガシ打っても壊れません!壊れても500円〜1000円!
LEDを光らせてくれた!ロボットを動かせた!自分の意のままになる静かな感動体験が醍醐味です。


6足歩行ロボット「FOLO」をプログラミングして動かす体験


子供によってハマるポイントはちょっとずつ違っておもしろい


AquesTalk pico を使った、しゃべるIchigoJamで、呼び込みの自動化中

10 S="konnnitiwa":GSB@T:WAIT300 20 S="bokuwa itigoja'mu dayo":GSB@T:WAIT300 30 S="puroguraminngu site asobou":GSB@T:WAIT600 40 GOTO 10 300 @T:U=I2CW(46,S,LEN(S))+I2CW(46,13):RTN

ゆっくり実況だーっと小学生から声が上がるのがおもしろい!


怪しく光るボタン電池、食べたらお腹を切らなきゃいけない危険物。

LEDの点滅具合を自在に操りたくなったら、プログラミングして自作しよう!という流れ。
時々、キラッと光る目。暗くなったらゆっくりホタルのように点滅。サーボを使って動かすことも!

ゲジゲジっぽくて、積み木のように遊んでくれた、コンピューター LPC1114。
かわいくても計算能力は秒間5000万回。
このコンピューターが、2013年、わずか110円で登場してくれたことが、IchigoJam誕生のヒミツ!
110円で買えるコンピュータ


多くのクリエイター、クリエイター好きで賑わうサンドーム福井。
かわいく光るデジタル作品と融合できれば、もっと楽しくなっちゃうかも!?


共著で製作初のIchigoJam本「IchigoJamでプログラミング」のメイン著書、あっしーこと元福井高専の蘆田さんも立ち寄ってくれました。


鯖江市長も立ち寄ってくれました!


1500円パソコン、IchigoJamプログラミングxテクノ手芸
サンドーム福井にて、7/1 16時まで、サンドーム内2FのワークショップゾーンW27にて出展!


スイーツ


ミーゴレンなど、おいしいものもいろいろ!

links
- クリエイターズ ランド〜今、ワクワクが始まる〜
- 木製ペントミノパズルとプログラミング! はんだづけ人気だったクリエイターズランド出展2日目

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