SHIROのIchigoJam日記

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

NameDake PCB

以前作った小型名札「NameDake」を、専用プリント基板を作ってリニューアルしました。

電源はCR2032を2個並列に並べました。

Fusion PCBで基板を製作。

基板の表面・裏面にパーツをはんだ付け。

表面にIchigoDakeとOLED、裏面にCR2032電池を搭載して完成。

名札のプログラムを動作。(デジカメとOLEDでうまく同期が合わない…)

Yシャツのポケットに入れるとこんな感じ。

連打ゲームも遊べるようにしました。

電源はCR2032×2個並列ですが、少なくとも8時間くらいは平気で保ちます。
1日のイベントで着用するなら十分でしょう。

基板データ

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

(C) 2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)

このファイルをそのままFusion PCBで登録すれば、基板を発注できます。
基板寸法は82×37mmです。

部品表

プログラムリスト

●スロット0:OLED初期化

国野亘さんの表示プログラム(高速・横表示)を使っています。

10 '*NameDake Initialize
20 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:名前表示

30〜110行の名前データは、ドット点灯=1、消灯=0で、1行目から横32ドット×縦16ドット分並んでいます。書き換えれば名前が変えられます。

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のボタンを1秒長押しすると、ゲーム画面になります。
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 RUN
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