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

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

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

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

ny2019_inoshishi.png

どうせなら横スクロールをしたいなと思い、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のライタで書き込み完了です。

ny2019_led16p.jpg

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

コメントする