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

ハノイの塔で遊んで分かる再帰的アルゴリズム(最大公約数、階乗、フィボナッチ)

2018/02/18 23:55:00
#IchigoJam #KidsIT 

IchigoJamで遊べる有名ゲーム「ハノイの塔 - Kidspod;」が発表されました。
打ち込むか、MixJuiceでダウンロード(4-1)するか、IchigoJam webで開くかで動きます。
(操作方法:1、2、3キーを使って円盤を移動)


ハノイの塔/Kidspod;」 by 永谷 弘宣

左のピンから右のピンへ円盤を移せばOK。
1度に動かせるのは1枚だけ。
小さな円盤の上に大きな円盤は載せられません。


クリア!

コツはつかめましたか?

円盤4枚のハノイの塔、実はミニバージョン。
ベトナム、ハノイの伝説では、円盤64枚だそうです。
手で動かすのは大変そうなので、コンピューターに手順を教えてやってもらいましょう。

円盤の数が1枚の円盤を動かすときは簡単、左から右へ移すだけ。
2枚のときは、一番上の1枚を使わないピンに退避して、2枚目を右へ移し、退避したものを右へ移す。
n枚動かすときは、n-1枚を使わないピンに退避して、n枚目を目的のピンへ移し、退避したものを目的のピンへ移す。

こういう自己再利用的な考え方を、再帰的アルゴリズムと呼びます。(再帰 - Wikipedia

IchigoJamでハノイの塔の解法を表示させてみましょう。
IchigoJam BASICにおける再帰的アルゴリズムでは、配列をスタックとして使って変数とします。

10 @HANOI 20 IF[S-4]=0:S=S-4:RTN 30 LET[S],[S-4]-1,[S-3],[S-1],[S-2]:S=S+4:GSB@HANOI 40 ?[S-4];": ";[S-3];" -> ";[S-2] 50 LET[S],[S-4]-1,[S-1],[S-2],[S-3]:S=S+4:GSB@HANOI 60 S=S-4:RTN

スタックに、円盤の枚数、動かす元のピン番号、動かす先のピン番号、余りのピン番号と、4つ積み、@HANOIを呼び出します。

LET[0],1,1,3,2:S=4:GSB@HANOI 1: 1 -> 3

1枚だけ

LET[0],2,1,3,2:S=4:GSB@HANOI 1: 1 -> 2 2: 1 -> 3 1: 2 -> 3

2枚

LET[0],3,1,3,2:S=4:GSB@HANOI 1: 1 -> 3 2: 1 -> 2 1: 3 -> 2 3: 1 -> 3 1: 2 -> 1 2: 2 -> 3 1: 1 -> 3

3枚・・・と、どんどん手数が増えていきますね。
4枚の時の計算をしてメモし、実際にハノイの塔で解いてみましょう。

5枚の時の手順は?
6枚の時の手順数は?
64枚ではどのくらいになるでしょう?

京が64枚のハノイの塔を解くのにかかる時間はどのくらい?
(1秒で1京計算できるスパコン、1回の動きが1計算で完了することとします)

参考に、再帰的アルゴリズムを使った他のアルゴリズムの紹介です。

最大公約数
二つの数、どんどん余りの計算をして割り切れたときの割った数が最大公約数ユークリッドの互除法)。

10 @GCD 20 IF[S-1]=0:S=S-1:RTN 25 ?[S-2];", ";[S-1] 30 LET[S],[S-1],[S-2]%[S-1]:S=S+2:GSB@GCD 40 [S-3]=[S-1]:S=S-2:RTN LET[0],1920,1080:S=2:GSB@GCD:END

階乗
その数より小さい正数を全部かけたものが階乗

10 @FACT 20 IF[S-1]=0:[S-1]=1:RTN 30 [S]=[S-1]-1:S=S+1:GSB@FACT 35 ?[S-2];"*";[S-1];"=";[S-2]*[S-1] 40 [S-2]=[S-2]*[S-1]:S=S-1:RTN [0]=7:S=1:GSB@FACT:?[0]

フィボナッチ数
0,1から始まり、ふたつ前の数を足した数が連なるのがフィボナッチ数列

10 @FIB 20 IF[S-1]<2:RTN 30 [S]=[S-1]-1:S=S+1:GSB@FIB 40 [S]=[S-2]-2:S=S+1:GSB@FIB 45 ?[S-2];"+";[S-1];"=";[S-2]+[S-1] 50 [S-3]=[S-2]+[S-1]:S=S-2:RTN [0]=10:S=1:GSB@FIB:?[0]

スタックは、身につけておきたい、メモリの便利な使い方です!

スタック - from Wikipediaより

※各種小改良した、IchigoJam BASIC ver 1.2.4予定のbeta56、IchigoJam-FANにて紹介中です!

links
- IchigoJamで学ぶデータ構造「スタック」
- ハノイの塔/Kidspod;
- IchigoJam-FAN - Facebook

レジスタ不足に上位レジスタとスタック操作 / IchigoJamではじめるArmマシン語その12

2018/02/17 23:55:00
#IchigoJam #asm 

Armマシン語でWS2812Bマトリクスの表示ドライバのようにちょっと大きめのプログラムをつくると陥るレジスタ不足。 この時の、対処方法は2つ。上位レジスタとスタックです。

1. 上位レジスタを活用する
Arm Cortex-M0には、R0〜R15まで16コのレジスタ、R8〜R15は使える命令が5コに制限されますが、カウンタの回数チェックや、割り算ルーチンのポインタを格納しておくなど用途を選べば活用できます。(Cortex-M0 Armマシン語表より)

Rd=Rm Rd+=Rm Rn-Rm GOTO Rm GOSUB Rm

R8〜R11: 呼び出し元に帰る前に際には元に戻す必要がありますが自由に使えます。
R12: 破壊してOK。自由に使えます。
R13: スタックレジスタで、スタックに積んである一番上を指すポインタです。
R14: 呼び出し元のアドレスが入ったリンクレジスタ、GOSUBで呼び出す際に更新されます。
R15: プログラムカウンタ、実行中のアドレスの2つ先(4byte先)を指すポインタです。

上位レジスタをカウンタの回数チェックに使う(R0に指定した数までカウント)

R12=R0 R0=0 R0+=1 R0-R12 IF !0 GOTO -2 RET

上位レジスタを使った割り算(R0に指定した数を7で割る R0)
※IchigoJam BASIC ver1.2からR3に除算ポインタがセットされています

R12=R3 R0=7 GOTO R12

