Я хочу запрограммировать собственную версию вариометра для представления подъема и понижения в метрах в секунду. Значения отображаются на экране ЖК-модуля. Значения подъема и снижения уменьшаются с помощью потенциометра, который я могу вращать, чтобы изменять значения во время работы программы. Отображаемые значения набора высоты находятся в диапазоне от climb: 0 m/s
до climb: 300 m/s
, а значения снижения — в диапазоне от sink: 0 m/s
до sink: -300 m/s
. Этот бит в порядке.
Теперь я хочу отобразить их в виде гистограммы с нулевой точкой в центре. По мере увеличения climb
до 300 блоки справа от нулевой точки заполняются соответственно слева направо. Когда значение sink
уменьшается до -300, я хочу, чтобы блоки слева от нулевой точки заполнялись соответственно справа налево, по существу изменяя направление правой стороны.
climb = (DELVAL*600ul + 1023/2)/1023;
sink = (DELVAL*600ul + 1023/2)/1023;
climb2 = ((DELVAL-511.5)*600ul + 1023/2)/1023;
sink2 = ((DELVAL+511.5)*600ul + 1023/2)/1023;
if (DELVAL > 511.5)
{
sprintf(buf, "Climb: +%d m/s ", climb-300);
lcd_putxy(2,0,buf);
for (delay = 0; delay < 50000; delay++);
}
if (DELVAL < 511.5)
{
sprintf(buf, "Sink: -%d m/s ", ~sink+300);
lcd_putxy(2,0,buf);
for (delay = 0; delay < 50000; delay++);
}
character1 = climb2 / 35;
character2 = sink2 / 35;
lcd_move(1,10);
for (i = 0; i < character1; i++)
{
lcd_putchar(0xD0);
}
lcd_putstr(" ");
for (delay = 0; delay < 50000; delay++);
lcd_move(1,2);
for (i = 0; i < character2; i++)
{
lcd_putchar(0xD0);
}
for (delay = 0; delay < 50000; delay++);
DELVAL
— это данные, считанные с потенциометра. Я могу заставить работать правую часть гистограммы, но не могу заставить работать левую часть. Может ли кто-нибудь сообщить мне о каких-либо проблемах с моим кодом и объяснить, как лучше всего заставить работать левую сторону.
Часть, которая не работает в моем коде, — это цикл for, содержащий character2
.
░░░░█░░░░
; при максимальном наборе высоты░░░░█████
и при максимальном снижении█████░░░░
. Или что-то подобное. Вы можете скопировать и вставить Unicode блочный элемент или рисование прямоугольников символов со страниц Википедии. В StackOverflow также есть справка по редактированию уценки. - person Nominal Animal   schedule 15.12.2016sink
, ЖК-дисплей отображает блоки по всему экрану. - person user_1   schedule 16.12.2016