秋月 PIC-BASICで8x8ドットLEDマトリックス

『公式PIC‐BASIC活用ブック』(電波新聞社)の90ページ、第4-4節の「携帯ゲームを作る」に
載っていた回路を作ってみた。今回は8x8ドットマトリックスLED部分のみ作成し、スイッチ部分は作成していない。
動作確認をしたところ、左1列分だけ点灯しなかった。

画像


動作環境

  • Windows XP
  • AKI-PIC BASIC 開発キット
  • USB to シリアルケーブル ELECOM UC-SGT
  • 秋月のUSB-シリアル変換器に付属していたシリアル延長ケーブル
  • 8x8=64ドットマトリックスLED表示器 単色(赤)タイプ BU5004-R(秋月で購入)
  • 抵抗 220Ω 8本(本では200Ωだが、手持ちがなかったため)
  • 丸ピンICソケット 16ピン分(ドットマトリックスLED用)
  • ジャンパーピン 1個(RUN/PGM切り替え用)
  • 14x2 のピンソケット
  • 14x1 のピンソケット
  • Dサブ コネクタ 9P メス
  • 基板
  • ジュンフロン線
  • ミノムシクリップ
  • 10V 850mA ACアダプター(ファミコン・スーパーファミコン用、センタープラスをセンターマイナスにして使用)


ボードの作成


基本的に本の通り作成した。今回はスイッチ部分は作成していない。

本に載っていた回路と違うところ
  • 8x8=64ドットマトリックスLED表示器は基板に直接付けず、丸ピンICソケットを使用(8x8=64ドットマトリックスLED表示器の販売が終わってしまう可能性を考えて)
  • Dサブ コネクタ 9P メスを追加(パソコンと接続した状態でデバッグするため)
  • RUN/PGM切り替え用ジャンパーピンを追加(パソコンと接続した状態でデバッグするため)

8x8=64ドットマトリックスLED表示器や PIC-BASIC モジュールをつけていない状態
画像

(RUN/PGM切り替え用のジャンパーピンは最初忘れていたので付いていない)

8x8=64ドットマトリックスLED表示器や PIC-BASIC モジュールをつけた状態
画像


動作確認 その1


1ドットずつ点灯するプログラムを作ってみた。

左1列分だけ点灯しなかった。

Dim x, y As Byte

' 出力にする
tris_rd = 0 ' row
tris_re = 0 ' col 1-3
tris_ra = 0 ' col 4-8

While 1
For x=0 To 7
For y=0 To 7
' col
If x < 3 Then
ra = 0
Else
If x = 7 Then
ra = 1 << (x-2)
Else
ra = 1 << (x-3)
Endif
Endif

re = 1 << x


' row
rd = (1 << y) ^ &HFF

' 0.5秒待つ
Sleep 500
Next
Next
Wend


画像


動作確認 その2


全 LED が点滅するコードを書いてみた。

左1列分だけ点灯しなかった。

Dim x, y As Byte

' 出力にする
tris_rd = 0 ' row
tris_re = 0 ' col 1-3
tris_ra = 0 ' col 4-8

' row
rd = 0

While 1
''' 全点灯 '''
' col
ra = &HFF
re = &HFF

' 0.5秒待つ
Sleep 500

''' 消灯 '''
ra = &H00
re = &H00

' 0.5秒待つ
Sleep 500
Wend


画像


問題点


左1列分だけ点灯しなかった。

以下のような可能性を考えてみた
  • LEDマトリックスにちゃんと接続できていない?
  • PIC-BASICボードからちゃんと出力されていない?
  • プログラムが間違っている?
  • LEDマトリックスが壊れている?


確認したこと
  • プログラムを変更し試行錯誤 → 変化なし
  • LEDマトリックスとPIC-BASICボードの接続を確認 → 導通
  • LEDマトリックスを外して実行 → PIC-BASICボードから出力なし
  • PIC-BASIC モジュールを外して PIC-BASIC モジュールのピンに電圧を与える → LED 点灯


「秋月 PIC-BASIC、A/D変換を使い簡易電圧計」でもRE0ポート(CN-A 1番ピン)を使用するとおかしな挙動を示したので、このピンに問題がある可能性が高い。

RE0ポート(CN-A 1番ピン)を使用しないように別のピンに接続を変更するつもり。

まとめ

  • 『公式PIC‐BASIC活用ブック』(電波新聞社)の90ページ、第4-4節の「携帯ゲームを作る」に載っていた回路を作ってみた。今回は8x8ドットマトリックスLED部分のみ作成。動作確認をしたところ、左1列分だけ点灯しなかった。
  • 出力が出ていないようなので、RE0ポート(CN-A 1番ピン)を使用しないように別のピンに接続を変えよう
  • PIC-BASIC モジュールに載っている3端子レギュレーターが結構熱くなっていた気がする。大丈夫なのだろうか?(全 LED を点滅させたときだけ?1個の LED が 10mA 消費するとすると、全部で 500mA以上流れる可能性があるから、ちょっとまずいのかも)
  • スイッチ部分も接続し、本の携帯ゲームも動かしてみよう

この記事へのコメント

LM5505E
2012年06月03日 11:19
勘違いかも知れませんが、、、

tris_re = 0 ' col 1-3
tris_ra = 0 ' col 4-8
--------------------------------
tris_re = 0 ' col 0-2
tris_ra = 0 ' col 3-7

これでプログラムを直してみては?

この記事へのトラックバック