ITの楽しさ伝える、福井県立科学技術高校、2年生全員向け講演。

体育館に掲げられている「技」と「創」が良い!


情報技術に関してとリクエストいただいたので「情報技術の活かし方・遊び方・学び方」と題したプレゼンテーション、IchigoJamゲームのライブコーディング、質疑応答の50分。


IchigoJamのCPU、凄い!という感想。作った私も凄いと思ったほどです。100円なのにね。スライドの16:9化に伴い、京と富岳を並べる形にアップグレード。 同じ予算なのに性能100倍!世界一のスパコン「富岳」の活躍、これからも楽しみです。


こちら、引退したスパコン「京」で、実際動いてたコンピューター。かっこいい!
7億6000万個のトランジスタでできているこのコンピューターを、88,128個つないで動かしていたのがスパコン京。 CPUの動作周波数は2GHzとみなさんのスマホと同等です。IchigoJamの48MHzともたかだか40倍しか変わりません。

計算が速い=時間の創出=社会が豊かになる

IchigoJamで三平方の定理を使った斜めの距離計算をやってみましょう。

10 ?"CALC LEN" 20 INPUT "X?",X 30 INPUT "Y?",Y 40 N=X*X+Y*Y 50 ?"X*X+Y*Y=";N

横(X)と縦(Y)の長さを入れてもらって、それぞれ自乗したものを足した数(N)。これのルートをとれば斜めの距離がでます。 ルートを計算するコマンドはないので、ひとまずシンプルに愚直に繰り返して求めてみましょう。

60 L=0 70 L=L+1 80 IF L*L<=N GOTO 70 90 L=L-1 100 ?"SQRT(";N;")=";L

長さ(L)を1足しながら自乗した値が先程計算したNを超えたら、1戻して表示するプログラム。 X=3、Y=4で結果Lが5とでました!

30, 40 だと、50。100,100だと144。数が大きくなると遅くなります。IchigoJam BASIC は、1コマンド1文字ずつ間違いがないか確認しながら丁寧に実行するので、間違っても安心な楽ちん言語ですが、その分速度が犠牲になっています。

そんな時は「マシン語」、コンピューターの能力をフルに引き出してみましょう。 BASICに似たマシン語生成用プログラミング言語 asm15 を使ったルートの計算はこちら。

R1=0 @LOOP R1+=1 R2=R1 R2*=R2 R0-R2 IF GE GOTO @LOOP R0=R1-1 RET

変数の代わりにコンピューター内部にある最も高速なメモリ、レジスタ(R0〜)を使います。IF GE GOTO は、もし、直前の計算結果が0以上だったらを意味する(GE)を使って、ループしています。 やってることはほぼ同じですね。

C言語と同様、これをマシン語に変換します。asm15 assemblerを使ってできたマシン語をメモリに書き込み、USR関数を使って呼び出しましょう。

POKE#700,0,33,1,49,10,70,82,67,144,66,250,218,72,30,112,71 ?USR(#700,25) 5 ?USR(#700,10000) 144

計算できました!大きな値でも一瞬ですね!
IchigoJamは1秒間5000万回、富岳は100京回、マシン語を使うとコンピューターの性能をフルに引き出せます。

汎用的に使えるC言語(IchigoJam BASICもC言語で作っています)、スマホやPC、サーバーでも気軽に動かせるJavaScript、並列処理に便利なC言語に似たGLSLなど、用途に合わせたいろんな言語も最終的にはそれぞれのコンピューターに合わせたマシン語となって動いています。

コンピューターと人間はステキな補完関係、うまく付き合っていきましょう!


HTMLはじめのいっぽ
30分でOK、HTMLからはじめる、自分だけのアプリづくり入門。CSSでデザインに凝るもよし、JavaScriptで動きに凝るも良し。


科学技術高校生による福井県てぬぐいがステキです!オリジナルスマホアプリづくりにもぜひチャレンジしたくなったら、どうぞお声がけください!


ハードウェア好きなら、栃木県立栃木工業高校による「SkyBerryJAM」のように、IchigoJamをベースにした、オリジナルハードづくり、楽しいかも?


講演資料「情報技術の活かし方・遊び方・学び方
CC BY のオープンデータです。ご活用ください!

福井県立科学技術高校のみなさん、楽しい時間、ありがとうございました!

学校でのちょっとした空き時間に、タイピングや、計算や、ちょっと英語に親しんでもらおうプロジェクト。 プログラミングや、パソコンを使ったさまざまな取り組みがスムーズになる効果も狙えます。

短い時間にさっと使うためにはネットワークが必要なく、電池で駆動し、片付け簡単IchigoDyhookが便利です。 更に、トラブルを減らすため、うっかり上書き保存を防ぐ、ライトプロテクト付きIchigoJamβファームを作ってみました。