上位レジスタを使った割り算の余り(R0に指定した数を7で割った余り R1)

PUSH {LR} R12=R3 R0=7 GOTO R12 R0=R1 POP {PC}

R8〜R11までをフルに使うためにスタックに保存する

PUSH {R4-R7,LR} R4=R8 R5=R9 R6=R10 R7=R11 PUSH {R4-R7} ' R0-R12まで使い放題 POP {R4-R7} R8=R4 R9=R5 R10=R6 R11=R7 POP {R4-R7,PC}

参考、フル活用例「IchigoJam で BASIC と C とアセンブラ速度比較と最適化あそび - Qiita
マシン語で書くと、BASICの1万6千倍も速い!

1. スタックを活用する
その5で解説したスタック、POPしなくても参照できる便利な命令があります。

※u7/u8:4byte単位
※PUSH:regsの大きいレジスタから順に、SPを減らしSPへ積む 例)PUSH {R1,R2}
※POP:regsの小さいレジスタから順に、SPから読み込みSPを増やす 例)POP {R1,R2}
※N:指定したレジスタの数、PCへPOPした場合4+Ncycles(それ以外は1+Ncycles)
Cortex-M0 Armマシン語表 (asm15表記、抜粋)

SPは、R13の別名です。SPのアドレスには最後に積んだ値が入っています。+1で2番目、+2で3番目とアクセス可能です。 WS2812Bのパレットドライバをこれを利用して作っています。

' 配列の物理アドレスをPUSHしておく R2=8 R2=R2<<8 R2+=R1 PUSH {R2-R7,LR} ' 中略 ' R1をスタックに退避し、スタック2番目、配列のアドレスを取得 PUSH {R1} R1=[SP+1]L R1+=R3 ' 中略 POP {R1} ' 中略 POP {R2-R7,PC}

スタックへの書き込みも移動も自由自在ですが、ちょっと間違うとすぐ暴走しちゃいます。


Cortex-M0 Armマシン語表 (asm15表記、抜粋)」(PDF)

参考に、WS2812Bの32x8マトリクスのパレット対応ドライバのArmマシン語 asm15表記プログラムの全文です。

' OUT1用 WS2812B 32x8 @OUTを変更でOUT1-4で変更可能、#800に3byteパレット最大64色パレット、R, G, B(キャラクターコード、"0"=48から順番) ' R0 - data count ' R1 - data address #900(VRAM)から1byte 1pixel = 1color palette #800 ' R2 - temp OUT value 0/#FF, & 15 ' R3 - data value, temp ' R4 - GPIO address ' R5 - bit count ' R6 - wait count buf ' R7 - wait count ' R12 - increment or decrement address @WS2812B R2=8 R2=R2<<8 R2+=R1 PUSH {LR,R2,R4,R5,R6,R7} CPSID R0=0 R4=9 R4=R4<<8 R1=R1+R4 R4=1 R12=R4 R4=[@OUT]L @LOOP_DATA R3=[R1] ' palette R3-=48 R2=63 R3&=R2 R3=R3<<1 PUSH {R1} R1=[SP+1]L R1=R1+R3 R3=[R1] ' G R3=R3>>4 GOSUB @SEND_BYTE R3=[R1]W ' R R3=R3>>8 GOSUB @SEND_BYTE R3=[R1] ' B R2=15 R3&=R2 GOSUB @SEND_BYTE POP {R1} R1+=R12 R0+=1 R2=31 R0&R2 IF !0 GOTO @LOOP_DATA R2=R0>>5 R2-8 IF 0 GOTO @END R1+=31 R3=1 R5=-R3 R12=R5 R2&R3 IF !0 GOTO @LOOP_DATA R1+=2 R12=R3 GOTO @LOOP_DATA @END CPSIE POP {PC,R1,R4,R5,R6,R7} @SEND_BYTE R5=#80 ' R3+=2 ' offset @LOOP_BIT R2=#FF [R4]L=R2 R7=3 '(3*4+1)=13 <- 16.8+-7.2 R6=9 '(9*4+1)=37 <- 43.2+-7.2 R3&R5 IF 0 GOTO @SKIP_LOOP_BIT R7=9 '(9*4+1)=37 <- 43.2+-7.2 R6=3 '(3*4+1)=13 <- 16.8+-7.2 @SKIP_LOOP_BIT R7-=1 'wait R7*4+1 clock IF !0 GOTO -1 R2=0 [R4]L=R2 R6-=1 'wait R6*4+1 clock IF !0 GOTO -1 R5=R5>>1 IF !0 GOTO @LOOP_BIT RET @OUT DATA L #50010004

@LOOP_DATAで、#900の画面を読み取り、48=ASC("0")を引き、63でアンドをとって64色パレットとしています。[0]から[63]までの配列に入った、RGB、各4bitを@SEND_BYTEを呼び出し送信しています。

@SEND_BYTE内のR7とR6を使ってシリアル信号のタイミングは仕様に収まるようにしていますが、短い方を1、長い方を5まで短縮が可能でした。(個体によるかもしれないので要確認)

対応強化したasm15用Armアセンブラ「asm15 assembler」を使ってIchigoJamで動かしましょう。
Armマシン語表を使ってハンドアセンブルしてもOKです!

- 連載、IchigoJamではじめる、Armマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語
8. アセンブラを使って楽しよう
9. マシン語で高速SPI
10. マシン語を制するもの時間を制す
11. 画面をイチゴで埋め尽くす12の方法
12. レジスタ不足に上位レジスタとスタック操作

IchigoJamでカラフル電飾! WS2812Bマトリクス x IchigoJam 64色パレット対応ドライバでつくるオリジナル電光掲示板 16x16/32x8/8x32

2018/02/16 23:55:00
#IchigoJam #KidsIT 

デブサミでの展示で活躍したカラフル電光掲示板でしたが、お絵かき感覚でもっと簡単に電飾づくりできるようなプログラム(ドライバプログラム、Armマシン語)をつくりました。

「レッツ、カラフルお絵かき!」
Insertキー(または、Ctrl+Alt)を押して上書きモードにすると自由にカーソルが動かせます!

16x16のマトリクス状になったWS2812Bの 5V/DIN/GND を、IchigoJamの VCC/OUT1/GND に接続して、次のプログラムを実行!

