32x32LEDパネルにRaspberry Pi Pico のデュアルコアでドット絵を作っています。
デュアルコアはダイナミック表示のLEDパネル(HUB75規格)を動かすには便利です(^^)。

小さなLEDパネルですが,少し体裁を整えてみました。





オヤジらしく,風神などを作ってみたのですが,離れるとそれらしくは見えるでしょうか(^^;;;;;;。





今回は自作してみた8x8のフォントのチェックも兼ねてドット絵を動かしてみました。





フォントは表計算で作ってもよかったのですが,,さすがにアルファベットまで作るのは面倒なので手抜き策を試しました(^^;;;;。

まずは表計算の正方形のセルにASCII の英数記号を適当なフォントで6x16個配置します。



この表をグラフィックソフトの”ペイント”にコピペし,48x128ドット(ピクセル)にして,整えます。




後はSDカードに画像として保存し,マイコン側で読みとって8x8ドットに分解すれば良い,という算段でした。

しかし,ペイントにペーストした時点で予想以上にフォントのカスレやボケが激しくて,,ほぼ全部書いたような疲れが残りました(^^;;;;;;;。

読み取りや分解は結構スムースにいきましたのでまぁ良しとしますが,もう一段階変換して1フォント8byteのデータにする余力が出てきませんので,今は8x8ドットの画像データのままで使っています。

8x8bitのフォント画像データの配列に分解しているプログラム部分のメモです。

// Font: copy sd_data to d-org8(0 - > 95 )

void sd_to_org8_f(){
for (byte orgn=0; orgn < 96; orgn++){ // Ascii: 0x20 - > 0x7F
byte sy=(orgn/16)*8; // Font table: 6x16
byte sx=(orgn%16)*8;
for (byte i=0; i < 8; i++){ // 1Font: 8x8bit
for (byte j=0; j < 8; j++){
byte c=0; // reverse font color
for (byte k=0; k < 3 ;k++){
c += d_sd[i+sy][j+sx][k];
}
if(c == 0){ // Dot: R+G+B=0 - > white
c=0xFF;
} else{
c=0x00; // Dot: R+G+B>0 - > black
}
for (byte k=0; k < 3 ;k++){ // set front_color white
d_org8[orgn][i][j][k]=c; // back_color black
}
}
}
}
}



RAMの小さなMPU用にはバイトデータに変換するとともに,必要な文字だけをピックアップして使えるようにしておかないといけませんね。


そういえばRaspberry Pi Pico Wを使っているので,Bluetoothを使っての画面変換も試してみたいですね(^^)。