IchigoJam BASIC(2) ― 2019年05月18日 21:48
IchigoJamを使った実験ボードを作ってみました。
実験と言いつつ、デジタル時計を意識して小さくした為、基板は2枚に。肝心のIchigoJamは裏にあります。
ドットマトリクスLED(ドライバーはHT16K33)にRTC(時計IC)、更にEEPROMも搭載。
この3つはI2Cで接続しています。信号線2本で繋がります。
あとスイッチ2個に、IRセンサーにcdsセル。裏にUSBモジュール。
cdsセルは昔から有るセンサーで、明るさで抵抗値が変わるという物。余っていたので付けてみました。
とりあえずドットLEDに「1234」と表示してみました。
プログラムは以下です。
10 CLV
20 POKE #700,#21,#81,#E2,0
30 R=I2CW(#70,#700,1)
40 R=I2CW(#70,#701,1)
50 R=I2CW(#70,#702,1)
60 POKE #710,0,0,#75,#17,#15,#11,#15,#11,#77,#17,#11,#14,#11,#14,#71,#17
70 R=I2CW(#70,#703,1,#710,16)
20~50行はドライバHT16K33の初期設定。
60行は「1234」の数字フォント(3x7ドット)をメモリに格納し、
70行でデバイスに送って表示しています。
I2Cデバイスへ簡単な命令で送れるので、とても便利です。
もう少しアレンジして、数字ルーレットの様にしてみます。
200 LET[20],0,7,5,5,5,5,5,7,0,2,2,2,2,2,2,2,0,7,1,1,7,4,4,7,0,7,1,1,7,1,1,7,0,5,5,5,7,1,1,1
210 LET[60],0,7,4,4,7,1,1,7,0,7,4,4,7,5,5,7,0,7,5,5,1,1,1,1,0,7,5,5,7,5,5,7,0,7,5,5,7,1,1,7
220 A=RND(9):B=RND(9)
230 FOR E=0 TO 7
240 F=E+20
250 [E]=[A*8+F]+[B*8+F]*16
260 NEXT
270 R=I2CW(#70,#703,1,#800,16)
280 WAIT 5
290 IF BTN() END
300 GOTO 220
200行はフォント(0~4)、
210行はフォント(5~9)を配列変数に格納。
220行で2つの乱数を取得し、
230~260行でその数に対応した数字フォントを配列変数[0]~[7]に格納。
*この配列変数が独特で、[0]~[7]がメモリアドレス#800番地から16バイトに対応しています。
270行でメモリ#800番地から16バイトをデバイスに送って表示。
これをボタンが押されるまで繰り返します。
とりあえず、動作は確認出来ました。
後はプログラミングで、目標はデジタル時計です。
先は長いです。。
*IchigoJamに関しては公式HPを。
https://ichigojam.net/
実験と言いつつ、デジタル時計を意識して小さくした為、基板は2枚に。肝心のIchigoJamは裏にあります。
ドットマトリクスLED(ドライバーはHT16K33)にRTC(時計IC)、更にEEPROMも搭載。
この3つはI2Cで接続しています。信号線2本で繋がります。
あとスイッチ2個に、IRセンサーにcdsセル。裏にUSBモジュール。
cdsセルは昔から有るセンサーで、明るさで抵抗値が変わるという物。余っていたので付けてみました。
とりあえずドットLEDに「1234」と表示してみました。
プログラムは以下です。
10 CLV
20 POKE #700,#21,#81,#E2,0
30 R=I2CW(#70,#700,1)
40 R=I2CW(#70,#701,1)
50 R=I2CW(#70,#702,1)
60 POKE #710,0,0,#75,#17,#15,#11,#15,#11,#77,#17,#11,#14,#11,#14,#71,#17
70 R=I2CW(#70,#703,1,#710,16)
20~50行はドライバHT16K33の初期設定。
60行は「1234」の数字フォント(3x7ドット)をメモリに格納し、
70行でデバイスに送って表示しています。
I2Cデバイスへ簡単な命令で送れるので、とても便利です。
もう少しアレンジして、数字ルーレットの様にしてみます。
200 LET[20],0,7,5,5,5,5,5,7,0,2,2,2,2,2,2,2,0,7,1,1,7,4,4,7,0,7,1,1,7,1,1,7,0,5,5,5,7,1,1,1
210 LET[60],0,7,4,4,7,1,1,7,0,7,4,4,7,5,5,7,0,7,5,5,1,1,1,1,0,7,5,5,7,5,5,7,0,7,5,5,7,1,1,7
220 A=RND(9):B=RND(9)
230 FOR E=0 TO 7
240 F=E+20
250 [E]=[A*8+F]+[B*8+F]*16
260 NEXT
270 R=I2CW(#70,#703,1,#800,16)
280 WAIT 5
290 IF BTN() END
300 GOTO 220
200行はフォント(0~4)、
210行はフォント(5~9)を配列変数に格納。
220行で2つの乱数を取得し、
230~260行でその数に対応した数字フォントを配列変数[0]~[7]に格納。
*この配列変数が独特で、[0]~[7]がメモリアドレス#800番地から16バイトに対応しています。
270行でメモリ#800番地から16バイトをデバイスに送って表示。
これをボタンが押されるまで繰り返します。
とりあえず、動作は確認出来ました。
後はプログラミングで、目標はデジタル時計です。
先は長いです。。
*IchigoJamに関しては公式HPを。
https://ichigojam.net/
最近のコメント