教材はファームウェアの後ろにバイナリ化したIchigoJam BASICのプログラムを最大4つファイル結合して、転送します。

こちら、ファイルを結合する例です。

cp ichigojam-ntsc-uskbd.bin ichigojam-pack.bin cat files/0.bin >> ichigojam-pack.bin cat files/1.bin >> ichigojam-pack.bin cat files/2.bin >> ichigojam-pack.bin cat files/3.bin >> ichigojam-pack.bin

ファイル0-3への保存が効かない、ライトプロテクトされたβファームウェア
- IchigoJam 1.4β21 writeprotect

楽しんでいただいている、IchigoJamミニゲームズ「はんのうそくどゲーム」とタイピングを混ぜた、新作
「反応速度ゲーム2」と合わせて、お楽しみください!

10 WAIT30+RND(120) 20 C=64+RND(26) 30 ?CHR$(C):CLT 40 K=INKEY():IF K=0 CONT 50 IF K=C ?TICK() ELSE E

実行するとランダムな間がある。表示されるアルファベットをすばやく押すと、タイムがでます。 小さいほどよし。30(0.5秒)未満がコンスタントに出るようなら自慢できるかも!

携帯キャリアを使ったWiFi不要で、どこでも使える月額60円IoT、sakura.ioに新機能!
sakura.io 新オプションサービス「デバイス間通信」提供開始のご案内 | さくらインターネット

いままでサーバープログラムを経由しないとできなかったsakura.ioデバイス同士の通信が、管理画面で設定するだけで送れるようになりました! 早速、IchigoJamのIoTバージョン、IchigoSodaを使って実験したところ、超簡単!片方のIchigoSodaで次のコマンド。(for IchigoJam BASIC 1.4)

IOT.OUT 1234

設定したもう一方のIchigoSodaで

?IOT.IN() 1234 OK

通信できた!(DataStoreにも同時に貯めたり、指定したwebへ送信と併用OK!)

sakura.ioのコントロールパネルで、プロジェクトを作成、デバイスを登録し、デバイス間通信から、通信元と通信先を選ぶだけ!

動画デモです。

1. 右側のIcihgoSodaのボタンを押すと、左側のIchigoSodaのLEDが光る!
送信側

10 IF BTN()=0 CONT 20 IOT.OUT 2 30 IF BTN()=1 CONT 40 IOT.OUT 1 50 GOTO 10

受信側

10 N=IOT.IN() 20 IF N=2 LED 1 30 IF N=1 LED 0 40 GOTO 10

