Menu
CoddyTech

残った数字を消去する

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つだけなら、スペースを使う方がよいでしょう。

challenge icon

チャレンジ

簡単

下の行にはノブの読み取り値が表示されますが、ノブを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);
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ディスプレイとセンサーのすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド