クソマゾLEDマトリックス バッヂで2019年の書き初めをしてみた

Electronics

あけましておめでとうございます。昨年はmicro:bitとmbedで書き初めをしましたが、今年の新春初プログラミングはMPLAB XC8とWSLのubuntuでのgccでした。

今年はGhz2000さんのクソマゾLEDマトリックス バッヂで新年のメッセージを表示させました。

フォントデータはmgo-tec電子工作さんの「エクセル で 16 x 16 ドットフォントを自作して、フルカラー 有機EL ( OLED ) 時計を作ってみた ( ESP32 使用 )」を使用して作成しました。
サンプルの数字フォントはこのLEDマトリクスに合っていると思ったので、そのまま使わせてもらいました。他の英字とイノシシの絵はこのEXCELシートを使って自分で作成しました。

どうせなら横スクロールをしたいなと思い、gccでビットシフトをしたデータを生成するプログラムでスクロールするデータを作成しました。

#include <stdio.h>

int main(){
 // Original data
 unsigned int a_data[17][16] = {
 {0xFC3F,0x781E,0x7C1E,0x7E1E,0x7F1E,0x7F9E,0x7FFE,0x7FFE,0x7FFE,0x79FE,0x78FE,0x787E,0x783E,0x781E,0x781E,0xFC3F} // N
 ,{0xFFFE,0x7FFC,0x7FFC,0x7C04,0x7800,0x7C00,0x7FF8,0x7FF8,0x7FF8,0x7C00,0x7800,0x7C04,0x7FFC,0x7FFC,0x7FFC,0xFFFE} // E
 ,{0xF81F,0x700E,0x700E,0x73CE,0x73CE,0x73CE,0x73CE,0x73CE,0x73CE,0x73CE,0x73CE,0x7BDE,0x7FFE,0x3FFC,0x1FF8,0x0FF0} // W
 ,{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000} //
 ,{0xFC7E,0x783C,0x783C,0x783C,0x783C,0x783C,0x7C7C,0x7EFC,0x3FF8,0x1FF0,0x0FE0,0x07C0,0x07C0,0x07C0,0x07C0,0x0FE0} // Y
 ,{0xFFFE,0x7FFC,0x7FFC,0x7C04,0x7800,0x7C00,0x7FF8,0x7FF8,0x7FF8,0x7C00,0x7800,0x7C04,0x7FFC,0x7FFC,0x7FFC,0xFFFE} // E
 ,{0x0380,0x0FE0,0x1FF0,0x1FF0,0x3C78,0x3C78,0x3838,0x783C,0x783C,0x783C,0x7FFC,0x7FFC,0xFFFE,0xFC7E,0xF83E,0xF83E} // A
 ,{0xFFFC,0x7FFE,0x781E,0x781E,0x781E,0x783E,0x7FFE,0x7FFC,0x7FF8,0x7FE0,0x7FF0,0x78F8,0x787C,0x783E,0x781F,0xFC3F} // R
 ,{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000} //
 ,{0x07C0,0x1FF0,0x3FF8,0x3FFC,0x787C,0x7C7C,0x7CF8,0x39E0,0x03C0,0x0780,0x0F80,0x1F00,0x3F18,0x7FFC,0x7FFC,0x3FF8} // 2
 ,{0x0380,0x0FE0,0x1FF0,0x1FF0,0x3C78,0x3C78,0x3838,0x783C,0x783C,0x783C,0x783C,0x7C7C,0x3FF8,0x3FF8,0x1FF0,0x0FE0} // 0
 ,{0x0180,0x03C0,0x07C0,0x0FC0,0x0FC0,0x0FC0,0x03C0,0x03C0,0x03C0,0x03C0,0x03C0,0x03C0,0x07E0,0x0FF0,0x0FF0,0x07E0} // 1
 ,{0x1FE0,0x3FF8,0x7FFC,0x783C,0x701C,0x701C,0x701C,0x783C,0x3FFC,0x1FF8,0x0038,0x0070,0x00F0,0x03E0,0x0FE0,0x1FC0} // 9
 ,{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000} //
 ,{0x0810,0x1428,0x17E8,0x2004,0x4422,0x4E72,0x4422,0x8001,0xCFF3,0xB00D,0x9669,0x566A,0x366C,0x1188,0x0E70,0x0000} // inoshishi
 ,{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000} //
 ,{0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000} // dummy data
 };

// Convert anime data
 for (int k = 0; k < 16; k++){
  for (int j = 0; j < 16; j=j+2){
   printf(",{");
    for (int m = 0; m < 16; m++){
     unsigned int i = (a_data[k][m] << 16) + a_data[k+1][m];
     i = i >> (16 - j);
     printf("0x%04x,",i & 0xffff);
    }
   printf("}\n");
  }
 }
}

あとは、LEDマトリクスのサンプルプログラムのデータ部分を差し替えてMPLAB XCでコンパイルしてeJackinoのライタで書き込み完了です。

では、本年もよろしくお願いします。

コメント

タイトルとURLをコピーしました