前回作成した Web Radio のスケッチで、局名と曲名を2段、横スクロールするのに同じコードを2つ書いていて無駄だなと思っておりました。C++でかっこよく複数使える関数にしたいと思い、LM Studio というローカルで使えるAIに聞いてみました。LLMは gpt-oss-20b を使いました。
意図が分かってもらえたようで、良さそうな回答が得られました。
ただグラフィックまわりは変だったので直してこんな感じでできました。
ボードはESP32-C3 & 128x32 SSD1306 Display
できたスケッチはこちら
ScrollText.h
/*********************************************************************
* ScrollText.h
*********************************************************************/
#pragma once
#include <Adafruit_GFX.h> // 既存の画面描画ライブラリ
#include <U8g2_for_Adafruit_GFX.h>
// ------------------------------------------------------------------
// 一行分をスクロールさせる構造体
struct ScrollItem {
String text; // 表示したい文字列
int x; // 現在のX座標(左端)
int y; // Y座標(固定で1行ごとにずらす)
int speed; // 1フレームあたりのスクロール量 (px)
int minX; // テキストが画面外に完全に出る位置
const uint8_t *font; // フォントポインタ(U8g2フォント)
};
// ------------------------------------------------------------------
// 複数行を管理するクラス
class Scroller {
public:
Scroller(U8G2_FOR_ADAFRUIT_GFX &gfx, int displayW)
: gfx(gfx),
セコメントをする