Наложение значения переменной самой на себя на экране
- Войдите на сайт для отправки комментариев
Пт, 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, но с другой стороны. Хотя лишний оператор добавляется.(((( Пичалька.