ino2ubi - утилита автоматического преобразования кода в пользовательский блок

strela
Рядовой
Сообщения: 42
Зарегистрирован: 24 окт 2025, 21:25
Имя: стрела
Благодарил (а): 6 раз
Поблагодарили: 6 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение strela »

Dev1 писал(а): 13 янв 2026, 18:10
strela писал(а): 12 янв 2026, 21:05 Утилита не знает где будет параметр а где вход, а ИИ легко определит взглянув на библиотеку. Я это уже проверял, у ИИ хорошо развит анализ кода. Остается только согласовать что будет параметром а что входом, ну и какие выходы нужны. А вот упаковка в файл .ubi тяжеловат для ИИ особенно в чате. На локалке конечно можно обучить скормив сотни блоков для обучения.
strela писал(а): 13 янв 2026, 15:52 Очень просто, с помощью спец.промта которй я сейчас разрабатываю с помощью того же ИИ. это будет промт указывающий изучить, проанализировать библиотеку или дирректорию с ней и вычленить весь функционал. Далее по правилам редактора пользовательских блоков (которые уже созданы) ИИ сгенерирует семантическую структуру блока и преобразует в файл для локального генератора на основе срипта или утилиты.
ЗАчем такие извращения, напишите ИИ что вы хотите и получите результат в коде. Заливай и пользуйся. Что то добавить, напишите и вам добавят в код что надо. Проблема то... :smile37:
Я так и делал до последнего. Но код для блоков это самая малая проблема и легко решаема. А вот создание блоков допустим для LVGL очень трудозатратно, один только блок стилей для темы чего стоит. В нем параметров около полусотни и время на создание этих параметров и условий к ним и элементов кода затрачивается очень много. На один блок ушло 2 дня. По этому мое желание создать генератор блоков с помощью ИИ так велико. Автоматизация мать её... :smile44:
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

SergeyShikal писал(а): 13 янв 2026, 18:54 Здравствуйте, изучаю по маленьку создание ПБ из кодов, при загрузке sketch_jan13a.ino через ардуино иде компилиреется, после создания ПБ через программу (выбрал парсить код и сгенерировать блок ) Custom Block111.ubi компиляция не проходит.
Нашел ошибку, исправлю
cfitymrf
Сержант
Сообщения: 110
Зарегистрирован: 06 сен 2021, 07:45
Имя: иван
Благодарил (а): 8 раз
Поблагодарили: 5 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение cfitymrf »

может не в тему , сейчас только сделал себе блок энкодера для F411 в ИИ гугла , он знает что такое FLProg и пишет код для секций , я даже ему скетч не давал.
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

cfitymrf писал(а): 14 янв 2026, 13:25 может не в тему , сейчас только сделал себе блок энкодера для F411 в ИИ гугла , он знает что такое FLProg и пишет код для секций , я даже ему скетч не давал.
покажите как это выглядит
Аватара пользователя
Dev1
Майор
Сообщения: 1069
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Благодарил (а): 4 раза
Поблагодарили: 21 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Dev1 »

cfitymrf писал(а): 14 янв 2026, 13:25 может не в тему , сейчас только сделал себе блок энкодера для F411 в ИИ гугла , он знает что такое FLProg и пишет код для секций , я даже ему скетч не давал.
Не зря Анатолий скармливал ИИ блоки. Все таки чему то научился :D
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
cfitymrf
Сержант
Сообщения: 110
Зарегистрирован: 06 сен 2021, 07:45
Имя: иван
Благодарил (а): 8 раз
Поблагодарили: 5 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение cfitymrf »

покажите как это выглядит
У вас нет необходимых прав для просмотра вложений в этом сообщении.
vitalik9
Рядовой
Сообщения: 52
Зарегистрирован: 22 авг 2021, 12:08
Имя: Виталий
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение vitalik9 »

Пробовал создать блок из скетча после создания пользовательского блока и проверке в 8,2,3 в ide куча ошибок. Ктото пробовал эту программу?
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

vitalik9 писал(а): 25 янв 2026, 19:43 Пробовал создать блок из скетча после создания пользовательского блока и проверке в 8,2,3 в ide куча ошибок. Ктото пробовал эту программу?
Она еще в процессе доработки. А какие ошибки у вас и образец кода дайте пожалуйста.
vitalik9
Рядовой
Сообщения: 52
Зарегистрирован: 22 авг 2021, 12:08
Имя: Виталий
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение vitalik9 »

