SHIROのIchigoJam日記

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

Ichigoクロック

以前にIchigoJamを使った時計を作ったのですが、それを応用して、時計付き大観覧車「Ichigoクロック」を作ってみました。
横浜のみなとみらい地区にある「コスモクロック21」からヒントを得ています。
動画はこちら。

【IchigoJam】Ichigoクロック


台座にあるIchigoJam+モーター基板tempeXで、時計とモーターをコントロール

f:id:shiro0922:20190613201633j:plain
時計基板は以前に作ったIchigoJam時計と同じですが、接続端子からケーブルを伸ばして台座のIchigoJamへつないでいます。
観覧車内にあるもう1個のIchigoJamで、電飾を光らせています。IchigoJamは次期ファームウェア1.4が開発中ですが、そのβ版でLEDテープ「WS2812B」を簡単に制御できるようになりました。


観覧車の背面にタミヤ6速ギヤーボックスを置いて回転させています。1300:1の最大ギヤ比で組んでいます。回すと意外にうるさいです。
回転軸は、ホームセンターで買った6mm径の木の丸棒を軸にして、タミヤのプーリーを付けました。

f:id:shiro0922:20190529215616j:plain
木製の観覧車は組み立て式ですが、作るのに3時間以上かかりました。「対象年齢は15歳~」なので、小さい子どもが作るにはちょっと難しいかも知れません。夏休みの工作なら挑戦できるかも。
かく言う私も、所々失敗して部品を折ってしまったので、修復の木工用ボンドは必須です。
金属製の大観覧車だともっとカッコいいんですが、2万円以上します(^_^;)

プログラム

プログラム1:時計表示+モーターコントロール

基本的に以前の時計プログラムと同じですが、tempeXのモーターはOUT2で制御するので、時計の表示をOUT1,3,4ポートに変えています。

