вопрос по выводу информации на LCD A1602

sharkman89
Offline
Зарегистрирован: 05.01.2018

добрый вечер!

Уважаемые форумчане прошу помощи в решении вопроса:

Есть емкость с водой, стоит датчик давления, переводит аналог через функцию MAP в литры.

когда обьем воды в емкости становится больше 99 литров(трехзначной цифрой) и вновь возвращается к двухзначной, дальнейшее отоброжение начинает выводиться с десятичной. Очень хочется чтобы отображалось только целое число) Есть подозрение что все очень просто, но гугл не помог и личного опыта не хватае!

сам скетч

#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
LiquidCrystal_I2C lcd(0x3f,16,2);           // Задаем адрес и размер дисплея      
#define Pressure A2      //  датчик уровня(давления) воды в бочке

int level;                  // уровень воды в бочке
int Value;                  // переменная с датчика уровня(давления) воды в бочке
 
void setup()
{
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  pinMode(Pressure, INPUT);                  // датчик давления
}
void loop()
{
Value = analogRead(Pressure);                            
level = map(Value, 0 , 1023, 75, 220);
lcd.setCursor(0,0);
lcd.print("VOLUME:");
lcd.print(level); 
lcd.setCursor(10,0);
lcd.print("Ltr");                                 
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, миллион же способов. Ну, не знаю, ну, поставьте после строки 20

lcd.print(" ");

например.

sharkman89
Offline
Зарегистрирован: 05.01.2018

спасибо)

com
Offline
Зарегистрирован: 06.09.2013

sharkman89, нет у тебя там никаких десятичных, у тебя переменные целые. просто надо не только писать новые значения, но и стирать старые. либо затирая их пробелами,  либо вызывая lcd.clear();

это не "970", это "97" и "0" от предыдущего значения - "100" или "110"...

 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

вместо 

18 lcd.setCursor(0,0);
19 lcd.print("VOLUME:");
20 lcd.print(level);
21 lcd.setCursor(10,0);
22 lcd.print("Ltr");                                
 

напишы 

char buf[20];

sprintf(buf,"VOLUME:%4d Ltr",level);

lcd.setCursor(0,0);

lcd.print(buf);