Как отобразить переменные с плавающей запятой на OLED-дисплее (0,96 дюйма)
У меня проблема, похожая на обсуждаемую здесь: как отобразить переменные на OLED 0,96 "с помощью библиотеки u8glib?
Я хотел бы знать, как я могу показывать переменные с плавающей запятой вместо переменных int. Что я должен изменить в этой части моего кода?
char buf[9];
sprintf (buf, "%d", a);
u8g.drawStr(18, 3, buf);
} while( u8g.nextPage() );
delay(200);
}
Заранее спасибо = D
@Daniel Oliveira, 👍1
Обсуждение2 ответа
Группа функций printf в библиотеке Arduino не реализует преобразования с плавающей запятой и double. Для этого вам понадобится функция
char *dtostrf(double dval, int8_t width, uint8_t prec, char *buf);
Convert the double value passed in dval into an ASCII string stored in
buf. Conversion is done as "[-]d.ddd". The minimum field width of the output
string (including the '.' and the possible sign for negative values) is given
in width, and prec determines the number of digits after the decimal. width
is signed, negative for left adjustment.
Returns buf.
, который вам нужно будет вызывать для каждого числа с плавающей запятой, которое вы хотите преобразовать.
Обратите внимание, что вы можете предварительно преобразовать несколько значений с плавающей запятой в строки, каждое в свой собственный символьный буфер, а затем использовать sprintf для форматирования конечного буфера - помня, что в строке формата sprintf эти буферы содержат символьные строки, которые вам нужно указать с помощью спецификации формата '%s'.
Библиотека u8glib предоставляет стандартную функцию печати Arduino()
метод. Вы можете написать:
u8g.setPrintPos(18, 3);
u8g.print(a);
и это должно работать в основном для любого типа А.
- Создть число с плавающей запятой, используя целые числа
- Что означает display.setSegments(&segto, 1, 1); делать?
- Как объявить массив переменного размера (глобально)
- Float печатается только 2 десятичных знака после запятой
- Как получить тип данных переменной?
- Отправка и получение различных типов данных через I2C в Arduino
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отобразить символ º на ЖК-дисплее?
Этот код работает для вас? Если нет, то что происходит не так?, @chrisl
да, это работает, но только с переменными типа int =/. когда я пытаюсь плавать, это не работает., @Daniel Oliveira
Что значит "не работает"? Пожалуйста, опишите, что происходит на самом деле, @chrisl