1 'WS2812B 16x16 palette driver 10 POKE#700,8,34,18,2,10,68,244,181,114,182,0,32,9,36,36,2,9,25,1,36,164,70,30,76,11,120,48,59,63,34,19,64,91,0,2,180,1,153,201,24,11,120,27,9,0,240,29,248,11,136,27,10,0,240,25,248,11,120,15,34 20 POKE#73C,19,64,0,240,20,248,2,188,97,68,1,48,15,34,16,66,228,209,2,9,16,42,8,208,31,49,1,35,93,66,172,70,26,66,219,209,2,49,156,70,216,231,98,182,242,189,128,37,255,34,34,96,3,39,9,38,43,66,1,208 30 POKE#778,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8,239,209,112,71,0,0,4,0,1,80 40 LET[0],#FFF,#F00,#0F0,#00F,#FF0,#0FF,#F0F,#F30,#03F,#F03 50 U=USR(#700,0)

画面左上16x16の領域に0〜9を使って描いた絵が RUN(=F5)で、電飾に変換します!
40行目がRGBを24bit、16進数3文字で表す色パレット。例えば0は#FFFで白、1は#F00赤にしています。
プログラムを作って、アニメーションさせたり、ゲームを作ったりもできます。
パレットを値をくるくる変えてもおもしろいですね!

ワークショップなどで打ち込みが大変な場合、EEPROMなどにいれておくのが便利です。

こちらIchigoJamロゴのスクロールデモ(ドライバを書き込んでから実行)。64色パレットに配列の0〜63まで使うので、表示文字保存には配列の70以降を使っています。(#700の内容を見てドライバがなければマシン語呼び出ししない安全設計)

1 'IchigoJam LOGO 100 [70]="0 2 3 6" 110 [71]="0 2 6" 120 [72]="0 111 222 3 444 555 6 777 888888" 130 [73]="0 1 2 2 3 4 4 5 5 6 7 7 8 8 8" 140 [74]="0 111 2 2 3 444 555 666 7777 8 8 8" 150 [75]=" 4" 160 [76]="99999999999 444 999999999999999999" 170 LET[0],#E64,#E69,#69C,#A8C,#5AE,#8C3,#BC2,#EC1,#FA4,#E86,#FFF 200 L=40:P=0:CLS 210 FORI=0TO7:IF P<LEN([70+I]):LC31,I:?STR$([70+I]+P,1); 220 NEXT 230 IF PEEK(#700)=8:U=USR(#700,0) 240 SCROLL LEFT:P=(P+1)%L:GOTO 210

32x8のマトリクスWS2812B用ドライバはこちら。

1 'WS2812B 32x8 palette driver 10 POKE#700,8,34,18,2,10,68,244,181,114,182,0,32,9,36,36,2,9,25,1,36,164,70,30,76,11,120,48,59,63,34,19,64,2,180,1,153,91,0,201,24,11,120,27,9,0,240,29,248,11,136,27,10,0,240,25,248,11,120,15,34 20 POKE#73C,19,64,0,240,20,248,2,188,97,68,1,48,31,34,16,66,228,209,66,9,8,42,8,208,31,49,1,35,93,66,172,70,26,66,219,209,2,49,156,70,216,231,98,182,242,189,128,37,255,34,34,96,3,39,9,38,43,66,1,208 30 POKE#778,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8,239,209,112,71,0,0,4,0,1,80

同じ32x8の256コのWS2812Bですが、8コずつ連なっている8x32バージョンもあったので、対応ドライバを用意。(WS2812B互換?仕様が異なるものがあるようで、発色や、光り始める値も違いました)

1 'WS2812B 8x32 palette driver 10 POKE#700,8,34,18,2,10,68,244,181,114,182,0,32,9,36,36,2,9,25,32,36,164,70,30,76,11,120,48,59,63,34,19,64,91,0,2,180,1,153,25,68,11,120,27,9,0,240,30,248,11,136,27,10,0,240,26,248,11,120,15,34 20 POKE#73C,19,64,0,240,21,248,2,188,97,68,1,48,7,34,16,66,228,209,194,8,32,42,9,208,31,57,32,35,93,66,172,70,1,37,42,66,218,209,64,49,156,70,215,231,98,182,244,189,128,37,255,34,34,96,3,39,9,38 30 POKE#776,43,66,1,208,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8,239,209,112,71,4,0,1,80

16x16も縦つながりバージョン対応ドライバはこちら(左右反転していたらこちらをご利用ください)

1 'WS2812B 16x16V palette driver 10 POKE#700,8,34,18,2,10,68,244,181,114,182,0,32,9,36,36,2,9,25,32,36,164,70,30,76,11,120,48,59,63,34,19,64,91,0,2,180,1,153,25,68,11,120,27,9,0,240,30,248,11,136,27,10,0,240,26,248,11,120,15,34 20 POKE#73C,19,64,0,240,21,248,2,188,97,68,1,48,15,34,16,66,228,209,2,9,16,42,9,208,31,57,32,35,93,66,172,70,1,37,42,66,218,209,64,49,156,70,215,231,98,182,244,189,128,37,255,34,34,96,3,39,9,38 30 POKE#776,43,66,1,208,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8,239,209,112,71,4,0,1,80

IchigoJam x WS2812B、オリジナルな電飾を楽しんでください!
ドライバのマシン語解説

links
- IchigoJamに日本語漢字を表示させる方法 powered by 8x8日本語フリーフォント「美咲フォント」
- IchigoJamで格安電光掲示板 - 日本語10x10 M+ BITMAP FONTSを8x8にコンバート

子供の好奇心を広げよう! おうちではじめるプログラミングの授業 by 平初 - おにぎりコロコロ on IchigoJam web

2018/02/15 23:55:00
#KidsIT #IchigoJam #devsumi 

エンジニアの祭典、デブサミこと翔泳社のDeveloper Summit 2018、EdTechコーナーにIchigoJam出展。
テーマは「変わるもの×変わらないもの」、プログラミングに最初にであったワクワク感。現代の子供達も変わりません。

IchigoJamでコントロールするかわいいロボットやキラキラの数々、人気でした!
秋葉原のPCN直営店、PCN秋葉原 アセンブラージュ (@pcn_akiba)ではいつでも体験できますよ!
IchigoJam電光掲示板のソースはこちら!)


1行でサーボやキラキラできて、数行で楽しいゲームのプログラミングができちゃう、IchigoJam!
はんだづけから楽しめるハーフキットと、つないで2秒で即プログラミングできる完成版。
オススメキーボードは、USBキーボードながらPS/2ファームも入っている、651円のサンワサプライ製キーボード

Amazonで揃います!(PCN通販もどうぞ)


