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

鯖江のものづくり友達、きものサロンまるよさんからスズムシがうるさすぎると相談あり。 一定間隔でスズムシの鳴き声が聞こえる、スズムシボックスを秋の店内にあると風流でいいのだけれど、ちょっと鳴く間隔が短すぎて、鬱陶しい、と。

9V電池を電源に、鳴き声電子回路が入っていることがわかったので、できるだけ非破壊による改造を試みる。 電源ケーブルを延長する形にして、トランジスタによる電子スイッチと、マイコンによる時間制御、マイコン用の3.3V生成が必要。


ブレッドボードで定期的に電源がONになる動作を確かめて、何秒間隔がいいか実験する
IchigoJam BASICなら、確認簡単!

10 OUT 1 20 WAIT 22*60 30 OUT 0 40 WAIT 180*60 50 GOTO 10

ONにしてから鳴くまでに間があるので、22秒間ONにすることで、ちょうど1ループ鳴く。そのままONにしておくと10秒たらずで何度も鳴くのは確かに鳴きすぎ。 ひとまず、3分間待って、再度鳴くようにしてみると、風流さが出た。


このままでは、箱に納まらないので、回路図を書いて、ユニバーサル基板にはんだづけする。 トランジスタを2段、3.3Vレギュレーター1つとIC3つ。どのようにつなぐかがパズルのようで楽しい。 Upverterなどで基板を起こしてもいいが、時間とお金が少々かかる。


IchigoJamよりコンパクトな、IchigoDakeでも、まだ納まらなかったのと、ちょっとオーバースペックなのも気になるので、LPC810へ移植する。 22秒間 ON にして、180秒は低電力モード(deep power down)で OFF にするプログラムを、IchigoJamからLPC810へ書き込む。

10 POKE#700,0,4,0,16,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,251,255,239,22,72,23,73,1,96,23,72,1,104,3,34,210,67,17,64,1,96,21,72,21,73,1,96,21,72,12,33,1,96,21,77,4,38,46,96,25,72 20 POKE#746,23,74,1,58,253,209,1,56,250,209,17,72,3,33,1,96,20,48,12,33,1,96,15,72,1,104,4,34,17,67,1,96,14,72,1,104,1,34,17,67,1,96,12,48,13,73,14,74,81,67,1,96,48,191,128,128,4,64,217,2,0,0,16,0 30 POKE#786,4,64,192,193,0,64,191,255,255,255,0,32,0,160,0,35,0,160,0,0,2,64,16,237,0,224,0,128,0,64,0,9,61,0,16,39,0,0,22,0,0,0,180,0,0,0 50 A=#700:L=180 100 UART3,2:OUT2,0:OUT1,0:WAIT9:OUT1,1:CLS:?"?":GSB@R 110 ?"Synchronized":GSB@R:?12000:?:GSB@R:GSB@R:?"A 0":GSB@R:GSB@R 120 ?"U 23130":GSB@R:?"W 268436096 ";L:GSB@R:UART1,2:LC0,-1:FORI=0TOL-1:?CHR$(PEEK(A+I));:NEXT:UART3,2:LC0,6:? 130 ?"P 0 0":GSB@R:?"E 0 0":GSB@R:?"P 0 0":GSB@R 140 ?"C 0 268436096 256":GSB@R:OUT2,1:OUT1,0:OUT1,1:END 150 @R:K=INKEY():IF K=13 K=INKEY():WAIT9:RTN ELSE CONT

180byteのArmマシン語をLPC810へ、書き込む(接続方法は、IchigoJamプリント参照)。30行の末尾、22と180の部分は、ONとOFFの秒数、好きな値に変えられる。(Armマシン語のソースプログラムは本記事末尾)


LPC810をIchigoDakeとピン配置をあわせるボードをはんだづけしてつくる。(LPC810の2番ピンWAKEUPをプルアップしないと、低電力モードが動作しないので注意!)


納まった!


元の箱に戻って、3分おきに鳴るように改造されたスズムシボックスのできあがり!

