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); }