Size: a a a

ESP8266 & ESP32 [RU]

2021 February 14

ЮР

Юрий Ревака... in ESP8266 & ESP32 [RU]
Yuriy Trikoz
ну 320*240 * (бит на пиксель), а тем более 800*480.... ни а каких фрейм буферах и тем более 4ех (2 экрана) можно не думать
Ну да, но у меня изначально цель была не видео крутить, а кнопки чекбоксы, поэтому пойдет даже на 800*480
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Юрий Ревака
Ну да, но у меня изначально цель была не видео крутить, а кнопки чекбоксы, поэтому пойдет даже на 800*480
ну fps - сейчас под рукой у каждого смартфон с 60 и потом интерфейс где 5 - сразу глаза режет... имхо.
одна кнопка или две - они перерисовываются, а если нет - то можно микрики поставить (у 32 ого -  nач баттоны - даже их не надо) и наклейки налепить - экран не нужен :)
источник

ЮР

Юрий Ревака... in ESP8266 & ESP32 [RU]
Если изменения только в одном элементе lvgl обновляет только его, не весь экран, если табы использовать, то да тогда все перерисовывается.
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
вот, кстати, вопрос. зачем в lvgl своя реализация printf?
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Anton Petrusevich
вот, кстати, вопрос. зачем в lvgl своя реализация printf?
float - или без него - меньше размер тоже самое и с тригонометрией
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
да и прочей библиотечной требухи, типа синуса, тангенса, корня квадратного.
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
а разве есп32 не имеет этого стандартно? или какая другая платформа? оставим за скобками скорость
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Anton Petrusevich
а разве есп32 не имеет этого стандартно? или какая другая платформа? оставим за скобками скорость
он мульти и кросс
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
ну хорошо, какая платформа не умеет флоат?
источник

Н

Н Е К И Б Е Р Л Е О... in ESP8266 & ESP32 [RU]
Anton Petrusevich
ну хорошо, какая платформа не умеет флоат?
Железнодорожная
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Anton Petrusevich
ну хорошо, какая платформа не умеет флоат?
сопроцессор для выполнения аппаратно вычислений может быть или не быть и память - размер
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
Yuriy Trikoz
сопроцессор для выполнения аппаратно вычислений может быть или не быть и память - размер
если нет, то у гцц есть свои либы на этот счёт
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
ну я помню страдания с флоатом на ардуино, но он есть и вряд ли я сделаю быстрее, чем в гцц либах
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Anton Petrusevich
если нет, то у гцц есть свои либы на этот счёт
printf - c флоат и без - какой футпринт для бинарника ecп?

если тебе не нужен полновесный  printf - его делают ограниченного использования но достаточного для задачи
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
я не мерял. но вполне можно было бы тогда сделать какойнить iprintf чтобы только с интежерами
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
Anton Petrusevich
я не мерял. но вполне можно было бы тогда сделать какойнить iprintf чтобы только с интежерами
4кб
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
при этом печатать он будет просто не R - а меньшее подмножество, вот экономия вполне существенная
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
ладно, фиг с ним, с принтфом, но вот своя реализация квадратного корня...
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
atof - тоже самое
источник

YT

Yuriy Trikoz in ESP8266 & ESP32 [RU]
char strbuf[24];
strlcpy(strbuf, str, sizeof(strbuf));
   char *pt = strbuf;
   while ((*pt != '\0') && isblank(*pt)) {
       pt++;
   }  // Trim leading spaces

   signed char sign = 1;
   if (*pt == '-') {
       sign = -1;
   }
   if (*pt == '-' || *pt == '+') {
       pt++;
   }  // Skip any sign

   float left = 0;
   if (*pt != '.') {
       left = atoi(pt);  // Get left part
       while (isdigit(*pt)) {
           pt++;
       }  // Skip number
   }

   float right = 0;
   if (*pt == '.') {
       pt++;
       uint32_t max_decimals = 0;
       while ((max_decimals < 8) && isdigit(pt[max_decimals])) {
           max_decimals++;
       }
       pt[max_decimals] = '\0';  // Limit decimals to float max of 8
       right = atoi(pt);         // Decimal part
       while (isdigit(*pt)) {
           pt++;
           right /= 10.0f;
       }
   }

   float result = left + right;
   if (sign < 0) {
       return -result;  // Add negative sign
   }
   return result;

сравни с оригинальным - он полностью покрывает, а этот нет -  но не нужны более 8 знаков допустим , можно сэкономить еще
источник