Raspberry Piにはたくさんの周辺機器が出ていますが、HDMI液晶の拡張ボードがいくつかあります。
それらの中で、以下の品を入手しました。
接続してIchigoJam RPiを動かした所、すぐに画面が表示できました。
※細かい点を追記します。
- 接続はGPIOコネクタを差し込むのと、付属のHDMI-HDMIの「コ」の字形のコネクタをHDMI端子に差します。
- Raspbianで使うには付属のCDからイメージ作成などが必要のようです。IchigoJam RPiでは接続しただけで画面が映りました。
- 拡張ボードに付いているmicroUSB端子にケーブルを差して電源供給します。Raspberry Piにも同時に電源供給されるので、電源ケーブルは1本で良いです。
- 液晶の裏側にプッシュスイッチが付いていて、バックライトの輝度が調整できます。デフォルトは10段階の「8」ですが、私は「10」の最大輝度にしています。
このモニタボードは、GPIOピンが横に引き出されていてそのまま使えます。
そこで、GPIOに接続する一体型モバイルユニットを作りました。
ユニバーサル基板に上下左右+アクションボタン、ブザーを配置。
IoTモバイルバッテリ「Cheero Canvas」と、Raspberry Piを支えるアクリル板を下に重ねています。
基板の回路図はこちら。右側のコネクタはUSBシリアル接続用です。
※2018/2/2 ファームウェア1.2b18に合わせてブザーの配線を変更
Raspberry Piに接続するとこんな感じです。
システムとしては、スロット0にセレクタプログラムを入れて自動起動します。
01〜99の数字を上下左右のボタンで変更、アクションボタンを押すと指定した番号のプログラム(スロット1〜99)を実行します。
細かいことですが、バッテリに給電ボタンが付いているので、それでシステム電源のON/OFFができます。Raspberry Piに電源スイッチが無いので、これはなかなか便利です。
先日作った横シューティングゲームを起動した所。もちろんボタンで操作できるように改造しました。
セレクタプログラムはこちら。
※2018/2/2 ファームウェア1.2b18に合わせてBEEPの処理を変更
1 '*RPi Selecter 2 CLV:CLS:N=1 3 BEEP:GSB15 4 IF!IN(9)CONT 5 '@NLOOP 6 H=!IN(2)-!IN(1) 7 V=!IN(4)-!IN(3) 8 N=N+H+V*10 9 IFN<1N=N+99 10 IFN>99N=N-99 11 GSB15 12 WAIT10 13 IFIN(9)GOTO5 14 BEEP:LRUNN 15 '@PRTN 16 M=N/10:X=8:Y=8:GSB19 17 M=N%10:X=16:GSB19 18 RTN 19 '@PRTN1 20 C=#180+M*8 21 FORB=0TO7 22 D=PEEK(C+B):LCX,Y+B 23 FORP=0TO7 24 ?CHR$((DP)=#80);:D=D<<1 25 NEXT 26 NEXT:RTN
ボタン操作に改造した横シューティングゲームはこちら。
※2018/2/2 ファームウェア1.2b18に合わせてBEEPの処理を変更
1 'H Shooting 2 CLV:CLS:?"SCORE 0":Y=12 3 FORE=20TO36STEP4:GSB9:FORB=0TO12STEP3:IF[B]GSB13 4 NEXT:B=(E-20)/4*3:IF![B]&&(!IN(9))GSB12 5 IF[E]GSB16 ELSEIF!RND(30)GSB15 6 WAIT2:NEXT:IF!MGOTO3 7 LCX,Y:?"*";:LC12,12:?"GAME OVER":W=30:BEEP30,30 8 IFIN(9)CONTELSERUN 9 U=X-!IN(1)*(X>0)+!IN(2)*(X<30):V=Y-!IN(3)*(Y>1)+!IN(4)*(Y<22) 10 LCX,Y:?CHR$(0);:X=U:Y=V:IFSCR(X,Y)=237M=1:RTN 11 LCX,Y:?CHR$(243);:RTN 12 [B]=1:[B+1]=X+1:[B+2]=Y:LC[B+1],[B+2]:?"-";:RTN 13 C=[B+1]:D=[B+2]:LCC,D:?CHR$(0);:C=C+1:[B+1]=C:IFC>30[B]=0:RTN 14 LCC,D:?"-";:GSB20:RTN 15 [E]=1:[E+1]=30:[E+2]=RND(22)+1:[E+3]=RND(2)*2-1:LC[E+1],[E+2]:?CHR$(237);:RTN 16 F=[E+1]:G=[E+2]:LCF,G:?CHR$(0);:F=F-1:IFF<0[E]=0:RTN 17 G=G+[E+3]:IFG<1ORG>22[E+3]=-[E+3]:CONT 18 [E+1]=F:[E+2]=G:IFX=F&&Y=GM=1:RTN 19 LCF,G:?CHR$(237);:GSB20:RTN 20 K=0:FORI=20TO36STEP4:FORJ=0TO12STEP3:IF[I]&&[J]&&[I+1]=[J+1]&&[I+2]=[J+2]K=I:L=J 21 NEXT:NEXT:IF!KRTN 22 [K]=0:[L]=0:LC[K+1],[K+2]:?"*";:S=S+1:LC6,0:?S:W=3:BEEP:LC[K+1],[K+2]:?CHR$(0);:RTN