Помогите подправить исходный код
Добавлено: Сб апр 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;
}
}
Вот часть кода:
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;
}
}