что пробовать, мне не в порт посылать надо, а на экран
Как Вы себе это представляете?
Я имею ввиду вывод 4 символов на дисплей из двух. К тому же в нем, как я понимаю, нет десятичной точки.
Можно, конечно же «извернуться» и выводить сначала целую часть в оба знакоместа, а дробную часть, например, только в правое знакоместо, а левое просто очищать.
целую часть я вывел таким образом
uint8_t volt = vin;
Write_1621( 2,num1[volt / 10]); //зажигаем первую цифру
Write_1621( 4,num1[volt % 10]); //зажигаем вторую цифру
// адрес первой цифры 2, второй 4, третьей 6
а десятичную как я не могу разобраться
Ничего не понял, у него 2 знакоместа или 4 всё-таки?
Ну, ну…
строка из 4, нужно только один символ после запятой вывести и всё
Всё равно не понял (так как изначально, вроде бы был дисплей на 2 знакоместа, сейчас уже 4, ну да ладно…).
Если проблема в том как десятичную цифру получить, то так:
uint8_t volt = vin;
uint8_t dec = uint8_t ((vin - (float)volt) * 10.0);
Write_1621( 2,num1[volt / 10]); //зажигаем первую цифру
Write_1621( 4,num1[volt % 10]); //зажигаем вторую цифру
Write_1621( 6,num1[dec]); // зажигаем десятичную цифру в знакоместе по адресу 6, согласно комментария ниже:
// адрес первой цифры 2, второй 4, третьей 6
всё показывает, но только показываются очень быстро, не успевает погаснуть одна цифра уже загорается вторая, как сделать задержку примерно 0.5 секунд
Ну если программа «терпит» - delay() добавь )))
Так ведь уже нечего выводить, дроби то нет
Ну посмотри 28 сообщение по лучше ))
да, но delay будет тормозить весь void loop, а у меня там кроме вольтметра ещё другие расчёты которые должны быстро выполняться
Тогда вдумчиво изучай:
Нет дробной части
0_0 чего у него нет в 23м? vin? Куда делся? ![]()
Я повернул время вспять! Ответил раньше чем меня спросили…))
Да ты маг)))
А еще можно хранить напряжение как целое в дВ (123дециВ=12,3 В), и выводить как целое.
Я о том, что после 5 строки у ТС в #23 дробная часть отсутствует, и выводить нечего))
Т.е. просто сделать:
vin *= 10.0;
int16_t volt = vin;
И выводи себе…