10 '*CLOCK RTC
20 CLV:VIDEO 0
30 OUT 2,1
40 GSB @TIMEREAD
50 [0]=`0111111
60 [1]=`0000110
70 [2]=`1011011
80 [3]=`1001111
90 [4]=`1100110
100 [5]=`1101101
110 [6]=`1111101
120 [7]=`0100111
130 [8]=`1111111
140 [9]=`1101111
150 @LOOP
160 GSB @PRT
170 CLT
180 @COLON
190 T=TICK()
200 OUT 6,T%60<30
210 J=M
220 GSB @TIMEREAD
230 IF J=M GOTO @COLON
240 GOTO @LOOP
250 @PRT
260 N=H/10:GSB @SENDN
270 N=H%10:GSB @SENDN
280 N=M/10:GSB @SENDN
290 N=M%10:GSB @SENDN
300 OUT 4,1:OUT 4,0
310 RTN
320 @SENDN
330 F=[N]
340 FOR I=0 TO 7
350 OUT 1,F&#80
360 OUT 3,1:OUT 3,0
370 F=F*2
380 NEXT
390 RTN
400 @TIMEREAD
410 POKE #700,0
420 IF I2CR(#68,#700,1,#701,7) ERR
430 X=PEEK(#703)
440 H=X>>4*10+X&15
450 X=PEEK(#702)
460 M=X>>4*10+X&15
470 RTN

プログラム2:電飾コントロール

観覧車内のIchigoJamファームウェアは1.4β版)で動かしています。LEDテープは5個×6方向=合計30個のLEDがあるのですが、「0~4」→「9~5」→「10~14」→「19~15」→「20~24」→「29~25」と互い違いに配線されているので、中心から放射状に光らせるために少し変なプログラムになっています。

1 '*IchigoClock Illumination
2 VIDEO 0
3 @LOOP
4 '
5 CLV
6 WS.LED 30
7 WAIT 30
8 '
9 '---RGB---
10 '
11 FOR C=0 TO 2
12 '
13 FOR T=0 TO 4 STEP 2
14 [T*15+C]=192
15 [T*15+27+C]=192
16 NEXT
17 WS.LED 30
18 WAIT 30
19 '
20 FOR I=1 TO 5
21 GSB @SHIFT
22 FOR T=0 TO 4 STEP 2
23 [T*15+C]=0
24 [T*15+27+C]=0
25 NEXT
26 WS.LED 30
27 WAIT 30
28 NEXT
29 '
30 NEXT
31 '
32 '---RND---
33 '
34 FOR L=0 TO 4
35 GSB @SETRND
36 NEXT
37 WS.LED 30
38 WAIT 30
39 '
40 FOR I=1 TO 15
41 GSB @SHIFT
42 L=0:GSB @SETRND
43 WS.LED 30
44 WAIT 30
45 NEXT
46 '
47 GOTO @LOOP
48 '
49 '---SUB---
50 '
51 @SHIFT
52 FOR T=0 TO 4 STEP 2
53 A=#81D+T*30
54 COPY A,A-6,-24
55 A=#81E+T*30
56 COPY A,A+6,24
57 NEXT
58 RTN
59 '
60 @SETRND
61 A=RND(192)
62 B=RND(192)
63 C=RND(192)
64 FOR T=0 TO 4 STEP 2
65 [T*15+L*3]=A
66 [T*15+27-L*3]=A
67 [T*15+L*3+1]=B
68 [T*15+27-L*3+1]=B
69 [T*15+L*3+2]=C
70 [T*15+27-L*3+2]=C
71 NEXT
72 RTN

ソーラーLEDライト

IchigoJamを使っていませんが、電子工作を1つご紹介。
4月にPCNの皆さんがネパールへ支援活動に行ったのですが、その際にソーラーLEDライト基板を作りました。

f:id:shiro0922:20190513131846j:plain

明るい昼間はソーラーパネルでバッテリへ充電。夜になるとLEDが点灯します。
電気が無い村でも照明に使えます(^_^)

f:id:shiro0922:20190523100324p:plain

f:id:shiro0922:20190523094626p:plain

ジュースの紙パックを切り抜いて、組み込んでみました。なかなかいい感じです(^_^)
ソーラーパネルを外向きにして、窓際に置くといいと思います。


基板データ

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

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

地底探検

こちらも「かわくだり魔改造グランプリ」応募作品。画面が上下スクロールする「地底探検ゲーム」です。
f:id:shiro0922:20190520084358p:plain

遊び方

  • 自分のキャラを上下左右のカーソルキーで動かして地下へ潜り、5つのコイン「$」を集めてください。
  • 敵(エイリアン)に捕まった場合や、制限時間の60秒が過ぎても地上へ戻れなかった場合は、ゲームオーバーです。

ここまで来るとかわくだりゲームとは全くの別物ですが、「IchigoJamでこんなことができるんだ」と参考になれば幸いです。

プログラム

1 '*Titei Tanken
2 CLV:VIDEO1:CLS:VIDEO3:X=0:Y=5:L=60
3 FORB=#A20TO#A2F:POKEB,1:NEXT
4 R=#A11+RND(15):POKER,36
5 FORE=1TO4:A=#A20+E*#60
6 FORB=0TO15:POKEA+B,1:NEXT
7 R=A+4+RND(9):FORB=1TO6:POKER-B*16,72:NEXT
8 R=A-14+RND(13):IFPEEK(R)CONTELSEPOKER,36
9 [E]=E%2*15:POKEA-16+[E],237
10 NEXT
11 GSB27:LC0,0:?S:LCX,Y:?CHR$(250):CLT
12 FORE=1TO4
13 D=BTN(31)*(SCR(X,Y+1)=72)-BTN(30)*(H=72)
14 U=X-BTN(28)*(X>0)+BTN(29)*(X<15):I=SCR(U,Y+1):IFD||((I!=1)&&(I!=72))U=X
15 X=U:IFDO=O+D
16 GSB27:IFH=36GSB29
17 IFH=237M=1:E=4:GOTO22
18 A=#A10+E*96:B=A+[E]:POKEB,[E+5]
19 [E]=[E]+1-(E%2)*2:[E]=[E]&15
20 B=A+[E]:[E+5]=PEEK(B):POKEB,237:GSB27
21 IF[E]=X&&O+Y=5+E*6M=1:E=4
22 WAIT2:NEXT:IFT<=0||MG=3
23 IFP=5&&O=0G=1
24 IF!GGOTO12
25 LC3,4:?"GAME ";:IFG=1?"CLEAR"ELSE?"OVER":LCX,Y:?"X"
26 BEEPG*10,30:WAIT30:CLK:END
27 W=#9C0+O*16:COPY#900,W,192:H=SCR(X,Y):LCX,Y:?CHR$(250)
28 LC0,0:?"$";P:T=L-TICK()/60:LC14,0:?DEC$(T,2):RTN
29 P=P+1:BEEP:POKE#A10+O*16+X,0:RTN

Web版はこちら。
Web版は画面表示が遅いので、WAITを減らしています。

プログラムでは、画面をVIDEO 3モード(16文字×12行)に設定。使われていないVRAMを仮想画面にして、背景・敵・コインなどをそちらに描画。自キャラの動きに合わせて実画面へCOPYで転送しています。
他のゲームでも使えるテクニックだと思います。
f:id:shiro0922:20190520084610p:plain