Наложение значения переменной самой на себя на экране
- Войдите на сайт для отправки комментариев
Пт, 24/11/2017 - 11:15
Всем привет!
Есть esp8266, стандартный дисплей LCD 2004 и датчики ds18b20. Есть необходимость произвести расчет формулой:
int U = 0; // Коэффициент смешения (расчетный)
byte G1 = 2; // Расход на подаче
byte G2; // Расход на обратке (расчетный)
byte G3; // Расход после смешения (расчетный)
void setup(void){
///////////////////////////////РАСЧЕТ УЗЛА СМЕШЕНИЯ//////////////////////////////////////////
HRE3Value = 0; // После старта контроллера заслонка принимает положение
// при котором сторона А полностью закрыта.
/////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////DS18B20//////////////////////////////////////////////////
ds.begin(); //включаем DS18B20
/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////ДИСПЛЕЙ 1602 I2C//////////////////////////////////////////////
lcd.createChar(0, gradus); // Подключаем знак градуса
lcd.createChar(1, vlazhnost); // Подключаем знак влажности
lcd.createChar(2, tnv); // Подключаем знак градуса
lcd.createChar(3, battery); // Подключаем знак батарейки
lcd.begin();
lcd.backlight(); // Включаем подсветку
lcd.setCursor(2,0);
lcd.print("MAIN SETTINGS CO");
lcd.setCursor(0,1); // Ячейка 1 строка 2
lcd.print(char(2));lcd.print("=");
lcd.setCursor(0,2); // Ячейка 1 строка 3
lcd.print("T1=");
lcd.setCursor(0,3); // Ячейка 1 строка 4
lcd.print("T2=");
lcd.setCursor(11,1); // Ячейка 12 строка 2
lcd.print(char(1));lcd.print("=");
lcd.setCursor(11,2); // Ячейка 12 строка 3
lcd.print("T3=");
lcd.setCursor(11,3); // Ячейка 12 строка 4
lcd.print("T4=");
lcd.clear();
/////////////////////////////////////////////////////////////////////////////////////////////
}
void loop(void){
/////////////////////////////////////////////////////////////////////////////////////////////
T1 = ds.getTempC(Temp1); // Датчик температуры Т1 (подача ЦО)
T2 = ds.getTempC(Temp2); // Датчик температуры Т2 (обратка ЦО)
T3 = ds.getTempC(Temp3); // Датчик температуры Т3 (подача ЦО ТП)
T4 = ds.getTempC(Temp4); // Датчик температуры Т4 (обратка ЦО ТП)
T7 = ds.getTempC(Temp7); // Датчик температуры Т7 (подача ГВС)
T13 = ds.getTempC(Temp13); // Датчик температуры Т13 (обратка ГВС)
/////////////////////////////////////////////////////////////////////////////////////////////
U = ( T1 - T3 ) / ( T3 - T4 ); // Расчет коэффициента смешения
if ( G1 == 0 ) // Необходимо указать расход G1
{
// Надпись "Необходимо указать значение расхода G1"
G2 = 0; // Если расход G1 не введен, то расчет не ведётся
G3 = 0;
}
else
{
G3 = ( G1 * ( 1 + U ) ); // Расчет расхода G3
G2 = (( G3 * U ) / ( 1 + U )); // Расчет расхода G2
}
}
Смысл в том, что при выводе значения U - (коэф смешения) на экране LCD2004, после значения 100, при уменьшении коэффициента, отображается 990, (остаются нули) и так далее - 950, 500, а в конце 000.
Вопрос, как сделать так, чтобы после трехзначного значения и двухзначного, пропадали "призрачные" нули?
ПС. Код не полный, повыдёргивал его из основного массива.
Допечатывать два пробела следом.
делать постоянную ширину поля, например, 4 и выравнивать вывод вправо. sprintf() справица.
Перед выводом делать:
lcd.setCursor(x,x);
lcd.print(" ");
В принципе вариант №1, но с другой стороны. Хотя лишний оператор добавляется.(((( Пичалька.