Вывод float на OLED
- Войдите на сайт для отправки комментариев
Сб, 30/12/2017 - 00:49
Здравствуйте, пытаюсь вывести на экран текущее напряжение каждые 600мсек. При выводе раз через раз символы печатаются один поверх другого. При этом, если выводит просто значение millis(), то проблемы нет, проблема возникает только при выводе значений с плавающей точкой. Вот код:
#include <U8glib.h> #define CYCLE_TIME 600 U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); unsigned long long current; double cnt = 0; void setup(void){ } float readVcc(){ ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); ADCSRA |= _BV(ADSC); while (bit_is_set(ADCSRA, ADSC)); uint8_t low = ADCL; uint8_t high = ADCH; float result = (high<<8) | low; result = (1.1 * 1023.0 * 1000) / result; return result; } void u8g_prepare(void) { u8g.setFont(u8g_font_6x10); /*u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop();*/ } void draw() { u8g_prepare(); u8g.setPrintPos(0, 20); //String doubleStr = String(readVcc()); float currentVolt = readVcc(); u8g.print(currentVolt); } void loop(void) { if(millis() - current > CYCLE_TIME){ current = millis(); u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); } }
Что можно сделать, что бы исправить это? Arduino Nano v3, OLED 0.91 I2C, U8Glib 1.19.1
Что можно сделать, что бы исправить это?
хорошенько подумать, почему так происходит
Потом еще разок. Пароль: "швабра".
хорошенько подумать, почему так происходит
При этом внимательно глядя на экран.
Желательно увичить интервал хоть до секунды (или больше), чтобы успевать что-то разглядеть.