お父さんが教えるプログラミング、我が子に伝えたいワクワク - Developer Summit 2018
Speakerのセールスフォースの安倍さん、レッドハットの平さん


大多数が幼稚園や小学生を親に持つエンジニアな満員の会場、IchigoJamを知っていますか?で挙がったのは10%ほど。
ソフトウェアとハードウェアの垣根がなくなるIoT時代、ソフトウェア系なエンジニアな方こそ、子供と一緒にはじめてほしいプログラミング&電子工作。


阿部崇さんの自己紹介スライド、小学生でファミリーベーシック、中学生でMSX、高専でX68!
都会では、周りにコンピューターを持っている友達がたくさんいたという羨ましい環境があったんですね。三重県では学年にもうひとりしかMSXを持っている子供はいませんでした。


おにぎりコロコロ on IchigoJam web
ESCキーか、Ctrl-Cか、ボタンで止まる、IchigoJamのWebAssemblyでつくったエミュレーターです。
平さんが5歳の息子にはじめて教えたプログラミング!

CLS = 画面を消去、CLear Screen
LOCATE = カーソル移動
PRINT = 表示
WAIT = フレーム数分待つ(60=1秒)
GOTO = 処理を指定行数に移す(ループや分岐に使う)
全コマンドは、A4 1枚に収まる「IchigoJam BASIC リファレンス」をご参照ください。


絵文字で楽しく、プログラミング!
左Altキーを押しながらアルファベットや数字キーで絵文字がでるので、簡単にさくっと楽しげな雰囲気のできあがり。
IchigoJam web でも試せます。


I/O(外の世界とのインプット・アウトプット)が超簡単なのがIchigoJamの特徴です。

LED 1

これでLEDが光ります!

OUT 1,1

OUT1端子に差し込んだ外付けLEDが光ります。モータードライバー経由でモーター制御もこれ1命令

PWM 2,60

関節にあたるサーボの制御もこの1命令。サーボは、パルスの長さによって角度が変わるようにできているんです(PWM = パルス幅変調)。

危険なMaker Faire、ぜひお子様と一緒に覗いてみてください!
いろいろ作ってみたくなりますよっ


EdTechZineの人気連載が書籍に!
平初著「おうちではじめるプログラミングの授業」来月発売!

講演のグラレコ、かわいい!


北千住を中心に、子どもたちにプログラミングの楽しさを伝えるグループ「PCN北千住」代表の村上さんと平さん!

こどもいない、まだ小さいけど興味あるという方、子どもたちにプログラミング伝えてみませんか?
2.24(土)「第3回 こどもプログラミングサミット2018 in Tokyo | PCN プログラミング クラブ ネットワーク
2.25(日)「PCNこどもプロコン2017冬 表彰式!

links
- お父さんが教えるプログラミング、我が子に伝えたいワクワク - Developer Summit 2018
- 【デブサミ2018】15-D-7「お父さんが教えるプログラミング、我が子に伝えたいワクワク」 #devsumiD #devsumi - Togetter

IchigoJamカラフル電光掲示板のつくりかた

2018/02/14 23:55:00
#IchigoJam #maker 

CC BYで、公開しているIchigoJamのロゴ
WS2812B 32x8のフルカラーLEDを使って、表示してみました。

つくりかた
まずは、画面づくり。色ごとに数値を使って、IchigoJamロゴを描きます。

2 [0]="0 2 3 6 " 3 [1]="0 2 6 " 4 [2]="0 111 222 3 444 555 6 777 888888 " 5 [3]="0 1 2 2 3 4 4 5 5 6 7 7 8 8 8 " 6 [4]="0 111 2 2 3 444 555 666 7777 8 8 8 " 7 [5]=" 4 " 8 [6]="99999999999 444 999999999999999999 "

スクロールしてみましょう。

10 P=0:CLS 20 FORI=0TO7:LC31,I:?STR$([I]+P,1);:NEXT 30 SCROLL LEFT:P=(P+1)%LEN([0]):GOTO20

(RUN on IchigoJam web)

ロゴ画像の色は下記ようになっているので、こちらを256色カラーに変換しましょう。

10 LET[0],"#EB624E","#EB6B93","#6E92CC","#AD8EC0","#52AEE2","#8BC33C","#B2CC29","#EBC61D","#F5A948","#EF816E" RUN

16進数6桁のカラーコード。文字列はダイレクトモードで格納すると化けてしまうので、プログラム内に書いて、RUNしてセットしておきましょう。

どう変換するか?まずは16進数一桁のコードを10進数にしてみるところからスタートします。まずはキャラクターコードの確認から。

FORI=0TO255:POKE#900+I,I:NEXT

#900は画面を表すアドレス、0から255までのコードを表示すると、数字がアルファベットより先にあることがわかります(アドレスを忘れてしまったら、HELPコマンド)。 数字だったら0のコードを引き、アルファベットだったら数字とアルファベットの間の数だけずらせばOKですね。

C=ASC("C") C=C-48:IF C>9 C=C-7 ?C

16進数を10進数に変換できました。ここでもうひと工夫して、短くしましょう。(C>64)はCが64より大きい時1に、以下の時は0になるので、IF文を省略できます。

C=C-48-7*(C>64)

この調子で2桁16進数に対応しましょう。

S="10" C=ASC(S):D=ASC(S+1):N=(C-48-7*(C>64))<<4+D-48-7*(D>64) ?N

これを使いやすいようにサブルーチンにします

100 @S2HEX:C=ASC(S):D=ASC(S+1):N=(C-48-7*(C>64))<<4+D-48-7*(D>64):RTN

6桁のRGBをそれぞれ10進数にもどし、8bitのRGBへと再構築します。

110 @S2RGB:S=S+1:FORI=0TO2:GSB@S2HEX:S=S+2:[I+10]=N:NEXT:N=[11]&#E0+[10]>>5<<2+[12]>>6:RTN S="#FF1020":GSB@S2RGB:?BIN$(N)

変換できたので、いよいよ全部まとめて変換します。

?"9 LET[23]";:FORJ=0TO9:S=[J]:GSB@S2RGB:?",";N;:NEXT:? 9 LET[23],125,126,143,151,171,208,212,220,189,255,157 OK

色コードパレットが完成しました!

WS2812Bのドライバと組み合わせて、できあがり!

