2016年12月3日土曜日

マトリックスLEDで遊ぶ

どうも,cake tetuです.
今回は気まぐれで買ってみたマトリックスLEDで遊んでみたメモです.
今回購入したのはこちら













秋月電子通商で購入した青色ドットマトリクスLED 8x8ドット MOA20UB018GJ
調子に乗って青色を買ってしまいました.
順方向電圧が3.5VあるのでLPC1114では動かないのでは?と思っていましたが
テストしたところあっさり動いたのでよしとしました.

・回路等
  回路図等は今回は省略,しかし注意すべき点はピンが少ないため
  オープンドレイン端子をつなぐことになるのですが,その際にLEDの
  カソード(今回はRow)に接続すること.これでピンをほぼすべて使い,何とか
  全LEDを制御できます.
  先述のようにマイコンはLPC1114FN28を使用,mbedで開発しました.
  
・テストで使用したプログラム
  今回使用したプログラムです.縦横にスクロールするように点灯します.

   #include "mbed.h"

    BusOut row(dp27,dp13,dp5,dp14,dp9,dp11,dp6,dp10);     //Row Cathode
    BusOut col(dp25,dp2,dp1,dp28,dp4,dp26,dp18,dp17);     //Col Anode
    int main() {
      int i;
      uint16_t j;
      row = 0;    //COL初期化
      col = 0;    //ROW初期化
      while(1) {
        //COL点灯8=>1
        j=128;
        for(i=0;i<8;i++){
          col = j;
          wait(0.1);
          j = j/2;
        }
        //COL点灯1=>8
        j=1;
        for(i=0;i<8;i++){
          col = j;
          wait(0.1);
          j = j*2;
        }
        //ROW点灯8=>1
        col = 255;
        j=128;
        for(i=0;i<8;i++){
          row = ~j;
          wait(0.1);
           j = j/2;
        }
        //ROW点灯1=>8
        j=1;
        for(i=0;i<8;i++){
          row = ~j;
          wait(0.1);
          j = j*2;
        }
        row=0;
      }
  }

  BusOutが非常に便利で,これにより適当にピンをつないでしまってもまとめて定義
  しなおすことができます.col,rowに8ビットで代入するだけで点灯させることが可能です.


  動作の様子
  


  見ているだけで楽しい(笑)


たかがLEDを点灯させるだけで簡単だろと思っていましたが,ピンの接続がややこしく,
予想外に時間がかかってしまいました.意外と奥が深いマトリックスLED.
気が向いたらシリアル通信で文字を送るプログラム等を製作したいです.
12月も忙しい予感がするのであんまりいろんなことできないかな

  
  

0 件のコメント:

コメントを投稿