残った数字を消去する
CoddyのArduinoジャーニー「ディスプレイとセンサー」セクションの一部。レッスン 9/24。
数値を上書きすると、新しい数値の文字数分だけが置き換わります。10を表示し、戻って9を表示すると、画面には90と表示されます。9が1を覆い、0には触れていないからです。
解決方法は2つあります。手っ取り早い方法は、数値の後にスペースをいくつか表示して、より長い数値が残した文字を覆うことです。
lcd.setCursor(0, 1);
lcd.print(reading);
lcd.print(" "); // 以前表示した数字を最大4桁分消すもう1つはlcd.clear()です。画面全体を消去し、カーソルを左上に移動します。ほかに表示したものもすべて消えるため、もう一度すべて表示しなければなりません。また、1秒間に何度も画面を消去するとちらつきます。変化する数値が1つだけなら、スペースを使う方がよいでしょう。
チャレンジ
簡単下の行にはノブの読み取り値が表示されますが、ノブを1023から下げると、古い桁が残ってしまいます。修正しましょう:
- 読み取り値を表示した後、残った桁を消すためにスペースを表示します
- 上の行には
Knob:を残します
Runを押し、ノブを上下に回してから、Checkを押します。
自分で試してみよう
#include <LiquidCrystal.h>
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("Knob:");
}
void loop() {
int reading = analogRead(A0);
lcd.setCursor(0, 1);
lcd.print(reading);
// 桁数の少ない数値を表示すると前の数字が残るので、ここで修正する
delay(100);
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ディスプレイとセンサーのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド