SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

Meganeスカウター

鯖江のご当地IchigoJamMeganeJam」を入手。有機EL(OLED)ディスプレイを付けて「Meganeスカウター」にしてみました。


OLEDがかなり前に出ていて不格好ですが、このくらい距離を離さないと左眼のピントが合わず文字が読めません(^_^;)


メガネ基板の拡大図。中央の基板は、ボタン電池CR2032を2個並列につないだ電源シールドです。
右眼上のユニバーサルパターンでフォトトランジスタ回路を組んで、IN2にアナログ入力しています。
赤外線領域にピークがあるフォトトランジスタを使ったので、熱く燃えている人に向ければハイレベルな数値が出るはず(笑)

このメガネを装着して、「レベル1か…フッ、ゴミめ」とつぶやけば、キミも怪しい人サイヤ人だ!(^_^)

プログラム

起動すると、フォトトランジスタからのアナログ入力値(Rawデータ?)が表示されるので、測定したい対象に向けてボタンを押します。入力値から計算したLv(レベル)、AP(攻撃力)、DP(守備力)、MP(魔法力)、HP(体力)が表示されます。
表示数値は、アナログ入力値を元に適当に乱数で計算しています。

10 '*Megane Scouter
20 VIDEO 0:CLS:GSB @OLEDINIT
30 IF BTN() CONT
40 @LOOP
50 Z=ANA(2)
60 CLS:?Z:GSB @OLEDOUT
70 IF !BTN() GOTO @LOOP
80 CLS
90 Z=Z-100:IF Z<10 Z=10
100 L=Z/10:?"Lv ";L
110 X=L+RND(L/2):A=X*X+RND(Z*3):?"AP ";A
120 X=L+RND(L/2):D=X*X+RND(Z*3):?"DP ";D
130 X=L+RND(L/2):M=X*X+RND(Z*3):?"MP ";M
140 X=L+RND(L/2):H=X*X+RND(Z*3):?"HP ";H
150 GSB @OLEDOUT
160 WAIT 60
170 IF !BTN() CONT
180 RUN
190 @OLEDINIT
200 poke#780,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF
210 forP=#788to#799:i=i2cw(60,#780,1,P,1)
220 next
230 poke #79a,#70,#b5,#40,#18,#07,#23,#1b,#02
240 poke #7a2,#c9,#18,#10,#24,#03,#78,#db,#00
250 poke #7aa,#d3,#18,#1d,#68,#0d,#60,#5d,#68
260 poke #7b2,#4d,#60,#20,#30,#08,#31,#01,#3c
270 poke #7ba,#f4,#d1,#70,#bd
280 @OLEDOUT
290 forP=0to7:i=usr(#79A,#907-P):i=i2cw(60,#781,1,#700,128):next:rtn