ArduinoからLCD画面を購入して、Web http呼び出しからの結果を表示したいと思います。Web APIは、UTF-8でエンコードされたJSONテキストを返します。
私は、ICUがArduinoのC / C ++プログラムでUnicodeを処理する方法であることを読みました。
私の質問:この種類の画面に
UTF-8文字を表示できますか?
UTF-8文字を表示できる(手頃な)文字LCD画面はありますか?
ArduinoからLCD画面を購入して、Web http呼び出しからの結果を表示したいと思います。Web APIは、UTF-8でエンコードされたJSONテキストを返します。
私は、ICUがArduinoのC / C ++プログラムでUnicodeを処理する方法であることを読みました。
私の質問:この種類の画面に
UTF-8文字を表示できますか?
UTF-8文字を表示できる(手頃な)文字LCD画面はありますか?
回答:
Arduinoについてはあまり詳しくありませんが、LCDの観点から見てみましょう。
最近、ほとんどすべての人気のキャラクターLCDがHD44780コントローラーを使用しています(これがLiquidCrystalライブラリでサポートされています)。このコントローラーはUTF-8を直接サポートしていません。各文字は1バイトで表されます。
したがって、UTF-8を手動で8ビット文字に変換する必要があります。コントローラーには、208個の5x8および32個の5x10文字に加えて、最大8個のユーザー定義文字(createCharを参照)を備えた組み込みの文字ジェネレーターがあります。すべての入力文字を事前定義/カスタム文字の1つにマッピングする必要があります。明らかに、UTF8文字のサブセットのみを表示できます。表示する/表示できる文字を決定する必要があります。
変換自体はかなり単純なはずです。UTF8文字列を反復処理して、すべての文字を1バイトにマッピングするだけです。ほとんどの場合、ルックアップテーブルを使用して単純にする必要があります。これについてさらに説明が必要な場合はお知らせください。
Unicodeは複雑で大きく、全体としてArduinoには大きすぎます。現在のバージョンでは、楔形文字、象形文字、クリンゴン語を含め、合計で10万文字を超え、数千の漢字は言うまでもありません。
したがって、ArduinoでいくつかのUnicode文字を表示したい場合は、次のようにします。
グラフィックディスプレイを取得します。あなたが言及するのは文字ディスプレイであり、256文字のほとんど固定されたセットしか表示できません。
処理する文字の小さなサブセットを定義します。定義済みのサブセットがいくつかあります。たとえば、多言語のヨーロッパのサブセットは見栄えがします。
いくつかのフォントを入手し、必要なセットにそれらを取り除きます。文字の組み合わせ、双方向の書き込みなどにより、表示でさえ、ASCIIで使用するものよりもはるかに複雑になる可能性があることに注意してください。おそらく、アクセントを組み合わせずにラテン文字に固執するのが最善でしょう。単純な左から右への文字のシーケンスであるものと同様に、キリル文字とギリシャ語も大丈夫です。
フォントを保存するために外部メモリを使用することもできます。
次に、おそらく必要ない他のトピックがたくさんあります。たとえば、並べ替えや検索については、Unicode標準とその付属文書(大きいです)を参照してください。
ICUは忘れてください。メガバイトのメモリが必要です。