Некоректный вывод данных на дисплее 1602 i2c.

Pibodi1
Offline
Зарегистрирован: 25.03.2018

При выводе данных с датчика на дисплей остаются лишние символы.

Например если было показание 20, то если станет 2 , 0 все равно останется на экране. Также если было 124 и станет 50, то будет отображаться 504.

Код прилагаю.

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x3F,16,2);

void setup() {
  lcd.init();                     
  lcd.backlight();

  pinMode(A0, INPUT);
 

}

void loop() {
  
  int d = analogRead(A0);
  
  lcd.setCursor(0, 0);
  lcd.print(d);
  delay(500);
   
}

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

Вы констатировали нормальное поведение дисплея. В какую-то позицию выведен символ. Если он Вам там больше не нужен - стирайте его (выводите в этой позиции пробел). Дисплей сам за Вас это делать не обязан.

Pibodi1
Offline
Зарегистрирован: 25.03.2018

А не подскажите, в правильном ли направлении я думаю.

 

Нужна переменная, куда будет записываться последние показания и при каждом проходе loop она должна сверяться с текущей?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Этим Вы лишние обращения к дисплею уберёте, но к отображению значений это отношения не имеет. Вы же знаете диапазон значений Вашего датчика, допустим это трёхзначное число. Вот и дополняйте выводимое на экран строковое значение до трёх символов пробелами слева или справа по вкусу. 

Если уж сами не сообразите, вот аналогичная тема для примера http://arduino.ru/forum/programmirovanie/problema-s-vyvodom-znacheniya-peremennykh-na-lcd-16x2 Вы не первый :)