1 '32x8-WS2812B 10 POKE#700,240,181,114,182,9,36,36,2,9,25,1,36,164,70,27,76,11,120,91,9,0,240,31,248,11,120,155,8,7,34,19,64,0,240,25,248,11,120,3,34,19,64,91,0,0,240,19,248,97,68,1,48,31,34,16,66,234,209,66,9 20 POKE#73C,8,42,8,208,31,49,1,35,93,66,172,70,26,66,225,209,2,49,156,70,222,231,98,182,240,189,128,37,155,0,255,34,34,96,3,39,9,38,43,66,1,208,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8 30 POKE#778,239,209,112,71,4,0,1,80 40 IFRLRUNR>>8,R&255 SAVE3 NEW 1 'IchigoJam 32x8 WS2812B 2 [0]="0 2 3 6 : : ::: : " 3 [1]="0 2 6 :::::: :: : : " 4 [2]="0 111 222 3 444 555 6 777 888888 :: : ::::::: " 5 [3]="0 1 2 2 3 4 4 5 5 6 7 7 8 8 8 : ::: ::: : : " 6 [4]="0 111 2 2 3 444 555 666 7777 8 8 8 :: : : ::::::: " 7 [5]=" 4 : ::: : : " 8 [6]="99999999999 444 999999999999999999 : : : :: :: " 9 LET[23],125,126,143,151,171,208,212,220,189,157,255 10 [7]=0:P=0:CLS:R=FILE()<<8+20:LRUN3 20 FORI=0TO7:IFP<LEN([I]):C=ASC([I]+P)-25:POKE#91F+32*I,[C] 30 NEXT 40 U=USR(#700,0) 45 IF BTN() WAIT10 50 SCROLLLEFT:P=(P+1)%65:GOTO20 SAVE0


「IchigoJam体験」とスクロール表示

ドライバを3番に保存、掲示板を0番と設定しています。ご利用環境に合わせてご変更ください。

links
- IchigoJamの画面からダイレクトであやつる、256色カラー32x8電光掲示板!Armマシン語ジグザグドライバ for WS2812B
- IchigoJamに日本語漢字を表示させる方法 powered by 8x8日本語フリーフォント「美咲フォント」

除雪をモチーフにしたパズルゲーム「除雪番 / JOSETSUBAN」 for IchigoJam

2018/02/13 23:55:00
#IchigoJam #game #fukui 

大雪、一晩で30cm以上積もると除雪しないと車も動かせない。
雪は簡単に解けてなくなるわけではないので、どける場所が必要。
除雪は戦略が大事です。

除雪から着想得たパズルゲーム「除雪番 / JOSETSUBAN」。
大掃除をテーマにした「掃除番」に続くオリジナルパズル第二弾。


除雪番 on IchigoJam web

除雪番(JOSETSUBAN)のルール

1. ゴールにたどり着けばクリアです
2. 雪は1つだけ押すことができます
3. 動かす先に雪の積む余地があれば詰めます(最大4段)

除雪番 for IchigoJam 操作説明

上下左右キーで動きます
スペースキーでリトライします

' JOSETSUBAN 10 VIDEO3:S=1:LET[0],1,0,4,3,3,4,4,3,1,0,4,2,2,4,4,2,3,4,3,3 20 CLS:T=S*4-4:SRND[T]:FORI=1TO62:LC1+I%8,2+I/8:?CHR$([T+1+RND(3)]):NEXT:LC1,0:?"STAGE:";S;"-";[T] 30 X=1:Y=2:D=0:LC8,9:?CHR$(11) 40 LCX,Y:?CHR$(253-D*2) 50 IFBTN(32)GOTO20 60 A=BTN(29)*(X<8)-BTN(28)*(X>1):B=BTN(31)*(Y<9)-BTN(30)*(Y>2):D=D-BTN(28)*D+BTN(29)*!D 70 IF!A&&!B:GOTO50 80 IFX+A=8&&Y+B=9:LC2,11:?"GOAL!";:WAIT60:S=S+1:IFS=6ENDELSEGOTO20 90 N=SCR(X+A,Y+B):IF!N:GOTO120 100 LCX+A*2,Y+B*2:M=SCR():IFM=11GOTO40ELSEIF!MM=NELSEM=M+N-5:IFM<1GOTO40 110 ?CHR$(M) 120 LCX,Y:?CHR$(0):X=X+A:Y=Y+B:GOTO40

10行の配列がステージデータです。1ステージ配列の要素を4つ使い、最初がランダムの初期化値(SRND)、後3つがランダムにステージにおく雪種。
ちゃんとステージを考えてつくると、おもしろいパズルゲームとなるはず!

スペースを置く毎にステージを生成するには次のように改造してください

50 IFBTN(32):[T]=[T]+1:GOTO20

タイトル画面もつけたい場合は次の行を追加!

25 LC10,4:?"JOSE":LC10,5:?"TSUBAN"

除雪が落ち着いたら、雪で埋まった消火栓、掘り返しておきましょう。
高校生、宝探しのようでおもしろかったとのこと!
プログラミングには、不便を楽しみに変える力もあります。

links
- 倉庫番 - 1982年生まれの名作、押しモノゲーム!
- 掃除番 - 2015年大掃除をテーマに作成
- 平成30年2月大雪に関する情報 | 福井県ホームページ

特別支援学校=盲学校+聾学校+養護学校(2007年から) IchigoJamで音楽を学んで校歌演奏しよう

2018/02/11 23:55:00
#IchigoJam #music #KidsIT 

縁あって訪問した沖縄の特別支援学校でしたが、実体を知らなさすぎました。
特別支援学校は日本教育変革の救世主!?

漢字が分かると、なんとなく分かった気になってしまう日本語の罠。

それまでの視覚障害者向けの盲学校、聴覚障害者向けの聾学校、知的障害者・肢体不自由者・病弱者向けの養護学校が、特別支援学校という括りとなりました。 2007年に誕生した新しい言葉、25歳以上は義務教育で教わっていません。

〜自立や社会参加に向けた主体的な取組を支援するという視点に立ち、幼児児童生徒一人一人の教育的ニーズを把握し、その持てる力を高め、生活や学習上の困難を改善又は克服するため、適切な指導及び必要な支援を行うものです。
文部科学省 特別支援教育についてより)

教育方針が明確。自立と社会参加をゴールにおき、一人一人と向き合う、まさに理想的な教育機関!
いっそ子供全員が特別支援教育がいい気がしますが、現状の一人あたり教育コストは10倍。IT活用なしに実現は不可能です。

