SHIROのIchigoJam日記

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

DakeCap名札

IchigoDake用の電源モジュール「DakeCap」を入手しました。
hello002.stores.jp

以前作った「NameDake」と同様に、OLED(有機EL)をつないで名札を作ってみました。


OLEDは以前にaitendoで入手した物。秋月電子の物でも作れます。



DakeCapの上部のパッドからOLEDへ配線。GND、VCC(33)、SCL、SDAの4本をつなぎます。
固い単芯線を使うと、OLEDがしっかり支えられて良いです。



完成図。名札のプログラムを起動。



シャツのポケットに引っかけるとこんな感じ。



連打ゲームも遊べます(^_^)

以前のNameDakeは、電池がCR2032×2個で数時間保ったのですが、今度は単4×2本なのでかなり保つんじゃないでしょうか。

プログラム

基本的に、以前の「NameDake」と同じです。

ファイル0:初期設定

10 @ARUN:'*NameDake Initialize
20 VIDEO 0,1:GSB800
30 LRUN FILE()+1
800 'OLED INIT
810 poke#7D0,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#A1,#C8,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF
820 forP=#7D8to#7EB:ifi2cw(60,#7D0,1,P,1)?"E:Init";hex$(P)
830 next
840 poke #79a,#f0,#b5,#40,#18,#07,#23,#1b,#02,#c9,#18,#94,#46,#10,#24,#03,#78
850 poke #7aa,#db,#00,#d2,#18,#08,#27,#00,#23,#07,#25,#56,#5d,#fe,#40,#5b,#41
860 poke #7ba,#01,#3d,#fa,#d2,#0b,#70,#01,#31,#01,#3f,#f4,#d1,#01,#30,#62,#46
870 poke #7ca,#01,#3c,#ec,#d1,#f0,#bd
880 rtn

ファイル1:名前表示

10 '*NameDake Main
20 CLS:A=#900
30 LET [0],0,0,12,12,13,12,4,0,8,12,13,12,12,12,13,12
40 LET [16],0,0,0,9,8,1,0,0,0,0,1,0,0,0,1,0
50 LET [32],0,0,0,8,9,0,0,0,0,7,3,5,0,13,13,5
60 LET [48],12,12,3,1,0,3,9,12,4,13,12,5,0,12,13,4
70 GSB 200
80 LET [0],0,10,2,3,3,3,10,0,0,5,0,5,8,6,2,12
90 LET [16],0,10,3,3,7,3,11,0,0,7,3,5,2,4,5,6
100 LET [32],0,10,8,1,5,9,10,0,0,5,0,5,0,6,7,4
110 LET [48],0,1,0,0,1,0,2,0,2,0,0,1,2,0,1,2
120 GSB 200
130 GSB 900
140 VIDEO 0,30
150 IF !BTN() CONT
160 CLT
170 IF BTN() CONT
180 IF TICK()<2 GOTO 150
190 BEEP:VIDEO 1:LRUN FILE()+1
200 'Prt Half
210 FOR Y=0 TO 3
220 FOR X=0 TO 15
230 POKE A,[Y*16+X]+#80
240 A=A+1
250 NEXT
260 A=A+16
270 NEXT
280 RTN
900 'OLED OUT
910 forP=#7D2to#7D7:ifi2cw(60,#7D0,1,P,1)?"E:ADR";hex$(P)
915 next
920 forY=0to7:D=usr(#79A,#900+Y*32):ifi2cw(60,#7D1,1,#700,128)?"E"
930 next
940 rtn

ファイル2:連打ゲーム

IchigoDakeのボタンを連打して、64個のドットを全て消してください。タイムが表示されます。

1 '*Renda OLED
2 CLS:GSB80:FORY=0TO7:LC0,Y
3 FORX=0TO7:?CHR$(233);:NEXT
4 NEXT:GSB91:WAIT30
5 LC9,0:FORT=3TO1STEP-1:?T;:BEEP:GSB91:WAIT40:NEXT
6 LC9,1:?"START!":BEEP10,30:GSB91:CLT
7 FORY=0TO7:LC0,Y:FORX=0TO7
8 IF!BTN()CONT
9 IFBTN()CONT
10 ?".";:BEEP:GSB91
11 NEXT:NEXT:BEEP20,30:T=TICK()
12 LC9,2:?T/60;".";T%60/6:GSB91:WAIT60
13 IF!BTN()CONT
14 LRUNFILE()-1
80 'INIT
81 let[0],#4000,33,#227F,#700,#B5F0,#1840,#230B,#21B,#18C9,#4694,#2410
82 let[11],#7803,#DB,#18D2,#2708,#2300,#2507,#5D56,#40FE,#415B,#3D01
83 let[21],#D2FA,#700B,#3101,#3F01,#D1F4,#3001,#4662,#3C01,#D1EC,#BDF0
84 let[90],#D5AE,#8D80,#2014,#A100,#DAC8,#8112,#D9CF,#DBF1,#A440,#AFA6
85 ifi2cw(60,#800,1,#8B4,20)?"E"
86 video3:copy#A00,#800,62:clv
90 'OUT
91 for[98]=0to7:i=usr(#A08,#900+[98]*16)|i2cw(60,#A01,1,#B00,128):next:rtn