(LPC810を定期実行させる、Armマシン語 in asm15

DATA L #10000400 ' stack top DATA L #21 ' entry point DATA L 0,0,0,0,0 DATA L #EFFFFBDF ' VALID_CODE = 0x100000000-0x10000400-0x21 @ENTRY R0=[@SYSAHBCLKCTRL]L R1=[@USE_DEVICE]L [R0]L=R1 R0=[@FLASHCFG]L R1=[R0]L R2=3 ' flash no wait: set 0b00 R2=~R2 R1&=R2 [R0]L=R1 R0=[@PINENABLE0]L R1=[@PINENABLE0_DATA]L [R0]L=R1 R0=[@GPIO_DIR0]L R1=`1100 ' PIO0_2 and PIO0_3 [R0]L=R1 ' LED R5=[@GPIO_NOT0]L R6=`0100 [R5]L=R6 ' WAIT (WAIT_CNT * ON_SEC) R0=[@ON_SEC]L R2=[@WAIT_CNT]L R2-=1 IF !0 GOTO -1 R0-=1 IF !0 GOTO -4 ' init deep power down R0=[@PMU_PCON]L R1=3 ' PM = deep powerdown [R0]L=R1 R0+=#14 'PMU_DPDCTRL R1=`1100 ' enable 10kHz [R0]L=R1 ' deep power down R0=[@SCB_SCR]L R1=[R0]L R2=4 ' deep sleep R1|=R2 [R0]L=R1 ' wake up timer R0=[@WKT_CTRL]L R1=[R0]L R2=1 ' use 10kHz R1|=R2 [R0]L=R1 R0+=#C ' WKT_COUNT (SLEEP_CNT * OFF_SEC) R1=[@SLEEP_CNT]L R2=[@OFF_SEC]L R1*=R2 [R0]L=R1 WFI @SYSAHBCLKCTRL DATA L #40048080 @USE_DEVICE 'WKT, SCT:off, SWT, GPIO, I2C:off, FLASH, FLASHREG, RAM:off, ROM:off, SYS DATA L `1011011001 @FLASHCFG DATA L #40040010 @PINENABLE0 DATA L #4000C1C0 @PINENABLE0_DATA DATA L #FFFFFFBF @GPIO_DIR0 DATA L #A0002000 @GPIO_NOT0 DATA L #A0002300 @PMU_PCON DATA L #40020000 @SCB_SCR DATA L #E000ED10 @WKT_CTRL DATA L #40008000 @WAIT_CNT DATA L 4000000 ' 1sec (12MHz) @SLEEP_CNT DATA L 10000 ' 1sec (10kHz) @ON_SEC DATA L 22 ' (sec) @OFF_SEC DATA L 180 ' (sec)

2017年のクリスマス時に作ったものをベースに小変更。
@ON_SEC、@OFF_SEC 部分が、ONにする時間と、OFFにする時間。IchigoJam BASICからPOKE文でも簡単に変更可能。

1985年、ベーマガの発行元でもある、電波新聞社から発売されたゲーム「デーモンクリスタル」が、Nintendo Switchで復刻! 敵を倒し、謎を解き、アイテムでパワーアップしつつ、鍵を取り、次のフロアへ。現代のゲームシステムにも脈々と受け継がれています。

暗闇から探し出す感じをIchigoJamのゲームにしてみました。
音を頼りに、すばやく宝箱を探す「たからさがしゲーム」

プログラムはシンプルに短く!

10 X=15:Y=15:CLT 20 A=RND(32):B=RND(22) 30 CLS:LC X,Y:?CHR$(251) 40 K=INKEY():IF K=0 CONT 50 X=X-(K=28)+(K=29) 60 Y=Y-(K=30)+(K=31) 70 P=ABS(X-A)+ABS(Y-B)+1 80 BEEP P,3:IF P>1 GOTO 30 90 LC X,Y:?CHR$(246),TICK()

カーソル上下左右で移動、移動するたびに近いほどに高くなる音を頼りに探しましょう。
見つけたらタイムが1/60秒カウンターの値で表示されます。

100 PLAY"O4L32CEG"

このように、クリア時の音をつけると画面がなくても遊べます!

慣れてきたら上級編。ランダムに宝箱の位置が移ってしまうシカケ

65 IF RND(10)=0 GOTO20

2人で対戦できるように改造してみるとかもも、楽しいかも?

IchigoJam ver 1.3 beta 5、INPUT時、RENUM時のバグを修正したアップデート
IchigoJam 1.3b05.zip

links
- The Demon Crystal
- YMCAT(迎霧狼慢)さんのツイート: "【デーモンクリスタル秘話】
> - 1981年ベーマガ創刊号掲載のゲームがマルチプラットフォームで復刻! IchigoJam版エイリアンフィールド、改造の手引き

受動的に案内が届く同窓会ではなく、自発的な参加が基本、在学生も卒業生もAdHocに自由に開催できる、高専カンファレンス。 2008年にスタートして11年目、ますます勢いを増してます。今風に言うと、非中央集権型同窓会とか、分散化された高専同窓会。

その良さを一言で表すなら「パッションを交換できること」


(写真、高専カンファレンス新春in大阪 @kosenconf123
今回開催の「高専カンファレンス新春 in 大阪 - 高専カンファレンス Wiki」では、量子コンピューター、女装、デザイン、機械学習、政治、Python、気合と運と、ジャンルが割と幅広い。

共通しているのは、発表者は皆それを心底好きでやっていること。自分の知らない世界に触れることができ、その根っこにあるパッションに心動かされる。しかも、その話し手は自分と同じ高専生や仲間たち。


溢れる新春感!


さくらインターネットさんからも手厚い支援!


テーマは猪突猛進と百花繚乱!


ステキ会場提供、さくらインターネットさんから基調講演でスタート!


もりあがる懇親会タイム


みんな地方開催をしよう! 2009年の福井開催もはるか昔、そろそろ福井開催もいいんじゃない?


古いパソコンの液晶をばらしてラズパイとバッテリーで自作したデジタルなお面!おとなのふりかけTシャツもイカしてる!


ラーメン好き、ヤマゲンより、アプリづくりへのお誘い。
鳴かぬなら、鳴くのを創ろう、ホトトギス、な精神でいこうー


こちら飛び込みLTで、2分発表で使った資料 + α。
IoT、アプリ+サーバーサイド+電子工作という高専生にぴったりな総力戦。
さくらインターネットの sakura.io と、こどもパソコン IchigoJam の合作、IchigoSoda を使えば、非情報系の人でも楽しく簡単に作れます! 最小人数10名、最大60名、どこの高専にでも行きます! やってみたいと思う方、Twitter @taisukef までどうぞ! (とりあえず、限定5高専!)

理想形
1. まずは高専生が楽しくIoTとプログラミングを学ぶ
2. 小中学生へ教えてみる(佐世保高専石川高専のように)
3. 高専の枠を超えた部活(地域ICTクラブ、PCNなど)を、定期開催する
4. 高専が地域の小中学生向けプログラミングや、ロボットコンテストを主催する(高専生が審査するのも一興)
5. 高専生にも刺激になり、小中学生はいずれ強い高専生になる


名札システムと、名刺持参する高専生も増えてきてはいるけれど、そろそろイノベーションがほしいところ。


card - @taisukef
その場でQRコード印刷して、名札に貼っちゃうとかどうだろう?余裕ある人は自宅で印刷してもってくるのもよし。名刺の裏に大きく印刷しておくもよし。 名刺は交換せずに、その場でQRコード読み取りで、交流をより深めるきっかけにできるアプリにするのもいいかもしれない。
QRコード作成アプリの参考にどうぞ! 「card - JavaScript src on GitHub


たくさんのjigインターンOB高専生にも再会!


高専生大好きサイゼリアにて

早速、Twitterでは、参加した高専生達のレポートや、新たな宣言が流れてます(#kosenconf)。実験とレポートが基本の高専生。ブログを書くまでが高専カンファレンス! 運営のみなさま、ありがとうございました。参加者のみなさま、高専カンファレンスに興味でた方、次回高専カンファでお会いしましょう!

links
- 高専カンファレンスin新春 参加したお話 - Rikitosama_make_potato’s diary
- スマホのWi-Fi設定とかのお話 - Speaker Deck
- 高専カンファレンス新春 in 大阪でもトップバッターだった話 - nomunomu0504.blog
- 新春カンファ資料-merged (2).pdf - Google ドライブ
- 高専カンファレンス新春 in 大阪に参加した話 - この素晴らしい世界に変革を!
- ML_123shinshun - Speaker Deck
- ハリーポッターに なりたいけどなれないからハニーポッターになる
- 高専カンファレンス新春 in 大阪に参加した - くそメガネの備忘録
- 高専カンファレンス新春 in 大阪に参加した - 鍋はすき焼きがすき
- 弱い高専生が高専カンファに参加してみた。 - SzkAykのブログ
- 高専カンファレンス新春 in 大阪に参加しました! - 記憶
- 【初ブログ】高専カンファレンス新春in大阪に参加した話 - zeran’s blog
- kosenconf in 大阪 ~猪突猛進・百花繚乱~ - Google フォト
- 「高専カンファレンス新春 in 大阪」でLTをするときに立てた戦略 - 反面教師あり学習
- 第二回高専キャリア全国大会と高専カンファレンス新春in大阪にいった話 - 意識低い系高専生の意識高めな奴
- 高専カンファレンス新春in大阪で司会をした #kosenconf #kosenconf_123shinshun - chirashi
- 高専カンファレンス新春 in 大阪で実行委員をした話 - JP3QLW・シガGT324のブログ
- 高専カンファレンス新春 in 大阪に参加した話 – 縣雑記帳

高専プロコン2018にて、起業家甲子園挑戦権を獲得したメンタリングのため、舞鶴高専へ。

起業家甲子園に向けてのメンタリング!
舞鶴市民の健康を守るため、舞鶴市役所と高専生の技術、いかに連携していけるかが鍵!


舞鶴高専のプロコン部の精鋭たちへ、NICT半間さんより、来年度の起業家甲子園へのお誘い!


はじめてのIoTプログラミング」スライド資料 PDF。
町田さんの時間をお借りして、電子制御工学科3年生向けに、特別授業!


LED1 であがる歓声! LEDの点灯実験は初めてだったとのこと!


好評、かわくだりゲーム!


IoT化して、スコアを送信して即席ネットワークゲーム大会!
チートも解禁してからのスコア争いも熱かった!
情報セキュリティのはじめのいっぽは、チートから! 攻めを知らずして守れるわけなし。


温度センサーをつないで、IoT温度計づくり。
多人数で一斉に送られてくる温度データ、リアルタイムにヒストグラム表示させるとおもしろい。


IchigoSodaでIoTプログラミング 舞鶴高専で福野さんの特別授業 | yet another 舞鶴電脳工作室より)


IoTコマンドでスマホからコントロール!

1 N=IOT.IN():IF N LED N-1 2 GOTO 1

たったこれだけ、楽しいIoTづくりへとチャレンジしましょう!
IchigoJam web でも、ゲームづくりはできますよっ。(IchigoJamプリント
IchigoJam webでも、IoTコマンドに対応しちゃうのもアリですね。


町田さん研究室、さかなつり x FPGAのデモ! 研究内容をわかりやすく楽しく伝える、楽しい!
下はなんと0歳の子供も楽しんだとのこと。


デモ動画!
PLL/PWM 方式による位置サーボ系の FPGA 実現


手作りスマート化された、ロボコン部の部室の鍵。取りに行くのが面倒だから作った、と、無いものは作る精神!


ご案内いただいt製作工場! キロW級のレーザー加工機! 金属も余裕で貫くとのこと。


加工サンプル、金属加工品があるのがすごい。


金属加工でつくった時計、かっこいい


舞鶴は造船所が近いということで、溶接施設も充実


大型高級切り出し加工機、学生が自由に使っているとのこと、高専生なら、高専にある機材、学科関係なくどんどん活用しちゃいましょう。


舞鶴高専訪問記 2019.1.11
紹介いただきながら撮った写真、EXIFデータとして位置情報がついているので、取り出して、マッピングし、簡単地図アプリフレームワーク「egmapjs」を使って訪問記アプリにしてみました。 町田さん、ありがとうございました!


舞鶴では松葉ガニ(ズワイガニの山陰の呼び名、福井では越前がに)のメスを、「こっぺかに」と呼ぶ?
こっぺかにロボコンというのもかわいい!(参考、小学生 越前がにロボコン


おいしい煮魚、いただきました!


起業家甲子園に向けて、気合充分!

links
- IchigoSodaでIoTプログラミング 舞鶴高専で福野さんの特別授業 | yet another 舞鶴電脳工作室
- 1時間半でわかる叡智の結晶「IoT」 - IchigoJam x sakura.io 情報セキュリティ実習 in 高知高専>

地理院地図を使ったハンズオンチュートリアルを公開したところ、オープンデータ伝道師のイスマイルさんより、OSMは?と入電あり。

OSM(オープンストリートマップ)は、無料で使える地図データ。ただし、タイル(地図を画像状にしたもの)データ提供サーバーを使ったアプリとしての利用は不可。 ただ、同じ形式の地理院地図 x leafletjs ならOKと気が付き、機能はばっさり削ったシンプル版でいいことに気がつきました。

leaflet x 地理院地図を使った薄いフレームワーク「egmapjs」と、活用例アプリ「Hana道場はどこ?」を作成。


徐々に拡大していきます(動かしたら、オートスクロールは停止)
クリックしたら、Hana道場のページを開きます。
ソース on GitHub


はじまりは日本全体から! zoom = 4


色味は前回同様ちょっと補正していい感じに! zoom = 13


ハンズオン資料も書き換える予定! zoom = 17

links
- Hana道場はどこ? - leafletjs x 地理院地図 (src on GitHub)
- Documentation - Leaflet - a JavaScript library for interactive maps
- 地理院地図|地理院タイル一覧 (出展リンク先)
- JA:タイル利用規約 - OpenStreetMap Wiki

無料で使えて、オープンソースなのでカスタマイズ自由な日本政府、国交省、国土地理院による地理院地図
見た目がちょっと残念な点は、CSS filterで調整することで、結構いい感じにできました!


GitHubのアカウント取得から、地理院地図とオープンデータを使ったオリジナルアプリづくり解説しました。
ハンズオンでできあがるマップアプリ
とりあえずマップ」 「アイコンをおく」 「SPARQLで駐車場マップ」 「秋吉を探せ!

参考
ASCII.jp:大変な時代だからこそ、地方でオープンデータにチャレンジしやすい (1/2)|さくらの熱量チャレンジ
5つ星オープンデータ対応一覧表

2/9-10開催のG空間情報(位置情報付きデータ)イベントでは、更にギミックを足したものを用意します。
みんなでアイデア加えて、新しいアプリ創出を楽しみましょう!
総務省主催:Geospatial Hackers Program in 福井

下記、ハンズオン資料(PDFダウンロードもどうぞ!)


消火栓を探す




地理院地図のAPIはオープンソースの leafletjs なので、国外対応には同APIを使う Mapbox が便利かも。


GitHub








code4fukui/gsimap: 地理院地図マップアプリハンズオン with SPARQL

























5つ星オープンデータ対応一覧表


















大企業とスタートアップ、新しいコラボに期待がかかるオープンイノベーション。
全く異なる文化だから難しい、だからこそおもしろい!

よくわかる オープンイノベーション アクセラレータ入門
大切なのは、情熱のベクトルが一致していることと、お互い学び合う姿勢。
視点が異なるからこそ、生まれるアイデア自体はきっとおもしろい。

ただ、アイデアの段階では価値は無し。
形にして初めて生まれるのが価値であり、権利化できるというのが現代のルール。

スタートアップはそれをすばやく形にし、大企業はそれをバックアップ。 どちらが欠けてもうまくいかないが、両方備えていても成功する保証はない。

もし、斬新なアイデアが必要なら、スタートアップだけでなく、学生・こどもにも目を向けたい。

PBL(問題解決学習)は、小学生だって早すぎることはない。 子供の視野では見えない課題、大人はどんどん積極的に見せるべき。 見せずに問題を大きくして、取り返しがつかない状態にして良い訳がない。こどもの頃から地域社会の一員として活躍できたという体験は、きっと自信となる。

そこで活用したいのは、地域ICTクラブ。

総務省により昨年取り組みが始まった、課外によるプログラミングやものづくりの学びの場「地域ICTクラブ」。 その福井県モデル「福井県こどもプログラミング協議会」での学びの場は、実証機関を終えても継続中。


ZOZOTOWNを支え、社長はPCNの代表も務める「ナチュラルスタイル」では、福井高専OBでもある社員有志によるプログラミングやロボットを学ぶ PCN福井NSクラブ が、社内スペースを使って実施されている。 休日や就業時間後に空いている会議室と、時間外でも技術を活用したいと思っている社員がいれば、全国どこでも実現可能。 企業内のシーズや、課題をこども、学生と一緒に考え、実装しよう。プログラミング実業団同士が、ロボコン、プロコンで争う姿はきっと熱い。


この日、福井高専4年電子情報工学科、非常勤講師として協力中のこの授業では、イノベーションを目指し、8つのバーチャルな会社と事業を作っての発表会。 実装できる、高専生は、力強い助っ人となる。(2/9には福井・石川高専生協力の元、総務省主催:Geospatial Hackers Program in 福井も開催!)


(写真、Hana道場 Twitterより)
鯖江の地域ICTクラブ、Hana道場では、高専生、小学生、大人が一緒にプログラミングを学ぶ。

なぜ、プログラミングか?
それは、コンピューターを使ったアウトプットの基本だから。

聞くだけでなく演奏を学び、鑑賞だけでなく絵の具で描くことを学んだのと同じ。
「テレビを見ることができる」と「テレビの仕組みを知っている」が全く違うように、
「アプリが使える」と「プログラミングができる」は別スキル。
みんな画家にならないのと同様、もちろん、本職にするかしないかは別問題。

「創造」は、文科省がテーマとして掲げるこれからを「生きる力」に欠かせない。 さまざまな仕事がどんどんコンピューターやロボットによって効率化、代替化する中、求められるのは、その人、それぞれの得意を活かした価値づくり。 コンピューターの活かし方を知っているか否かの差はますます開く。 もちろん、今に始まった話では全く無く、もう23年も前、1996年に経団連から提言されている。
創造的な人材の育成に向けて ~求められる教育改革と企業の行動~


(図、Society 5.0 - 科学技術政策 - 内閣府より)
コンピューターによる第三次産業革命の次、AI/IoTによって訪れる第四次産業革命後の日本政府が考える理想社会、Society 5.0 の要は、人間中心。 「快適、活力、質の高い生活」全員がこの三点を達成するためには、コンピューターがいかに高度化しようとも、それぞれが持てる力を存分に発揮し、誰もが誰かに必要とされなくてはならない。


(図、Society 5.0 - 科学技術政策 - 内閣府より)
Society 5.0 の要はコンピューターの大容量・高速・並列化によって実用化された、AI。AIの学習に必要になるビッグデータ。そのビッグデータを形成するのはオープンデータという「約束」である。

軽快性・経済性・安全性を兼ね備えた新しい都市を実現するためには、そのリソースとなる「都市活動データ」を収集するセンサネットワークなどの基盤的インフラを整備することが不可欠である。 公的データ・民間データの提供や、オープンデータ化を促進する制度を同時に導入することが求められる。
(「よくわかる オープンイノベーション アクセラレータ入門」 6.3.1 より)
オープンデータは21世紀のインフラ。
「リアルデータ」は「リアルタイムオープンデータ」、「公共データのオープン化」は「公共オープンデータ」とそれぞれオープンデータと明記を希望したい。
未来投資戦略2018の構成 第4次産業革命技術がもたらす変化/新たな展開:「Society 5.0」 | 首相官邸ホームページ
さらに、オープンデータなどを活用した中堅・中小企業、スタートアップ企業、NPO、市民自身によるサービスの展開を促進すべく、 新たなプレイヤーによる市場参入を可能にする新たなエリアマネジメント体制を各自治体が連携し、権限や責任の明確化を進めることが肝要である。
(「よくわかる オープンイノベーション アクセラレータ入門」 6.3.1 より)
制度自体の見直し、オープン化が合わせて必要。

社会全体がコンピューターを前提とする、Society 5.0。
もはや、従順に「仕える事」では務まらなくなってきているのが、現代の仕事。
「狩りから稲作へ」と代わった Society 2.0 と対比するなら、「仕事から創造へ」。

過去の成功経験がむしろ足かせになる新時代。
民間、行政、高専、学生、市民、こども、お互いオープンに手を取ることからはじめよう。


こちら、NSクラブでプログラミングを学ぶ、小学5年生の女の子たちからリクエストをもらって作成した「アドベンチャーゲーム」。 定義に従い、シチュエーションをグラフィック(絵文字)とテキストメッセージで表し、選択肢を選ぶことで場面が変わる。

課題が現れた どうする? 戦う?逃げる?

100 CLS 110 LC16,10:?CHR$(237) 120 LC0,14:INPUT"カダイガアラワレタ ドウスル? 1:タタカウ 2:ニゲル",N 130 IF N=1 GOTO 200 140 IF N=2 ?"ク、ニゲラレナイ":GOTO 100 150 GOTO 100 200 CLS 210 LC16,10:?"." 220 LC0,14:?"カダイヲ ヤッツケタ!"

自分だけのオリジナルな人生を創ろう!

ゲームとは、ルールで勝負を決めること。

スポーツもゲームの一種ですし、テストで点数化された学校での勉強もゲームです。
つまらないテレビゲームがあるように、ゲームのおもしろさはルール次第。
ちょっとしたルールを追加すれば、劇的に楽しいゲームになったりします。

IchigoJam 1.3 に、何か分かりやすい、かつちょっとした変化をと、カーソルスイッチを実装。
位置を指定するコマンドLOCATE(省略形LC)の第三パラメーターに1を指定すると、点滅するカーソルを表示できるようにしました。


「FIND A to Z」 IchigoJam 1.3 beta 4 以降 (カーソルスイッチ使用、IchigoBoy対応)
こちら A から Z まで、カーソル上下左右で探して、見つけたらスペースを押しましょう。Zまでのタイムを競うゲームです。 タイムの計測は、友達と、または、自分と勝負できるようになる、手軽なゲーム化手法です。

10 CLS:VIDEO3:S=ASC("A") 20 FORI=0TO15:FORJ=0TO5:LCI,J:?CHR$(RND(26)+S):NEXT:NEXT 30 CLT:N=S 40 LC0,7:IF N=S+26:?"CLEAR! TIME:";TICK()/60;:WAIT60:END 50 ?"FIND ";CHR$(N);"!"; 60 LC X,Y,1 70 K=INKEY():IF!KCONT 80 X=(X-(K=28)+(K=29)+16)%16 90 Y=(Y-(K=30)+(K=31)+6)%6 100 IF K=32 AND N=SCR() ?CHR$(0,28);:N=N+1:GOTO40 110 GOTO 60

(RUN on IchigoJam web)

アルファベット小文字をマスターするためには、10行をAからaに変えるだけ!

10 CLS:VIDEO3:S=ASC("a")

大文字も小文字も変わらないタイムがでるようになったら、次はタイピングにチャレンジ!

当時、MSXのマニュアルは何度も読んだはずでしたが、MSX BASICのLOCATEコマンドにあるカーソルスイッチには気がついていませんでした。
MSX-BASIC/LOCATE.txt at master · fu-sen/MSX-BASIC

カーソルスイッチ対応ベータ版、ダウンロードはこちら
IchigoJam 1.3b04.zip

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

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

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