Platformio vs Arduino IDE
- Войдите на сайт для отправки комментариев
Сб, 06/02/2021 - 18:21
Приветствую всех!
Для работы с ESP32 использую:
Visual Studio Code Версия: 1.53.0
Platformio 5.1.0
Имеется не большой код, который выводит на дисплей число и увеличивает его:
////////////////////
#include <Arduino.h> #include <SPI.h> #include <TFT_eSPI.h> #include <lvgl.h> TFT_eSPI tft = TFT_eSPI(); // Invoke custom library static lv_disp_buf_t disp_buf; static lv_color_t buf[LV_HOR_RES_MAX * 10]; lv_obj_t * my_label; int num = 1; int screenWidth = 320; int screenHeight = 240; /* Display flushing */ void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { uint16_t c; tft.startWrite(); /* Start new TFT transaction */ tft.setAddrWindow(area->x1, area->y1, (area->x2 - area->x1 + 1), (area->y2 - area->y1 + 1)); /* set the working window */ for (int y = area->y1; y <= area->y2; y++) { for (int x = area->x1; x <= area->x2; x++) { c = color_p->full; tft.writeColor(c, 1); color_p++; } } tft.endWrite(); /* terminate TFT transaction */ lv_disp_flush_ready(disp); /* tell lvgl that flushing is done */ } bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) { uint16_t touchX, touchY; bool touched = tft.getTouch(&touchX, &touchY, 600); if(!touched) { return false; } if(touchX>screenWidth || touchY > screenHeight) { } else { data->state = touched ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL; } return false; /*Return `false` because we are not buffering and no more data to read*/ } void setup() { Serial.begin (115200); tft.init(); tft.setRotation(3); lv_init(); uint16_t calData[5] = { 275, 3620, 264, 3532, 1 }; tft.setTouch(calData); lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX ); /*Initialize the display*/ lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.hor_res = screenWidth; disp_drv.ver_res = screenHeight; disp_drv.flush_cb = my_disp_flush; disp_drv.buffer = &disp_buf; lv_disp_drv_register(&disp_drv); /*Initialize the input device driver*/ lv_indev_drv_t indev_drv; lv_indev_drv_init(&indev_drv); /*Descriptor of a input device driver*/ indev_drv.type = LV_INDEV_TYPE_POINTER; /*Touch pad is a pointer-like device*/ indev_drv.read_cb = my_touchpad_read; /*Set your driver function*/ lv_indev_drv_register(&indev_drv); /*Finally register the driver*/ my_label = lv_label_create(lv_scr_act(), NULL); } void loop() { char buf[60]; sprintf(buf, "num: %d\n", num); num++; lv_label_set_text(my_label, buf); lv_task_handler(); /* let the GUI do its work */ delay(5); }
///////////////////
Platformio.ini:
[env:esp32doit-devkit-v1]
platform = espressif32
board = esp-wrover-kit
framework = arduino
monitor_speed = 115200
upload_port = /dev/cu.SLAB_USBtoUART
//////////////////////////
В Адуино IDE все работает, в платформио значение int num = 1 не увеличивается, выводит на дисплей просто единицу. В чем может быть дело?
По названию темы подумал, что намечается срач на тему тотального превосходства одного над другим
На самом деле, все больше убеждаюсь, что и то и другое - так себе варианты... С Ардуино итак все понятно, если у пользователей Windows она стабильно (более или менее) работает, то на Mac вылеты через раз, а Платформио - каждое обновление как сюрприз. Обновитесь и не факт уже, что Ваш код будет исправно работать.
На самом деле, все больше убеждаюсь, что и то и другое - так себе варианты... С Ардуино итак все понятно, если у пользователей Windows она стабильно (более или менее) работает, то на Mac вылеты через раз, а Платформио - каждое обновление как сюрприз. Обновитесь и не факт уже, что Ваш код будет исправно работать.
Два мака, на каждом по 2 Arduino IDE (версий 1.8.8 и 1.8.13). За 2 года ни одного вылета. Энергоэффективность ни к черту, это да, но на стабильность не клевещите. Была единственная проблема с SDK ESP32 при обновлении до BIGSUR, но это частный случай
Очевидно программы используют разные версии компилятора, а где то в коде есть кусок, который каждый из них трактует по своему.
Возможно в случае где инкремент не работает, он работает, но программа тупо дохает и начинается заново.
Проверить можно просто в сетапе выводя в порт сообщение, точно так же можно проверит не зависла ли программа выводя в порт, что то в конце loop
Искать лениво.
Интересно, как еще можно понимать "++" у переменной в функции))) Скорее всего косяк в новой версии Платформио, ОПЯТЬ... В буфер она тоже ничего не пишет, как я понял..
Два мака, на каждом по 2 Arduino IDE (версий 1.8.8 и 1.8.13). За 2 года ни одного вылета. Энергоэффективность ни к черту, это да, но на стабильность не клевещите. Была единственная проблема с SDK ESP32 при обновлении до BIGSUR, но это частный случай
[/quote]
А еще такое бывает - делаешь копи паст, в Ардуино IDE вставляется дважды))) Перезагружаешь, норм) Mac OS X Mojave
Интересно, как еще можно понимать "++" у переменной в функции))) Скорее всего косяк в новой версии Платформио, ОПЯТЬ... В буфер она тоже ничего не пишет, как я понял..
На днях сталкивался с подобным, так и не понял, что было, но инкремента не было по коду val++;
А вот в такой форме записи появился:
val=val+1;
Что же это за компиляторы такие, что ++ не понимают? С пиратских торрента, поди, нуленные.
Что же это за компиляторы такие, что ++ не понимают? С пиратских торрента, поди, нуленные.
Это PlatformIO + VS Code последней версии, ничего дополнительно не ставил. При желании, Вы всегда можете протестировать))
А еще такое бывает - делаешь копи паст, в Ардуино IDE вставляется дважды))) Перезагружаешь, норм) Mac OS X Mojave
Это старый баг. ТОЛЬКО в кириллической раскладке проявляется. Перезагружаться не приходится, просто вернуть раскладку в латиницу и все. Кстати, если после "двойного паста" нажать анДу (cmd + Z), лишний "паст" удаляется.
Мне IDE хватает, не знаю зачем мне этих монстров ставить для странных проб.
Мне IDE хватает, не знаю зачем мне этих монстров ставить для странных проб.
+1 Тут еще какой момент, если возникает какой-то глюк, в Ардуино ИДЕ точно знаешь виноватого. Это всегда ты сам.
на Mac вылеты через раз, а Платформио - каждое обновление как сюрприз. Обновитесь и не факт уже, что Ваш код будет исправно работать.
Поэтому на Маке есть time machine, как бы они смотрят в будущее (но дорого, сцуко...)
Поэтому на Маке есть time machine, как бы они смотрят в будущее (но дорого, сцуко...)
TM в такой ситуации не поможет. ТМ полезен исключительно в ситуации полного пиздеца)) Нужно быть оооочень способным, чтобы довести юникс-ситему до такого состояния
Платформио - каждое обновление как сюрприз. Обновитесь и не факт уже, что Ваш код будет исправно работать.
а зачем обновлять? У меня абсолютно везде, где есть такая опция - обновления выключены. Выключил обновления на Винде, у всех программ, в софте на телефоне, никогда не позволяю обновлятся прошивкам на роутере и телевизоре. Обновляю только тогда, когда текущее ПО глючит и я точно знаю, что новая версия исправляет проблему.
Что касается темы ветки - у меня стоит Вижуал Студия и она мне очень нравится, работает чрезвычайно стабильно и уж точно не хуже Ардуино ИДЕ. Обновления VS выключены.
Ардуино ИДЕ пользуюсь для простых проектов. На разных компах стоят разные версии - от 1.6.12 до 1.8.13 - какие были актуальными в момент установки. Ни ИДЕ, ни библиотеки никогда не обновляю.
Зато и проблем нет.
Платформио - каждое обновление как сюрприз. Обновитесь и не факт уже, что Ваш код будет исправно работать.
а зачем обновлять? У меня абсолютно везде, где есть такая опция - обновления выключены. Выключил обновления на Винде, у всех программ, в софте на телефоне, никогда не позволяю обновлятся прошивкам на роутере и телевизоре. Обновляю только тогда, когда текущее ПО глючит и я точно знаю, что новая версия исправляет проблему.
Что касается темы ветки - у меня стоит Вижуал Студия и она мне очень нравится, работает чрезвычайно стабильно и уж точно не хуже Ардуино ИДЕ. Обновления VS выключены.
Ардуино ИДЕ пользуюсь для простых проектов. На разных компах стоят разные версии - от 1.6.12 до 1.8.13 - какие были актуальными в момент установки. Ни ИДЕ, ни библиотеки никогда не обновляю.
Зато и проблем нет.
Согласен. Только пересел просто, еще не успел отключить. А вообще, но мой взгляд, проще сразу с Платформио начинать, даже если пишешь простой проект. Невероятно-удобная работа с кодом и синтаксисом + компиляция быстрее (ИМХО). Все прекрасно, если бы не периодические багги, не обновляться тоже такое себе...