参考
結果
プログラム
//misaki_test_nibai1_XIAO_ESP32C6
//ヘッダーファイル
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <misakiUTF16.h>
//定義
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//初期化
void setup() {
//I2Cの初期化
Wire.begin(D9, D10); //XIAO ESP32C6+SSD1306
//Wire.begin(D10,D9); //XIAO ESP32C6+GROVE
// I2Cアドレスは使用するディスプレイに合わせて変更する
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
} //setup
//メインループ
void loop() {
// 画面表示をクリア
display.clearDisplay();
unsigned char font[8]; // フォント格納バッファ
unsigned char font2[16*2]; // フォント格納バッファ
int x = 0;
char *str = "あ、埼玉"; // 文字列
char *ptr = str;
while (*ptr) { // 文字列分ループ
ptr = getFontData(font, ptr); // 1文字分のフォント取得
if (!ptr)
break; // エラーの場合は終了
int j = 0;
for(int i=0;i<8;i++){
int s = 0;
int al = font[i];
s = s |(0b1000000000000000 & (al<<8));
s = s |(0b0010000000000000 & (al<<7));
s = s |(0b0000100000000000 & (al<<6));
s = s |(0b0000001000000000 & (al<<5));
s = s |(0b0000000010000000 & (al<<4));
s = s |(0b0000000000100000 & (al<<3));
s = s |(0b0000000000001000 & (al<<2));
s = s |(0b0000000000000010 & (al<<1));
s = s | (s>>1);
font2[j++] = s >> 8;
font2[j++] = s & 0xff;
font2[j++] = s >> 8;
font2[j++] = s & 0xff;
}//for
//ビットマップの表示
display.drawBitmap(x, 0, font2, 16, 16, WHITE);
x = x + 16;
} //while
// 描画バッファの内容を画面に表示
display.display();
delay(1000); //1秒待つ
} //loop