SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

ウイルスシミュレータ

ナチュラルスタイル(IchigoJamの製造・販売元)の松田さんが作ったシミュレーションプログラム
https://yrm006.github.io/sars2.html
がとても興味深かったので、私もIchigoJamで作ってみました。
IchigoJamボードやweb版ではかなり遅いので、アプリ版やRaspberry Pi版で動かすことをお勧めします。

動かし方

  • 最初に、人間の人数、初期感染者数、感染確率、移動確率を入力します。

f:id:shiro0922:20200327150350p:plain

  • スペースキーを押すと、シミュレーションを開始します。スペースキーを押すごとに1日ずつ進みます。

f:id:shiro0922:20200327150456p:plain

f:id:shiro0922:20200327150519p:plain

  • 人=未感染者
  • ネコ=感染者(発症していない)
  • 宝箱=発症して入院中
  • イチゴ=快復して免疫を獲得した人
  • 十字架=死亡者

未感染者は設定した確率で移動し、感染者に出会うと設定した確率で感染します。
入院中の人は移動せず、感染も広げません。(院内感染は考えない)
快復時期になると、一定の確率(デフォルトは80%、1行目の変数F)で免疫を獲得して退院し、以降は感染しません。また、一定の確率(デフォルトは3%、1行目の変数G)で死亡者が出ます。
なお、感染してから発症するまでは14日、入院期間は10日で固定です。

設定パラメータをいろいろ変えて試してみると興味深いです。だいたい50日くらいで免疫獲得者ばかりになって収束しますが、それまでの感染者・入院者の数がだいぶ変わります。
テレビなどで「感染者○人」という数字だけ見ているとよくわからないのですが、こうしたシミュレータを動かしてみると、子ども達でもイメージがつかみやすいかもしれません。

プログラム

1 CLV:CLS:F=80:G=3
2 INPUT "ニンズウ(1-100)   N=",N
3 INPUT "カンセンシャスウ(1-N)  E=",E
4 INPUT "カンセンカクリツ(0-100)A=",A
5 INPUT "イドウカクリツ(0-100)M=",M
6 ?:?"PUSH SPACE"
7 IF !BTN(32) CONT
8 WAIT 30
9 CLS
10 LC 10,23:?"N=";N;" E=";E;" A=";A;" M=";M;
11 FOR I=1 TO N
12 X=RND(31):Y=RND(23)
13 Z=0:IF I<=E Z=1
14 GSB 43
15 [I]=X+Y*32+Z*1024
16 NEXT
17 CLK:D=D+1:LC 0,23:?"DAY=";D;
18 FOR I=1 TO N
19 X=[I]&31:Y=[I]/32&31:Z=[I]/1024
20 IF Z>0 && Z<25 GSB 26
21 IF RND(100)<=M GSB 30
22 [I]=X+Y*32+Z*1024
23 NEXT
24 IF INKEY()!=32 CONT
25 GOTO 17
26 Z=Z+1:IF Z<25 RTN
27 R=RND(100):IF R>F Z=0
28 IF R>99-G Z=26
29 RTN
30 IF Z>=15 && Z<=24 || Z=26 GSB 43:RTN
31 U=X+RND(3)-1
32 V=Y+RND(3)-1
33 IF U<0 U=30
34 IF U>30 U=0
35 IF V<0 V=22
36 IF V>22 V=0
37 H=SCR(U,V)
38 IF H=236 && Z=0 && RND(100)<A Z=1
39 LC X,Y:?CHR$(0)
40 X=U:Y=V
41 GSB 43
42 RTN
43 LC X,Y
44 IF Z=0 C=249
45 IF Z>=1 && Z<=14 C=236
46 IF Z>=15 && Z<=24 C=246
47 IF Z=25 C=255
48 IF Z=26 C=43
49 ?CHR$(C)
50 RTN

ジャンプゲームを作ろう(動画教材)

IchigoJam入門動画教材その3。「ジャンプゲームを作ろう」です。
IchigoJam webでも作れるので、家のパソコンでやってみてください。


ジャンプゲームを作ろう(日本語キーボード用)


ジャンプゲームを作ろう(英語キーボード用)

遊び方