福井県には特別支援学校が13校。内、盲学校と聾学校が1校ずつ。(福井県特別支援学校一覧 - Wikipedia
盲学校ってどんな学校? | 福井県立盲学校」(実は、見えない人よりも見える人の方が多いのです)
校歌 - 福井県立ろう学校」聴覚障害の子供たちの歌声!

鯖江最寄りの「小学部紹介:福井県立福井南特別支援学校」に載っていた時間割を見ると、音楽、図画工作、自立活動と楽しそうな科目が目をひきます。 楽器としても使えるIchigoJam、自分の学校の校歌を演奏させてみましょう。

楽譜をMML(エムエムエル、ミュージックマクロランゲージという音楽を表すコンピューター言語)に変えれば、コンピューターが演奏してくれます!

PLAY"CDE2CDE2"

ドレミードレミー、チューリップの冒頭ですね
(詳しくは:IchigoJam BASICリファレンスPLAY - IchigoJamプリント

福井南特別支援学校の校歌の冒頭MMLはこんな感じ!

10 PLAY"T104FD2C.D8>B-2.<FGFE-DE-2R E-C2CE-8E-8D.E-8F8F8F8EEFGF2R" RUN

楽譜とMMLの記号との対応を見ながら演奏できるプログラムをつくってみました。

カーソル上下で動かし、スペースで音が鳴ります。

10 POKE#700,0,0,0,255,0,0,0,0,56,124,254,255,254,124,56,0,254,124,56,255,0,0,0,0,0,0,0,255,56,124,254,254,0,0,0,7,0,0,0,0,0,0,0,192,0,0,0,0 20 S=" C` D` E` F` G` A` B`<C`<D`<E`<F`<G":T=0:VIDEO3 30 CLS:FORI=1TO5:LC6,I+2:?CHR$(224,224,224);:NEXT 40 LC7,8-(T+1)/2:IF T%2=0 ?CHR$(225) ELSE ?CHR$(227,28,31,226) 50 IF T=0 LC6,8:?CHR$(228,225,229) 60 LC10,8:?STR$(S+T*3,2) 70 K=INKEY():IF!K CONT 80 IF K=32 PLAYS+T*3:GOTO70 90 T=T-(K=31)+(K=30):T=(T+12)%12:GOTO30

10行で五線と音符キャラクターをつくっています。
20行のSを80行で音階毎に鳴らしています。
キー操作ではなく、ドから順番にならすだけのプログラムはこちら(RUN on IchigoJam web)

オリジナルキャラクターづくりは、イチゴがりするかめプログラムの記事を参考にどうぞ!

links
- 特別支援教育について:文部科学省
- 特別支援学校 - Wikipedia (沿革、実体、課題など記載あり)

特別支援学校は日本教育変革の救世主!? KidsVenture in 沖縄、教員&こどもプログラミングワークショップとIoT

2018/02/10 23:55:00
#IchigoJam #KidsIT #IoT #okinawa 

沖縄県西原町にある、県立森川特別支援学校にて、教員の方と支援学校に通う子供たち向けイベント開催!

2時間半の長時間ワークショップ後で、この笑顔!すごい集中力と吸収力でした。


平成豪雪直後の福井を発ち、沖縄へ。


会場、沖縄県立森川特別支援学校


桜、咲いてました。

午前中、まずは教員の方向け。

野口先生よりご挨拶。


こちら講演資料「なぜプログラミングを教えるのか?」です。
目を輝かせる子供たちが創るであろう未来へのワクワク感がたまりません。


1996年に経団連から「創造的な人材の育成に向けて」で時代遅れと指摘されている日本の教育。 2020年から小学校でのプログラミング教育が盛り込むことが決定し、一歩前進。
ただ、香港の公立小学校では子供のイノベーションを教員が支援する形が実現しているらしく、負けてはいられないところです。(コンピューターが人間に勝つ時代の教育とは? 答えは超受験戦争地・香港にある | BUSINESS INSIDER JAPAN


集まっていただいた30人もの先生、続いてプログラミング実践、ワークショップ。
真剣、かつ、楽しそう!(講師、松田さんブログ!)


LEDを2回点滅をさせるプログラムをつくってみましょう!
気は利かないけど、言ったことは正確に実行するコンピューター。
思った通り動くのではなく、言った通りに動くことを、体験。体験に勝る学習なし。


順を追って進めて、かわくだりゲームづくり。
音楽の時間でも、まずはなぞって演奏するように、プログラミングもまずはなぞってみましょう。
プログラミングは「書く」ではなく「組む」なのは、上から順番に書いていくとは限らないから。
どのように組むかは創り手次第。
奥深い創造の楽しさを、とっても手軽に味わえるのがプログラミングの醍醐味です。

ワークショップ後のふりかえり。
野口先生より質問「特別支援の子供たちがプログラミングができるようになったら採用ありうるか?」
もちろん答はYESです。
ソフトウェアエンジニアの世界は実力主義。 新卒採用案内にあるようにjig.jpも学歴、年齢は不問です。 プログラミングが好きで、会社の夢を共有できる人、大歓迎です。


午後はいよいよこども向けワークショップ!
「点滅のしくみ」を紹介するPCN代表、松田さん。沖縄でカットしたヘアスタイルがダンブン風!
さまざまな「しくみ」がコンピューターによるソフトウェア化される現代、プログラミングを知らずに社会の仕組みを理解することはできない。


小学3年生も真剣!


サポートにきてくれた、jigインターンOG、沖縄高専の学生、みずきち(@shimamiz)


自分なりの改造が楽しい「かわくだりゲーム」
教員の部では見つからなかった、画面端にいくと死なない裏技、子供ワークショップではみんな即見つけちゃうのがおもしろい。


速度調整で、WAIT3.5といれて、小数が使えないことを知った小学3年生。


BEEPとRNDコマンドの組み合わせ、宇宙感あるランダムBGMを追加しちゃう小学3年生!
IchigoJamのコマンドはわずか100程度。いろいろ触って、組み合わせて、プログラミングの楽しさ味わって!
IchigoJam BASIC リファレンス ver 1.2」「IchigoJamプリント
気の合う誰かと一緒に取り組んでみたり、気の向くままにつくりまくってみたり、自分なりの楽しみ方を探ってみること自体もまた、楽しんで!

学校の本質は、学び方を学ぶこと。
世界のルールが一変した、web前とweb後。
webは、子供でも大人でも、世界中等しく使える最強の学習ツールです。

とはいえ、知識なくwebと触れても使いこなせず、テレビと同様流されるがまま。
コンピューターの集合であるwebの理解の第一歩は、シンプルなコンピューターとプログラミング。
自ら学び、思い通りに操れるようになっていく楽しさとコツを見につけたら、webデビュー。
広大なネットを味方に、思う存分好きな世界での価値創造を楽しみましょう。

生徒一人ひとりと向き合う特別支援学校こそ、日本の教育変革の救世主かもしれません。
子供たちの集中力、吸収力、そして熱心な先生達との貴重な体験の機会に感謝です。

2.24、こどもプログラミングと日本の未来がテーマの「こどもプログラミングサミット」では、参加者全員ディスカッション。 関心ある方、ぜひご参加ください!

IoT電光掲示板のつくりかた

あらゆるモノがネットにつながるのがあたりまえのIoT社会はもう目前。
IchigoJamを使えば、子供でも簡単にロボットづくり、IoTづくりができちゃいます。

こちら即席IoT電光掲示板、スマホで表示する文字列をリアルタイムに切り替えしました。
sakura.ioのWAKE_OUT端子をIN1にさし、IF IN(1) ならI2CRで読み込んで、表示!(75行)

1 'WS2812b x sakura.io 5 OUT4,1 10 POKE#700,240,181,114,182,9,36,36,2,9,25,1,36,164,70,27,76,11,120,91,9,0,240,31,248,11,120,155,8,7,34,19,64,0,240,25,248,11,120,3,34,19,64,91,0,0,240,19,248,97,68,1,48,31,34,16,66,234,209,66,9 20 POKE#73C,8,42,8,208,31,49,1,35,93,66,172,70,26,66,225,209,2,49,156,70,222,231,98,182,240,189,128,37,155,0,255,34,34,96,3,39,9,38,43,66,1,208,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8 30 POKE#778,239,209,112,71,4,0,1,80 50 CLS:S=#825:L=7:P=0:C=RND(256) 60 A=ASC(S+P/8):FORI=0TO7:N=PEEK(A*8+I):POKE#900+31+I*32,N>>(7-P&7)&1*C:NEXT 70 U=USR(#700,0):SCROLL LEFT:P=P+1:P=P%(L*8):IF !P C=RND(256) 75 IF IN(1) LET[0],48,48:?I2CR(79,#800,3,#820,22):GOTO50 80 GOTO 60

5行でsakura.ioのWAKE_INを使って起動
10-30行はWS2812B 32x8用ドライバ(Armマシン語 = IchigoJamのコンピューターが分かる言葉)
50行でI2CRで読み込むアドレス#825、長さは今回はIchigoJamのキャラコードで6文字まで対応 60行でキャラクターのドットパターンを画面右端に大きく表示
70行でWS2812Bへ信号を送って、左にひとつスクロール。最後までいったら色を変更して最初から
75行、sakura.ioのWAKE_OUTを使ってデータ受信を検知した、データを読み込み、50行へ!


午後に並行開催された、さくらインターネットのエンジニアさんによる、micro:bitを使ったプログラミング&コンピューター体験も好評でした。


プログラミングと電子工作をこどもたちに伝え、起業家発掘を目指す、KidsVenture


次回をお楽しみに!

沖縄グルメ

森川特別支援学校の教頭先生が差し入れてくれたご当地あんまん「のまんじゅう」。「のし」の「の」!


名前も味もお気に入り、エバのからあげ。(大安丸 久茂地店


本場ゴーヤチャンプルー、うまい!(大安丸 久茂地店


煮魚おいしい!(大安丸 久茂地店


変わった貝、コマ貝。爪を引っ張るとでてきて食べやすい。(大安丸 久茂地店


ソーキそば!


沖縄混ぜご飯、ジューシー 160円。(那覇空港、1F入って左の一番奥、空港食堂

links
- KidsVenture
- 沖縄県立森川特別支援学校
- 創造的な人材の育成に向けて~求められる教育改革と企業の行動~
- プログラミング教育は 特別支援学校 に取り入れるのがおすすめ!KidsVenture in 沖縄でふれた超熱心な先生方と超ユニークなこども達! – about yrm
- こどもプログラミングサミット 2018.2.24 東京にて第3回開催!

IchigoJamからのステップアップ - IchigoJam BASIC / Python3 / JavaScript / Java / C言語 対照表

2018/02/09 23:55:00
#IchigoJam #KidsIT 

よく使われている言語だけでも10以上ある、プログラミング言語ですが、根っこはマシン語。 コンピューターのお作法が分かっていれば、それぞれの違いは方言程度の違いでしかありません。

もちろん、各言語で登場する単語がちょっとずつ違いますが、最初は辞書(リファレンス)に頼ったり、自動翻訳機(変換ソフト)に頼ったりすればOK。 多少時間はかかりますが、たくさんしゃべっている内にすらすらと作れるようになっていきます。

IchigoJam BASIC、Python3、JavaScript、Java、C言語のそれぞれ機能の対照表を作ってみました。 打つ文字数が圧倒的に少ないIchigoJam BASICで、基本(basic)を押さえてしまえば、他言語の習得はサクサク進みます。

1970〜80年代、BASIC言語と共に、世界中の一部の子供たちの間でパソコンが流行。多くのエンジニアや、起業家を生みました。 Windowsとゲーム専用機と共に失われたBASICによるプログラミングはじめのいっぽ文化を、IchigoJamと共に再び!
2018 Developer Skills Report by HackerRank

IchigoJam BASIC Python3 JavaScript Java C
はじめのいっぽ LED1 print("Hello World!") alert("Hello World!"); class A { public static void main(String[] args) { System.out.println("Hello World!"); } } #include "stdio.h" int main() { printf("Hello World\n"); return 0; }
キー押下数
(はじめのいっぽ)
5 22 23 95 72
表示 ?"ABC" print("ABC") console.log("ABC"); System.out.println("ABC"); printf("ABC\n");
変数代入 A=10 a = 10 var a = 10; int a = 10; int a = 10;
計算 S=A*10/B s = a * 10 / b var s = a * 10 / b; int s = a * 10 / b; int s = a * 10 / b;
条件分岐 IF A=10 ?"T" if a == 10: print("T") if (a == 10) console.log("T"); if (a == 10) System.out.println("T"); if (a == 10) printf("T\n");
繰り返し
(ループ)
10 FOR I=0 TO 9 20 ?I:NEXT for i in range(10): print(i) for (var i = 0; i < 10; i++) console.log(i); for (int i = 0; i < 10; i++) System.out.println(i); for (int i = 0; i < 10; i++) printf("%d\n", i);
論理式 A=1 AND B=2 (A=1 && B=2 でもOK) a == 1 and b == 2 a == 1 && b == 2 a == 1 && b == 2 a == 1 && b == 2
ビット演算 A>>4&7 (a >> 4) & 7 (a >> 4) & 7 (a >> 4) & 7 (a >> 4) & 7
16進数 #FFF 0xFFF 0xFFF 0xFFF 0xFFF
2進数 `11010001 0b1101001 0b1101001 0b1101001 0b1101001
サブルーチン
(関数)
(メソッド)
10 ?"SUB":RETURN GOSUB 10 (@SUBなどのラベル対応) def sub(): print("SUB") sub() var sub = function() { console.log("SUB"); }; sub(); // 何かclass内で static void sub() { System.out.println("SUB"); } // 何かメソッド内で sub(); void sub() { printf("SUB\n"); } // 何か関数内で sub();
コメント ' COMMENT REM COMMENT # COMMENT """ COMMENT複数行 """ // COMMENT /* COMMENT複数行 */ // COMMENT /* COMMENT複数行 */ /* COMMENT複数行 */
文字列処理
(左3文字)
(右3文字)
10 S="ABCDE" 20 ?STR$(S,3) 30 ?STR$(S+LEN(S)-3) s = "ABCDE" print(s[0:2]) print(s[-3:]) var s = "ABCDE"; console.log(s.substring(0, 3)); console.log(s.substring(s.length - 3)); String s = "ABCDE"; System.out.println(s.substring(0, 3)); System.out.println(s.substring(s.length() - 3)); const char s[] = "ABCDE"; for (int i = 0; i < 3; i++) putchar(s[i]); putchar('\n'); for (int i = strlen(s) - 3; i < strlen(s); i++) putchar(s[i]); putchar('\n');
配列 10 LET[0],5,3,1 20 N=0 30 FOR I=0 TO 2 40 N=N+[I]:NEXT 50 ?N a = [ 5, 3, 1 ] n = 0 for m in a: n += m print(n) var a = [ 5, 3, 1 ]; var n = 0; for (var m in a) { n += a[m]; } alert(n); int a[] = [ 5, 3, 1 ]; int n = 0; for (int m : a) { n += a[m]; } System.out.println(n); int a[] = { 5, 3, 1 }; int n = 0; for (int i = 0; i < 3; i++) { n += a[i]; } printf("%d\n", n);
特徴 シンプル、格安、省エネ
大規模開発に向かない
インデント大事
ライブラリ豊富
ブラウザだけで作れる
PCもスマホもOK!
なかなか高速
Androidアプリの標準言語
サーバー上でもよく使われる
基本的に最速
マシン語に近い
IchigoJam BASICの開発言語

画像版

どの言語から始めるか?パソコンを持っているなら、作りたいモノが作れる言語を選びましょう。
習得難易度の多少の差は、作りたいモチベーションとできた喜びで消し飛びます。

パソコンを持っていない、プログラミング言語の習得に挫折した人、ひとまず何でもいいからプログラミングをはじめてみたい人、IchigoJamからどうぞ!

links
- IchigoJam

IchigoJamで格安電光掲示板 - 日本語10x10 M+ BITMAP FONTSを8x8にコンバート

2018/02/08 23:55:00
#IchigoJam #opendata #maker 

フリーフォントを使ったコンバート、探しても8x8フルサイズのフリーフォントは見つからず。代わりに10x10のフリービットマップフォント M+ BITMAP FONTS を8x8に変換する形で実現。
機械的な変換なので、フォントの精度はいまいちながら、一応読めました。

M+ BITMAP FONTS のデータをJavaScriptで読めるように変換し、JISコードからフォントパターンを読み出して、IchigoJam BASICのプログラムに変換します。

makejpfont8x8 - IchigoJamで日本語漢字表示
* 8x8のフォントが微妙なのは機械変換だからです!みんなでつくる8x8フォントプロジェクトもいいかも

生成したプログラムは、PCGを使ってフォントパターンを書き込みます。
32x8 WS2812Bを使った電光掲示板にするプログラムはこちら!

'font 100 POKE#700,95,64,239,41,63,83,223,127,34,34,255,34,34,255,34,66,63,161,191,161,161,255,8,201,8,255,137,149,163,193,129,129,0,0,0,0,0,0,0,96,17,253,32,66,66,142,147,31,37,250,32,47,64,68,72,143,32,38 110 POKE#73A,233,49,33,98,162,35,130,64,31,130,66,15,34,223,8,255,18,255,33,63,4,223,39,253,36,255,85,251,35,255,0,0,0,0,0,0,0,96,127,8,255,171,127,1,127,127,16,17,249,37,37,37,68,92,11,124,5,254,4,58 120 POKE#776,70,124,66,66,159,130,130,142,147,95,32,63,64,191,0,127,69,255,8,127,16,25,38,74,18,31,0,28,226,1,1,1,6,56,66,66,159,130,130,130,130,92,0,31,228,8,16,16,16,14,8,8,8,8,8,0,0,8 130 L=22:LRUN1 SAVE1 'main 10 POKE#800,240,181,114,182,9,36,36,2,9,25,1,36,164,70,27,76,11,120,91,9,0,240,31,248,11,120,155,8,7,34,19,64,0,240,25,248,11,120,3,34,19,64,91,0,0,240,19,248,97,68,1,48,31,34,16,66,234,209,66,9 20 POKE#83C,8,42,8,208,31,49,1,35,93,66,172,70,26,66,225,209,2,49,156,70,222,231,98,182,240,189,128,37,155,0,255,34,34,96,3,39,9,38,43,66,1,208,9,39,3,38,1,63,253,209,0,34,34,96,1,62,253,209,109,8 30 POKE#878,239,209,112,71,4,0,1,80 40 CLS:L=22:P=0:C=RND(256) 50 A=224+P/9:FORI=0TO7:N=PEEK(A*8+I):POKE#900+31+I*32,N>>(7-P%9)&1*C:NEXT 60 U=USR(#800,0) 70 SCROLL LEFT:P=P+1:P=P%(L*9):IF !P C=RND(256) 80 GOTO 50 SAVE0 LRUN0

Lが文字の長さ(最大32文字)、8x8描画後1ライン空けるのがポイントです(/9、*9、%9)


IchigoJam web 上でも画面上だけで動かせます。


大雪のため、福井県内物流に混乱あり。残った雪が解けてなだれなどが起きやすいので注意!

数万円でできる格安IoT電光掲示板で、街中でリアルタイムな情報発信できる災害に強いまち!?

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