以前作った小型名札「NameDake」を、専用プリント基板を作ってリニューアルしました。
電源はCR2032を2個並列に並べました。
表面にIchigoDakeとOLED、裏面にCR2032電池を搭載して完成。
名札のプログラムを動作。(デジカメとOLEDでうまく同期が合わない…)
電源は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