プログラムを実行したら、スペースキーを押して自分のキャラ「@」をジャンプさせて、地面の穴を飛び越えてください。
穴に落ちてしまうとゲームオーバーです。画面左上にスコアが表示されます(一歩進むごとに1ポイント)。

プログラム

10 CLS:CLV:X=15:Y=21
20 LC 0,22
30 FOR I=0 TO 31:?CHR$(1);:NEXT
40 @LOOP
50 IF BTN(32) && J=0 J=1:V=-3
60 LC X,Y:?" "
70 Y=Y+V:V=V+J
80 LC 31,22:?CHR$(RND(10)>0);
90 SCROLL 3
100 LC X,Y:?"@"
110 S=S+1:LC 0,0:?S
120 IF Y=21 V=0:J=0
130 WAIT 3
140 IF J || SCR(X,22) GOTO @LOOP
150 BEEP 30,30

テキスト

十勇士パソコンクラブのサイトに、プログラミングテキスト(PPTX/PDF)があります。
www.white.umic.jp

DakeVK

学校の授業などでIchigoDyhookを先生が使う場合、電子黒板などに画面を投影したいことがあると思います。
ナチュラルスタイルの松田さんが、そのためのアダプタを工作しています。
IchigoDyhookに立ち乗りで先生できる!Video信号切り替え基板完成!yrm006.wordpress.com

私も同様の基板を作ってみました。
f:id:shiro0922:20200313202411j:plain
IchigoDyhookとIchigoDakeの間に挿します。

f:id:shiro0922:20200313202452j:plain
スイッチを切り替えて、外部ディスプレーに出力した所。


基板はこちら。
ビデオ出力以外にも、キーボード出力や、サウンド出力(共立電子のエイリアンスピーカー用)があります。
ただ、実際にエイリアンスピーカーでサウンドを鳴らしてみると、電力不足でIchigoDakeがリセットしてしまいます。
(ボリュームを下げると大丈夫ですが、ボリュームを上げると落ちます)
外付けキーボードもかなり不安定で、IchigoDyhook内蔵のキーボードと両用できたり、キーボードがリセットしてしまったりします。
IchigoDyhookのmicro USB端子に電源を給電しても状況は変わらないので、IchigoDyhookの3.3V出力が弱いようです。
分解してメイン基板を確認してみました。
f:id:shiro0922:20200313203130j:plain
分解手順は、IchigoDyhook裏面で、上側のゴム足内部の2本を含めて合計8本のネジを外します。(下側のゴム足内部にはネジはありません) ケース下半分はプラスチックの爪ではまっているので、マイナスドライバーなどでこじ開けて外します。

基板上はレギュレーターも含めて全てチップ部品なので、いじくるのは難しそうです。
基板の下部にシリアル用のパッドと、I2C用のパッド(IchigoJamのCN5と同じ)があるので、ピンソケットを付けて、5V端子から引き回した方が良さそうです。

ちなみに、DakeJacketに挿した場合は、サウンド出力、キーボード2本挿しとも問題ありません。
f:id:shiro0922:20200313204142j:plain
やはりIchigoDyhookの3.3V出力の不足でしょう。

基板データ

f:id:shiro0922:20200313203624p:plain

*この基板ガーバーデータは、CC BYライセンスとします。どうぞご利用ください。

(C) 2020 Shiro Saito (https://www.ichigojaman.jp)

材料

DakeVKその後(3/14追記)

IchigoDyhookのメイン基板に長足ピンソケットをはんだ付けして、CN5ソケットを増設。
f:id:shiro0922:20200314173957j:plain

ケースはヤスリで削って穴開け。ちょっと大変でした。
f:id:shiro0922:20200314174031j:plain

DakeVKもDC-DCコンバータをやめて、CN5から5Vを引き回して供給するようにしました。
f:id:shiro0922:20200314174133j:plain
これでエイリアンスピーカーも鳴らせるようになりました(^_^)
キーボード2本差しはさすがに動作が不安定ですが、そもそもDakeVKのキーボード端子はバーコードRadishを想定していて、キーボード2本差しはまずやらないので問題無しです。

CN5ソケットはIchigoJamと同等なので、aitendoのEEPROMスティックなども使えます。
f:id:shiro0922:20200314174106j:plain
いろいろ拡張できて便利なので、IchigoDyhookの標準装備にしたらどうでしょうか。