Phazz писал(а): 25 янв 2026, 20:54
vitalik9 писал(а): 25 янв 2026, 19:43 Пробовал создать блок из скетча после создания пользовательского блока и проверке в 8,2,3 в ide куча ошибок. Ктото пробовал эту программу?
Она еще в процессе доработки. А какие ошибки у вас и образец кода дайте пожалуйста.
вот ошибки в ide
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino: In function 'void setup()':
pr3:41:3: error: 'WiFi' was not declared in this scope
WiFi.mode(WIFI_STA);
^~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:41:3: note: suggested alternative: 'Wire'
WiFi.mode(WIFI_STA);
^~~~
Wire
pr3:41:13: error: 'WIFI_STA' was not declared in this scope
WiFi.mode(WIFI_STA);
^~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:41:13: note: suggested alternative: 'WIFI_IF_STA'
WiFi.mode(WIFI_STA);
^~~~~~~~
WIFI_IF_STA
pr3:42:14: error: 'WIFI_SSID' was not declared in this scope
WiFi.begin(WIFI_SSID, WIFI_PASS);
^~~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:42:14: note: suggested alternative: 'MIP_SSIP'
WiFi.begin(WIFI_SSID, WIFI_PASS);
^~~~~~~~~
MIP_SSIP
pr3:42:25: error: 'WIFI_PASS' was not declared in this scope
WiFi.begin(WIFI_SSID, WIFI_PASS);
^~~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:42:25: note: suggested alternative: 'WIFI_EVENT'
WiFi.begin(WIFI_SSID, WIFI_PASS);
^~~~~~~~~
WIFI_EVENT
pr3:46:27: error: 'WL_CONNECTED' was not declared in this scope
while (WiFi.status() != WL_CONNECTED && (millis() - t0) < 20000) {
^~~~~~~~~~~~
pr3:52:24: error: 'WL_CONNECTED' was not declared in this scope
if (WiFi.status() == WL_CONNECTED) {
^~~~~~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino: In function 'void loop()':
pr3:99:7: error: 'WiFi' was not declared in this scope
if (WiFi.status() != WL_CONNECTED) {
^~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:99:7: note: suggested alternative: 'Wire'
if (WiFi.status() != WL_CONNECTED) {
^~~~
Wire
pr3:99:24: error: 'WL_CONNECTED' was not declared in this scope
if (WiFi.status() != WL_CONNECTED) {
^~~~~~~~~~~~
pr3:115:3: error: 'HTTPClient' was not declared in this scope
HTTPClient http;
^~~~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:115:3: note: suggested alternative: 'DNSClient'
HTTPClient http;
^~~~~~~~~~
DNSClient
pr3:116:3: error: 'http' was not declared in this scope
http.setTimeout(15000);
^~~~
pr3:137:3: error: 'StaticJsonDocument' was not declared in this scope
StaticJsonDocument<2048> doc;
^~~~~~~~~~~~~~~~~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:137:3: note: suggested alternative: 'StaticQueue_t'
StaticJsonDocument<2048> doc;
^~~~~~~~~~~~~~~~~~
StaticQueue_t
pr3:137:28: error: 'doc' was not declared in this scope
StaticJsonDocument<2048> doc;
^~~
pr3:138:3: error: 'DeserializationError' was not declared in this scope
DeserializationError err = deserializeJson(doc, body);
^~~~~~~~~~~~~~~~~~~~
pr3:139:7: error: 'err' was not declared in this scope
if (err) {
^~~
C:\Users\Iulia\AppData\Local\Temp\flprog\pr3\pr3.ino:139:7: note: suggested alternative: 'erf'
if (err) {
^~~
erf
pr3:145:3: error: 'JsonObject' was not declared in this scope
JsonObject cur = doc["current"];
^~~~~~~~~~
pr3:146:7: error: 'cur' was not declared in this scope
if (cur.isNull() ||
^~~
pr3:155:14: error: 'cur' was not declared in this scope
float T = cur["temperature_2m"].as<float>();
^~~
pr3:155:39: error: expected primary-expression before 'float'
float T = cur["temperature_2m"].as<float>();
^~~~~
pr3:156:45: error: expected primary-expression before 'float'
float RH = cur["relative_humidity_2m"].as<float>();
^~~~~
pr3:157:37: error: expected primary-expression before 'float'
float DP = cur["dew_point_2m"].as<float>();
^~~~~
pr3:158:73: error: expected primary-expression before 'float'
float PR = cur.containsKey("precipitation") ? cur["precipitation"].as<float>() : 0.0f;
^~~~~
pr3:158:73: error: expected ':' before 'float'
float PR = cur.containsKey("precipitation") ? cur["precipitation"].as<float>() : 0.0f;
^~~~~
:
pr3:158:73: error: expected primary-expression before 'float'
float PR = cur.containsKey("precipitation") ? cur["precipitation"].as<float>() : 0.0f;
^~~~~
exit status 1
'WiFi' was not declared in this scope
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Dmabst
Сержант
Сообщения: 198
Зарегистрирован: 08 дек 2018, 16:49
Имя: Дмитрий
Благодарил (а): 6 раз
Поблагодарили: 6 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Dmabst »

vitalik9, а вы "скормите" эти ошибки хотя бы DeepSeek.
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

Исходный код еще нужен
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

Скачать

V1.2
исправление ошибок
добавлена справка и автоматическое назначение роли переменной по комментариям //in - вход //out - выход //par - параметр.
Комментарий в начале скетча добавляется в описание блока.
vitalik9
Рядовой
Сообщения: 52
Зарегистрирован: 22 авг 2021, 12:08
Имя: Виталий
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение vitalik9 »

Изображение#include <Arduino.h>
#include <math.h>

// Глобальные переменные-входы (сюда подавайте данные)
float inputTemperature = 25.5;
float inputHumidity = 60.0;
float resultDewPoint = 0.0;

/**
* Расчет точки росы по формуле Магнуса-Тетенса
* t - температура в градусах Цельсия
* rh - относительная влажность в % (0-100)
*/
double calculateDewPoint(double t, double rh) {
// Константы для диапазона температур от 0 до 50°C
const double a = 17.27;
const double b = 237.7;

// Промежуточное значение гамма
double gamma = ((a * t) / (b + t)) + log(rh / 100.0);

// Итоговая формула
double dp = (b * gamma) / (a - gamma);
return dp;
}

void setup() {
Serial.begin(115200);
Serial.println("--- Калькулятор точки росы готов ---");
}

void loop() {
// 1. СЮДА ДОБАВЬТЕ ВАШ СПОСОБ ПОЛУЧЕНИЯ ДАННЫХ (Serial, ADC, BLE и т.д.)
// Пример: inputTemperature = myCustomSource.read();

// 2. ВЫЧИСЛЕНИЕ
// Проверка на корректность влажности во избежание ошибки log(0)
if (inputHumidity > 0.1) {
resultDewPoint = calculateDewPoint(inputTemperature, inputHumidity);
} else {
resultDewPoint = -99.9; // Ошибка: слишком сухой воздух
}

// 3. ВЫХОД (мониторинг или управление пинами)
Serial.print("Вход T: "); Serial.print(inputTemperature);
Serial.print(" | Вход H: "); Serial.print(inputHumidity);
Serial.print(" | Точка росы: "); Serial.println(resultDewPoint);

// Пример выхода: зажечь светодиод, если точка росы выше 15 градусов
if (resultDewPoint > 15.0) {
// digitalWrite(2, HIGH);
}

delay(1000);
}
блок скомпилировался без ошибок
единственное на выходе появилась строка коментарий 873f6510-a96f-4157-a272-dd1b6942c2a6
удалил коментарий в редакторе flprog
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

Скиньте скетч. Посмотрю откуда этот комментарий прилип
Аватара пользователя
Ilich
Рядовой
Сообщения: 55
Зарегистрирован: 12 авг 2024, 11:56
Имя: Игорь
Благодарил (а): 16 раз
Поблагодарили: 27 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Ilich »

Здравствуйте, Анатолий!
Еще раз благодарю Вас за столь полезную и нужную утилиту!
Но в процессе тестирования выявились некоторые нюансы -
1. Под Вин-7 программа не запускается, постоянно требует системные библиотеки. Поставишь одну, требует следующую и т.д.
под Вин-10 запускается и работает.
2. Созданный с помощью данной утилиты блок в версии FlProg 7.3.8 обрушивает программу (в принципе понятно, несовместим).
В 9.6.4 нормально.
3. Для тестирования был выбран скетч TFT_Clock из папки примеров библиотеки TFT_eSPI. Выяснилось следующее - пробный пустой проект с этим блоком не компилируется, множественные сообщения об ошибках. Если сброшена галочка "Разрешено использовать один раз" компиляция обрывается с подобной ошибкой - include/SPI.h>_145411080_: Invalid argument

Ошибка:
err_1.jpg
Тот же скетч, загруженный напрямую в IDE компилируется и исполняется нормально.
P.S. Насчет определения библиотек понял - их нельзя размещать в блоках, которые могут использоваться неоднократно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

Ilich писал(а): 31 янв 2026, 18:38 Тот же скетч, загруженный напрямую в IDE компилируется и исполняется нормально.
P.S. Насчет определения библиотек понял - их нельзя размещать в блоках, которые могут использоваться неоднократно.
Понял где ошибка, в следующей версии исправлю
AndreyR
Рядовой
Сообщения: 13
Зарегистрирован: 04 фев 2022, 20:05
Имя: Андрей
Благодарил (а): 1 раз
Поблагодарили: 5 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение AndreyR »

Встала задача сделать блок для емкостной клавы MKM V3.0 работает по I2c в отличии от псевдо TTP 229
Взял Perplexity скормил ему библиотеку и указал на FlProg все сделал за минуту при чем он сам расписал отдельно все пункты
Declare Setup Loop
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

Вышло обновление v1.5
vitalik9
Рядовой
Сообщения: 52
Зарегистрирован: 22 авг 2021, 12:08
Имя: Виталий
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение vitalik9 »

скачивая архив v1.5 в архиве нет файла exe
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Phazz
Полковник
Сообщения: 3514
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 377 раз
Поблагодарили: 261 раз

Re: ino2ubi - утилита автоматического преобразования кода в пользовательский блок

Сообщение Phazz »

vitalik9 писал(а): 01 фев 2026, 13:41 скачивая архив v1.5 в архиве нет файла exe
исправил
Ответить

Вернуться в «Электронщикам - Непрограммистам»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость