M5UnifiedでLCDに「℃」を表示する方法

M5Unified を使って M5StickC のLCDに温度を表示しようと思った際に、単位の ℃ を描画する方法の備忘録です。

fonts::Font4 など、widtbl_f16 を使っているフォントでは、 ` (GRAVE・バッククォート)を °(DEGREE・度)に置き換える define マクロが有効になっています。
M5GFX/src/lgfx/Fonts/Font16.h at master · m5stack/M5GFX · GitHub

これを使って、

M5.Lcd.setFont(&fonts::Font4);
M5.Lcd.print("`C");

のように表示すれば、「℃」を描画できます。

下記はENV Hatから取得した温度・湿度・気圧を30秒ごとにLCDに表示しています。(なるべくセンサが温まらないよう、3秒表示してスリープに入っています。)
なお古い M5StickC ENV Hat を使っているので、温湿度センサはDHT12です。

#include <M5Unified.h>
#include <DHT12.h>
#include <Adafruit_BMP280.h>

DHT12 dht12;
Adafruit_BMP280 bme;

void setup() {
  Serial.begin(115200);
  Serial.println("Start ENV HAT");
  // センサの準備ができるまで待機
  M5.Power.lightSleep(2000000LL);

  Wire.begin(0, 26);
  bme.begin(0x76);

  float temp = dht12.readTemperature();
  float hum = dht12.readHumidity();
  float prsr = bme.readPressure() / 100;

  Serial.println(String("temp: ") + temp + " hum: " + hum + " prsr: " + prsr);

  M5.begin();
  M5.Lcd.setBrightness(80);
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);

  M5.Lcd.setCursor(10, 10, &fonts::Font8);
  M5.Lcd.printf("%.1f", temp);
  M5.Lcd.setFont(&fonts::Font4);
  M5.Lcd.print("`C");

  M5.Lcd.setCursor(10, 110);
  M5.Lcd.print(String(int(hum)));
  M5.Lcd.print("%   ");

  M5.Lcd.print(String(prsr));
  M5.Lcd.print("hPa");
}

void loop() {
  delay(3000);
  M5.Power.deepSleep(27000000LL);
}