Обсуждаем контроллеры компании Atmel.
Ответить

Помогите подправить исходный код

Сб апр 20, 2019 13:44:44

Здраствуйте! Написал код для вычесления начальной скорости в формате например 123 м.с. Но мне нужно чтобы было 52.1 тоесть показывались десятые, а все что больше 99.9 без десятих: например 123 м.с.

Вот часть кода:

static void setLedValue(int16_t value) {
seg3 = digitToLedValue(value % 10); //3 сегм


if (value >= 10) {
seg2 = digitToLedValue((value / 10) % 10); //2 сегм
} else {
seg2 = 0b00000000;
}


static void calculateAndShowSpeed(uint16_t lastTime) {
speed = (F_CPU / 1000L) * BASELENGHT / lastTime;
error=false;
errorFirst=false;
errorSecond=false;

if (speed >= 1000) {
setLedValue(speed / 10);
} else {
setLedValue(speed);
if (speed < 10)
{
seg2 = 0b00111111;

}
seg2 |= 0b10000000;
}
writeToEEPROM(speed);
}

if (value >= 100) {
seg1 = digitToLedValue((value / 100) % 10); //1 сегм
} else {
seg1 = 0b00000000;
}
}

Re: Помогите подправить исходный код

Сб апр 20, 2019 16:35:31

При вычислении сотен отслеживай данный результат… если получаешь значение сотен больше нуля значит выводи значения без десятых и точки. А если стони равны нулю то выводи с точкой и десятыми.

Re: Помогите подправить исходный код

Сб апр 20, 2019 21:33:05

dumser2, а в чём проблема то ? В коде у Вас вроде есть какое-то условие на >=100.
:dont_know:

Re: Помогите подправить исходный код

Вс апр 21, 2019 18:11:50

Если больше 100 то все ок, а вот с точкой проблемы.
Ответить