2. 文字列を相互に送り合うチャット!(入力時、先頭に「"」を付けてください )
どちらも同じプログラム(最大8文字まで、40行を8の倍数で128まで変更可能)

10 N=IOT.IN() 20 IF N ?">";STR$(N) 30 INPUT S 40 IF S OUT.IOT S,8 50 GOTO 10

3. 受信したら即、表示することもできます!
上記プログラムから30行、40行を削除

10 N=IOT.IN() 20 IF N ?">";STR$(N) 50 GOTO 10


IchigoSodaを持ってる人同士でいろいろ通信して遊べそうですね!
同じ送信元から複数の送信先を選べば、まとめて送信することもできます(最大設定数100)


CPUの上側についている小さなディップスイッチ、下側の[WAKE]設定を[EN](有効)側に切り替えて、IN2とGNDをLEDでつなぐと、何か受信した時にLEDを光ってお知らせすることもできます。 チャットで入力中にもメッセージ受信が分かって便利ですね。

岡山県の宇野バスでは、バスの混み具合と位置情報を送るバスIoTでの実用も始まりました!


IchigoJam BASICで、お手軽IoT、ますます加速していきそうです。 links
- sakura.io 新オプションサービス「デバイス間通信」提供開始のご案内 | さくらインターネット
- さくらインターネットが提供するIoTプラットフォームサービス、sakura.io | IchigoSoda/IchigoJam for sakura.io(ファームウェアの更新が必要です)

読めない漢字でロスする時間はもったいない。ふりがな付きドキュメントを用意して、低学年でも学びたいだけ学べる環境づくり、進めたいですね。

学校のクラブ活動での活用を想定して作成している、プログラミングで学ぶシリーズ「IchigoJamプリント」にふりがな付き「かけざん名人」を追加! と、同時に漢字にふりがなをHTMLのrubyタグを使った生成する、furigana-es を公開。

IchigoJam/furigana-es>IchigoJam/furigana-es on GitHub
HTML内にこんな風に埋め込み、CSVファイルと共にご利用ください。

<script type="module"> import furigana from "https://ichigojam.github.io/furigana-es/furigana.mjs"; window.onload = async () => await furigana.addRuby("kana.csv"); </script>


かけざん名人 - IchigoJamプリント
IchigoJamプリントは、A5印刷にちょうどいいように作成している、オープンデータなIchigoJamでの自学教材です。 GitHubでのオープンソース、貢献(バグ報告、ご要望、新しい教材作ったり修正案をプルリクしたり)も歓迎です!

links
- 「最強のプログラミング教育」著書、松田さんのオンラインお茶会、ホームIoTではじめる大人プログラミング
- プログラミングD分類、鯖江市では全小学校でIchigoJamを使ったプログラミングクラブとキーボードはじめのいっぽ

なぜ、こどもにプログラミングを教えるのか?
→ プログラミングが汎用的で強力なツールであり、こどもにできるほど簡単だから

社会にネット(=コンピューター)が広まる程、プログラミングの力は強まります。昔はゲームづくりや専門的な解析が中心でしたが、IoT時代、身近な課題解決にもすぐ活用できます。

「十分に発達した科学技術は、魔法と見分けがつかない(クラークの三法則)」
Bluetoothイヤホンで通話しながら歩いている様子はテレパシー、3Dプリンターはテレポーテーション、ドローンの編隊を自在に操る様はまるで魔法。自在に操れたらもっとステキです。


学校を変えた最強のプログラミング教育 | 松田孝
前原小学校元校長の松田さんの本にも、ドローンプログラミングがこどもや大人に与えたインパクトと、意外とシンプルな制御プログラミングが掲載されています。 (その後、更に改良され「FruitPunch(フルーツポンチ) x IchigoDyhook(いちごだいふく)」で、もっとシンプル、もっと手軽にドローンプログラミングできるようになっています。)


松田さんとの出会い、書いてありました!2016年12月、福井で開催した「第1回こどもプログラミングサミット」の会場にて、IchigoJamのはんだづけからのプログラミング体験をしてもらってからのご縁です。 (ナチュラルスタイル松田さんも登場!、学校は「社会の求め」に応えられるか?校長・教頭へのおすすめ本! – about yrm


zoomお茶会IoTと地方創生で共同プロジェクト進行中のKDDI松野さんも参加!
IoTは、ITの集大成。身近な課題から、世界的な課題まで、多方面での活躍が期待されていますが、深刻な担い手不足。小中学校でのプログラミング必修化は大きなチャンス!

今日テーマにしたのは、身近な課題、眠りの快適さをアップするIoT。 きっと、部屋の温湿度が大事!でも、快適と感じる状況は人によって異なります。 まずは計測。IoT対応IchigoJamと、手軽で高性能な温湿度計SHT31を使って、日々の変化を記録してみます。

1 @ARUN 10 POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6) 20 IOT.OUT #700,8 30 WAIT 60*60*5 40 GOTO 10

I2Cで取得したデータを(10行)、IchigoSodaで送信し(20行)、5分待って(30行)、くりかえし(40行)。シンプルですね!

sakura.ioのモジュールの管理画面で、DataStoreV2 APIを設定します。1ヶ月分保存なら追加料金はかかりません。 管理画面からCSVでダウンロードができるので、あとは、解析し放題!

解析をプログラムで自動化したい場合、パソコンでデータをダウンロードしましょう。JavaScriptをパソコン上で動かす、Denoをインストールし、このプログラムを test.mjs として保存。 (sensorname: 保存するディレクトリ名、token: DataStoreV2のtoken、moduleid: 使用するモジュール)

import download from "https://code4sabae.github.io/sakuraio-es/download.mjs"; await download(7, "sensorname", "token", "moduleid", 1);

あとはコンソールで動かすだけ!

$ deno run -A test.mjs

これだけで過去1週間分のJSONデータを日付ごとにダウンロード完了です! 詳しく知りたい方は、オープンソースのJavaScriptプログラム(src on GitHub)をどうぞ。 JavaScriptについて学びたい場合は「JSはじめのいっぽ」をどうぞ。 ネットがあれば、わからないものを無限に追求できますね。(社会実装例、バスの走っている場所、混雑状況などのIoTによって進む見える化 by ダイヤ編成〚その筋屋〛公式 ❄ @Sujiya_Systemさん)

このように、実現したいことを叶える技術が急速に発展し、ネットというインフラによって多くはソフトウェア化している上に、その大半がオープンソースソフトウェアとして誰でも自由に利用でき、改造でき、その開発に貢献することもできます。

ものづくりには、ソフトウェア、ハードウェア・素材までさまざまなレイヤーがありますが、ソフトウェアづくりはコンピューターさえあれば誰にでも始められる最も手軽なものづくりです。


バリエーション豊富なIchigoJam、IchigoSodaは4G通信モジュール対応のソーダカラーがかわいいIchigoJamです。 中央のチップが、100円のCPU。今回の高精度温湿度計SHT31も右下、黒い四角がその本体。あとは電源つないで動かすだけ! 世界中から登場する小さくて安くてワクワクする電子パーツたち。 プログラミングでつないで何創る?夢、膨らみますね!

日本一プログラミングを小学校現場で実践した、松田さんによる熱い著書。
学校を変えた最強のプログラミング教育 | 松田孝
ワクワクする未来を、こどもたちへ!

IchigoJam BASICでプログラミングに慣れて、WindowsかMacかLinuxの本格PCを手に入れたのなら、いろんな言語にチャレンジできます!

イチオシは、JavaScript。ブラウザ上で動くので、スマホ、パソコン、ゲーム機など、動作環境の多さはナンバーワン! ECMAScript(イクマスクリプト)として国際標準化されて、Deno、Node.js、Electronなど、使える環境も広がっています。

HTML/CSSはじめのいっぽに続き、JSはじめのいっぽを公開!

JSはじめのいっぽ
VSCodeなど、お気に入りのエディタで実際にファイルを作って、ブラウザで開くだけでスタートできます。 開発環境の整備が全く不要なのもJSのいいところ!

割とかっちりしたwebアプリのイメージに近い、BMI計算機と、リアルな動きが楽しい2D物理エンジン、Matter.jsを使ったデモを用意。 自分の作りたいものに近い方から、壊して遊んでみましょう! (懐かしのなぞおもちゃ、しゅこ / src on GitHub


simple - matter.mjs」(src on GitHub)

<!DOCTYPE HTML><html lang="ja"><head><meta charset="utf-8"> <title>simple - matter.mjs</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head><body> <script type="module"> import { Matter, createWorld } from "https://js.sabae.cc/matter.mjs"; const { Bodies } = Matter; const world = createWorld(document.body); world.add(Bodies.rectangle(500, 0, 100, 200)); world.add(Bodies.circle(250, 0, 100)); world.add(Bodies.circle(750, 0, 100)); world.add(Bodies.circle(500, 1800, 1100, { isStatic: true })); </script> </body></html>

HTML内に、四角と丸をふたつを大きな丸の上に落とすシンプルなサンプル。htmlファイルとして保存して、ブラウザで開くだけ!まずは座標をいじったり、モノを増やしたりして遊んでみましょう。 Matter.jsをESモジュール化した、Matter.mjsをimportしています。

Hana道場でもはじまったJavaScript入門講座、満員御礼とのこと!

福井県で始まった混雑状況オープンデータ。合わせて行いたい定量的なデータ計測を、鯖江市役所入り口にて設置!さすが鯖江市、依頼からスタートまで何もかも速い!

IchigoCounter - 鯖江市役所 人流オープンデータ
13時すぎに1分間に13人通ったピークが見られ、18時半からは人の流れが停止する様子が記録できています。


来庁者IoTカウンター実証実験中。ケースに入っていい感じ!IoT対応のIchigoJam、IchigoSodaのアンテナ2本はソフトバンクの4G回線につながっているので、既存の無線LANと無関係に安定的に動作します。 人流は200円の超音波センサー「HC-SR04」を使用。


超音波が返ってくるまでの時間を計測し、しきい値(T)を超えていたら人が通ったと仮定。1分間ごとにカウントした数をIoT.OUTコマンドで送信するだけのシンプルなプログラム。 反応してから一定時間待ち(W=1.5秒)を入れて、ひとりを重複してカウントしないようにするなどの調整はその場で観察しながら調整しました。 IchigoSodaにミニモニターとキーボードをつなぐだけで自由自在!

機材を持っていって、設置、プログラム、テスト、調整、設置完了まで1時間! 簡単にできるので、通りがかった中学校の校長先生にぜひ中学校でもIoTづくりをと、PRもできました。


鯖江市長、牧野さんも動作確認!
オープンデータ化、IT化、やれるところからどんどん進めていきましょう!

今回の鯖江市役所での実証実験ができたのは、スピーディーにOK出してくれた、市役所の方、市長のおかげです! 学生のみなさん、このステキすぎるまち、鯖江市に「jigインターン2020」で来てみませんか?(社会人の方の視察もぜひ)

全国の高専、夏休みが短縮されたことを受けて、今回は2週間に改定します。募集期間、延長しましたので、これなら参加できそう!という方、熱い町、鯖江でのインターン、ぜひご検討を!


古民家での共同生活、ウェルカム会!(昨年の様子)


jig.jp本店所在地、めがね会館にて、2週間のチーム開発(昨年の様子)


砂時計 - Matter.mjs」(box2d版Matter.jsmjsで移植)
今回は1週間短いので、事前サポートを充実させてカバーしようと思います。アプリづくりは、Swift / Kotlin / Java / JavaScript / Dartなどといろいろ選択肢はありますが、webアプリとしても使えて汎用性高いJavaScriptを基本言語として推奨。 その入門を作っていきます。

まずはこのスマホを傾けて楽しい砂時計プログラムを改造して遊ぶところからどうぞ!

<!DOCTYPE html><html><head><meta charset="utf-8"/> <title>sandglass - matter-es</title> <meta property="og:image" content="sandglass.png"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head><body> <script type="module"> import { Matter, createWorld } from "https://js.sabae.cc/matter.mjs"; const { Bodies, Body } = Matter; const world = createWorld(); const [w, h] = [500, 1000]; world.width = w; const nballs = 400; const cx = w / 2; const cy = h / 2; const ww = h / 40; const createWall = (x, y, w, h, th) => { const base = Bodies.rectangle(x, y, w * 2, h * 2, { isStatic: true }); Body.rotate(base, th); return base; } world.add(createWall(cx - w / 2, cy, ww, h / 2 + ww, 0)); world.add(createWall(cx + w / 2, cy, ww, h / 2 + ww, 0)); world.add(createWall(cx, 0, ww, w / 2, Math.PI / 2)); world.add(createWall(cx, h, ww, w / 2, Math.PI / 2)); const hole = w / 6; const hw = ww / 2; const hgap = h / 15; const th = Math.PI / 6; world.add(createWall(cx - (w + hole) / 4, cy - hgap, w / 4, hw, th)); world.add(createWall(cx + (w + hole) / 4, cy - hgap, w / 4, hw, -th)); world.add(createWall(cx - (w + hole) / 4, cy + hgap, w / 4, hw, -th)); world.add(createWall(cx + (w + hole) / 4, cy + hgap, w / 4, hw, th)); const bw = w / 60; for (let i = 0; i < nballs; i++) { world.add(Bodies.circle(cx + (w - ww * 2) * (Math.random() - .5), ww + (h / 4) * Math.random(), bw)); } document.body.onclick = () => { world.useRealGravity(); // 傾きセンサーを重力に反映(対応していたら) world.gravity.y = -world.gravity.y; // 重力反転 }; </script> </body></html>

sandglass.html とか名前を付けて保存し、ブラウザで開くだけで動きます!(要、ネット)
まずは砂の大きさを変えたり、数を変えたり、いじって見ましょう!

HTML/CSSもはじめての方は、こちらからどうぞ!(追記、JSはじめのいっぽも!)
創ろう、楽しい夏!

links
- 全国高専生向けjig.jpインターンプログラム2020 ~募集のお知らせ~
- jigintern2019のブログ(昨年参加者によるブログ)

PCNサミット2020、今年はオンライン開催!

府中から飛行機で25分、以外と近い東京都の離島、伊豆大島のこどもたちもプログラミング!こどものIchigoJam普及率10%!? 小学校の先生も参加してくれたとのこと。


府中市を中心に活動する、PCN東京多摩、まずは巨大な信号機を手で動かし、カトラリーカードを使ってみんなで考え方を話し合った上で、IchigoJamのはんだづけ、プログラミングへと進める4時間ワークショップの流れがいいですね! 自治体などとの事業連携も参考になります。


PCN東京多摩サポートで今年誕生、PCN伊豆大島!行ってみたい!


アフリカ、ルワンダ、PCNキガリ、杉山さん。現地の先生がIchigoJamで作った3作品を紹介、自動水栓システムはコロナ禍に多量にあれば大いに役立ったはずと悔しそう。 ITを活かす力と環境、世界中に広めたいですね。


PCNひろしま製教材、音声センサーを使ったカリキュラムとそれを応用した犬のアンナちゃんほえたワンアプリがいい! お手頃IoT、大人も便利に使いこなしたいですね。


山形県、PCN酒田より一番盛り上がったワークショップとして紹介された「デジタルたいこ」ワークショップ。 こちらも音センサーを使って、紙コップを叩いた音を検出して、達人的に連打するのが盛り上がったとのこと。 五感を使って、インパクト大きいイベントにするの、良いですね!


PCN大阪、パズルゲームのステージを作ってみる回の紹介。どのように楽しませるか、レベルデザインを実際にやってみると、普段遊ぶゲームや、勉強の難しさも客観的に見ることができてよい体験!


PCN北はりまは、電子部品使い放題というステキな環境。がっつり楽しんでいる小学生、夏休みの自由研究のレポートとしても書いてくれたとのこと!ステキ!


初の基板設計だったという、ヘタパッドを持ってイベントへ!自分で作ったものを展示する楽しさ、こどもにも大人にもおすすめです!


アクティブなPCN三重の岡村さん、福岡の久留米高専公開講座へも出張とのこと!高専生によるヘルプがうれしいですね。きっと次世代の高専生へとつながっていくでしょう!


PCN秋葉原、千代田区立の小学校の25周年記念に昇降口に生徒がつくったキラキラ工作を展示!電源の工夫がすごい! 小学生でも電飾、できちゃいます!


PCN福井勝山、一般社団PCN代表の松田さん、南相木村での身近な課題解決に取り組む中学生の女の子、紹介! 小さなパソコン、大きな柵も動かせます!


PCN金沢の久保田さん、コロナ禍でも負けないオンライン学習環境づくりの取組発表。かほくケーブルTVの動画がオンラインでも見られるようになり、かほく市立大海小学校のサイトでも紹介!


PCN北九州発、IchigoJam制御で風船を物理で割っちゃう風船タイマーキットが発売予定!楽しみです! PCNの通販や、秋葉原のお店、きっとPCN舞鶴の電脳工作室など、楽しいキット、じゃんじゃん企画して、作って、広げちゃいましょう!


PCN北九州でも活躍、IchigoJamミニゲームズ。オープンデータの教材、各地での活用うれしいです!


道連れパズル - RUN on IchigoJam web」原作「旅は道づれ by 柏木恭忠さん」
各地のオンライン授業での活躍うれしい、IchigoJam web を使って、今日の追加コンテンツ、41年前のパズルゲームをIchigoJam用に移植!
※ IchigoJam web の長いLIST表示、長いFILES表示時のバグ、修正しました


ガラケー時代からの知人、元Klab CTOの仙石さんもプログラミングはじめはBASIC。ブログで発見した本「BASICで広がる世界」を入手!


なんと昭和54年(1979年)と41年前の本。私、まだ0才。定価、IchigoJamと同じ1,500円!


当時、アメリカでは小学生から専門家までがBASICを愛用していたとのことですが、日本ではブレイク前夜。 この本を通じて、多くの少年や夢ある大人たちがコンピューターの世界へと足を踏み入れたのでしょう。


紹介されていた10本のゲームから、おもしろそうな、4「旅は道づれ」をセレクト。 1〜10、選んだ番号とどれかが連動して、コマがOとXとでひっくり返ります。全部Oにすればクリア! ソリティア的なゲームです。たまに連動しないものがあるのもポイント。


こちらが元プログラム。IchigoJam BASICを知っているこどもたちならスラスラ読めそう。 140行、FOR文途中で外へGOTOする書き方をOKとする解説。当時のFORコマンドのスタック、扱い方が違うのかも?

IchigoJam BASIC 用に移植した「旅は道づれ」パズルゲームがこちら!

100 S=10 110 FOR I=1 TO 10:[I+S]=0 120 R=RND(10)+1:IF I=R CONT 130 [I]=R:IF RND(10)>8 [I]=0 135 IF I=1:GOTO 150 140 F=0:FOR J=1 TO I-1:IF J=[I] AND I=[J] THEN F=1 145 NEXT:IF F=1 GOTO 120 150 NEXT 160 GOSUB 500 170 T=0 180 GOTO 200 190 PRINT "DAME!!!" 200 PRINT "DOKO?" 210 INPUT X 220 IF X<1 OR X>10 GOTO 190 240 [X+S]=![X+S]:A=[X] 250 IF A=0 GOTO 280 260 [A+S]=![A+S] 280 T=T+1:GOSUB 500 290 GOTO 200 500 PRINT:F=0 510 FOR J=1 TO 10:?J;" ";:NEXT:? 520 FOR J=1 TO 10:IF [J+S]=0 ?"X ";:F=1 ELSE ?"O "; 530 NEXT:PRINT 540 IF F=1 RETURN 550 PRINT "ANATA WA ";T; 560 PRINT "KAI DE SEIKOU SHIMASHITA!!!" 570 PRINT "TSUZUKEMASUKA (YES=1,NO=2)"; 580 INPUT Z:IF Z=1 GOTO 110 999 END

いろいろ改造したり、遊んでみましょう!

いちおしゲームとして「RPG - Beat the Z」と「両面ヘビゲー」をPCN鯖江の取組内で紹介。 プログラミングをもっと楽しめる講座づくりに向けた、いろんな改良案を大募集! 大いに刺激をもらった、PCNサミットでした。

一般社団法人プログラミングクラブネットワーク」のサイトもできてサポート体制も拡充。
すべてのこどもたちへプログラミング、届けましょう!

学生でも、プログラミング未経験でも大丈夫。
こどもたちと、仲間と一緒に学ぶ「PCN」へのご参画、どうぞご検討ください!



links
- PCN プログラミング クラブ ネットワーク

京都府舞鶴市、東舞鶴の商店街の大門通り沿い、元舞鶴高専の先生で、PCN舞鶴代表の町田さんによる、プログラミングもできる電子工作&模型屋さん「舞鶴電脳工作室」オープン!(アクセス


こどもから大人まで、ワクワクするお店!店頭の模型や、電子工作見ていると、ちょっと覗いてみたくなりますね。


福井県大野市、元福井高専の先生、前川さんによるPCN大野研究所で採れたイチゴを直送!


電波の先生、前川さん。電波を見るツール「Nano VNA」が良い感じとのこと。 オープンソースな高周波解析機。日本語ユーザーガイドもオープンソースで作成されていました。 コロナ禍、飛行機に電波を当てて反射させての通信実験、旅客機は減っても、貨物は比較的飛んでいるとのこと。人には見えないものが見える力、広めましょう!


真っ赤になった、甘いイチゴ!いつの日かしたい、イチゴ収穫ロボコン。


舞鶴電脳工作室で仕入れた電子部品と大野さんイチゴのコラボ!IchigoJamでMAX7219マトリクスLEDチェーンの制御できました!


風通しの良い店内、ミニ四駆コースがこどもに人気とのこと!IchigoJamを使った計測システムも計画中とのこと!


抵抗、コンデンサ、LED、基本パーツが揃っていてうれしい、電子パーツコーナー。


15 マイコン、と書かれた電子工作用部品コーナーにはIchigoJamも。右下に見慣れない部品を発見!


8x8の赤色マトリクスLEDx4、全部に制御用のIC、MAX7219搭載でデイジーチェーン対応。これで400円は安い!

MAX7219制御のマトリクスLEDx4のIchigoJam制御チャレンジ!

MAX7219/MAX7221データシートをチェック、日本語ドキュメントがありますね。7セグLEDを8コまとめて制御するチップの様子。 4bitで数を指定すると7セグLED用にデコードするモードと、そのままストレートに8bit分出すモードがあります。8桁以上に対応するためにWS2812Bの用にデータを後ろにパスする仕組みがあります。 転送方式は16bitのSPI、FM音源チップYMF825などでやりました。

VCC 5V
GND GND
DIN シリアルデータ入力 - IchigoJamのOUT3
CS チップセレクト - IchigoJamのOUT1
CLK クロック - IchigoJamのOUT2

とIchigoJamと接続して、ひとまずBASICで実験!

500 @SPIW:OUT1,0:FORI=15TO0STEP-1:OUT2,0:OUT3,N>>I&1:OUT2,1:NEXT:OUT1,1:RTN N=12<<8|1:GSB@SPIW

付きました!(SHUTDOWNアドレス12のbit0に1で表示)

SPIはBASICのままだとゆっくりなので、マシン語化して高速化。ライブラリとして整えて、サンプルプログラムと合わせてできあがり!

10 GSB@INIT 20 N=5:GSB@INTENSITY 30 S="0528":GSB@SHOW:WAIT30 40 S=" jig.jg ":FORK=0TO10:GSB@SHOW:WAIT10:S=S+1:NEXT 60 S="17th":GSB@SHOW 70 FORJ=0TO7:N=J&1*9+5:GSB@INTENSITY:WAIT10:NEXT:WAIT30 80 GOTO 20 200 @INIT 210 POKE#700,80,35,27,2,91,28,27,4,1,33,201,3,0,34,8,66,0,208,4,50,154,97,2,50,154,97,73,8,246,209,112,71 220 N=7:GSB@SCANLIMIT:N=1:GSB@DISPLAY:RTN 300 @SHOW:FORJ=0TO7:OUT1,0:A=(J+1)<<8:FORI=0TO3:C=ASC(S+I):N=PEEK(C*8+J):U=USR(#700,A|N):NEXT:OUT1,1:NEXT:RTN 400 @INTENSITY:N=10<<8|N&#F:GSB@CMD:RTN 410 @DISPLAY:N=12<<8|N&1:GSB@CMD:RTN 420 @SCANLIMIT:N=11<<8|N:GSB@CMD:RTN 500 @CMD:OUT1,0:FORI=0TO3:U=USR(#700,N):NEXT:OUT1,1:RTN

300 @SHOW S:display chars 4桁表示 (I,J,A,C,N,Uが破壊される)
400 @INTENSITY N=0-15 輝度設定 (I,Uが破壊される)
410 @DISPLAY N=0/1 表示のON/OFF制御、最初にONにする (I,Uが破壊される)
420 @SCANLIMIT N=0-7 使用する最後の行、今回は7まで8行全部使う (I,Uが破壊される)
500 @CMD cmd send x4 - 16bitのコマンドを4つ分送信 (I,Uが破壊される)


後ろにどんどんつなげることができるので、もっと長くしたり、縦16ドットにしてみたり、高速化するためにループをマシン語化してみるなど、必要に応じて改造しましょう!

今回のプログラムの見どころ、4文字表示する処理300行@SHOWを丁寧に書くと、下記のような2重ループになっています。

300 @SHOW 310 FORJ=0TO7 320 OUT1,0:A=(J+1)<<8 330 FORI=0TO3 340 C=ASC(S+I):N=PEEK(C*8+J) 350 U=USR(#700,A|N) 360 NEXT 370 OUT1,1 380 NEXT 390 RTN

OUT1でCSを0に、4つ分のデータをSPI転送して、CSを1にすることでバケツリレー!

@SPIWのマシン語バージョンはこちら。asm15でアセンブルしてみましょう。

' @SPIW:FORI=15TO0STEP-1:OUT2,0:OUT3,N>>I&1:OUT2,1:NEXT:RTN @SPIW R3=#50 ' R3=#50010000 R3=R3<<8 R3=R3+1 R3=R3<<16 R1=1 R1=R1<<15 @LOOP R2=0 R0&R1 'F=N>>(15-I)&1 IF 0 GOTO @SKIP R2+=4 ' for OUT3 @SKIP [R3+`110]L=R2 ' OUT2,0:OUT3,F R2+=2 ' for OUT2 [R3+`110]L=R2 ' OUT2,1 R1=R1>>1 IF !0 GOTO @LOOP @END RET

OUTポートを変更する場合は、適宜プログラム内の数を変更しましょう(マシン語入門


小学生の頃、敷居の高さにあきらめたプラモデルの塗装。


塗装コーナー、人気とのこと!


美しい、塗装された模型!VRで塗装体験できるもの作ってみるのも入門にいいかも!?

新しい世界への入口「舞鶴電脳工作室&PCN舞鶴」でした!

links
- 舞鶴電脳工作室に子供パソコンIchigoJamの開発者の福野さんがご来店 | Cyber Workshop in Maizuru

IchigoJamは24KBのOS、ソフトウェアとしての提供。いろんな方がいろんなIchigoJamを作っています。(IchigoJam公式サイトでオープンデータ提供開始!

PCN三重から限定発売されたIchigoJam互換機、KeyIchigoを入手したので、さっそくはんだづけして、起動、LED1!

下記、組み立てレポートです。

KeyIchigo パーツセット!


はんだづけ開始!どうするとミスなくできるか?楽か?速いか?手探りでのスタートが楽しい。
指で押さえつつ、右上1ピンを軽くはんだづけ、そのあと右下をはんだづけして、右上を再度はんだづけ、1列終わったら反対側をまとめてはんだづけして、1列完成!


後半は慣れてサクサク進みます。ひとりタイムアタックするとより楽しい。焦ってミスするとタイムロス! 65コも!?と思うかもしれませんが、65面あるゲームと同じです。しかも、ルールは自分で自由に決められます。


ボタンを指の腹で押す時に痛い、尖ってしまったはんをハンダ吸い取り線で吸い取って、仕上げ。 何を持って完成とするかは自分次第。とことん完成度にこだわるもよし、ひとまず動けばよしとするもよし。


残りのパーツもはんだづけ!


低い部品からぎ基本、ひとまず抵抗のはんだづけ


小型液晶は低いピンソケットとピンヘッダーで接続!


起動しました!
SWITCHコマンドの切り替えなしに、小型液晶に表示される!
謎の答えはキーボード制御用に使っているコンピューターのプログラムにありました。
まあくの工作の部屋: Key-Ichigo


電源に縦一列単4電池ボックスを使用。1.9V〜5VのDCDCコンバーターが入っているとのことなので、単5電池x2本を表に置くとか、CR2032でちょっと動くようにするとか、ソーラーパネルをつけて青空(時のみ)プログラミングとかの改造も良さそうです。

長ピンソケットをつけて下にIchigoJamを合体させようかとも思うので、ピンソケットやビデオ端子は未実装。 自分の使いたいようにいじれるのが、キットのいいところですね!

ハードもソフトも、自分で作ってみるのがおすすめです!

ハード初心者にオススメ、IchigoJam!
IchigoJam はんだづけ、はじめのいっぽ - まちをよくするプログランミング in 品川区 Day2!

先日収録した「ラジオ日本「bravesoft presents 目指せ!ハッカーRADIO」放映日時:2020年5月19日(火)25:00〜」の前半が公開!

COVID-19 JAPAN 新型コロナウイルス対策ダッシュボード」の話。患者数0県が増加中。緊急事態宣言終了後の活動後の動向に注目です。

links
- まあくの工作の部屋: Key-Ichigo
- まあくの工作の部屋: Key Ichigo 2

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