今から始める電子工作 ⑪ データを表示する その1 LEDマトリクス
Arduino UNO R4 WiFi は、表示器を搭載しています。 LED マトリックスです。たとえば、アナログ入力で測定した電圧を表示するようなときに利用できます。表示する文字数が多いと横スクロールするので、見やすくはないですが。
●スクロール表示のサンプル
ドキュメント Using the Arduino UNO R4 WiFi LED Matrix
スケッチ例->LED_Matrix->TextWithArduinoGraphics のサンプルを読み込みます。
Arduino IDEの左のライブラリアイコンをクリックし、検索欄に「ArduinoGraphics」と入れ、出てきたArduinoGraphicsライブラリをインストールします。
実行します。
LEDマトリクスに文字が表示されました。
●A0のアナログ値をLEDマトリクスに表示する
スケッチです。上記のサンプル例をベースに必要なところを残しました。
A0端子は、3.3Vにつなぎました。基準電圧源には電源を使っています。14ビットの分解能にしました。
#include "ArduinoGraphics.h" #include "Arduino_LED_Matrix.h" ArduinoLEDMatrix matrix; float Vref = 4.5; float LSB = Vref / 16384; // V void setup() { matrix.begin(); Serial.begin(9600); while (!Serial) delay(10); analogReadResolution(14); } void loop() { // Make it scroll! matrix.beginDraw(); matrix.stroke(0xFFFFFFFF); matrix.textScrollSpeed(500); // add the text float analogData = analogRead(0) * LSB; String sensorValueSTR = String(analogData, DEC); char Buf[10]; sensorValueSTR.toCharArray(Buf, 6); matrix.textFont(Font_5x7); matrix.beginText(2, 1, 0xFFFFFF); matrix.println(Buf); matrix.endText(SCROLL_LEFT); matrix.endDraw(); delay(1000); }
測定値は実数です。マトリクスに渡すテキストは文字列です。実数floatを文字列に直接変換できなかったので、実数を一度Stringにし、それを文字列に変換して渡しています。
測定値のうち、左から6文字分だけを表示に使っています。なので、3.299 とかの表示になります。10文字分を変換しているので、もっと下の桁も表示できます。
文字列は、左に流れます。流れるスピードは、 matrix.textScrollSpeed(500); で指定しています。デフォルトは50でしたが、早すぎて読み取れなかったので、数値を大きくして速度を落としています。
表示の最初の座標は matrix.beginText(2, 1, 0xFFFFFF); のx=2で指定しています。デフォルトは0だったので、最初の文字が読めませんでした。