Создание пользовательского блока (Code-Basic) простым языком.

Статистический опрос.

Мне помогла эта тема разобраться с созданием ПБ.
36
60%
Я уже умел создавать ПБ, но нашел в теме что то новое для себя.
17
28%
Я умею создавать ПБ, ничего нового, но считаю тему полезной.
3
5%
Тема прикольная, но особой пользы от нее я не вижу.
1
2%
Полный бред. Прорабы какие то, квартиранты. Чушь.
3
5%
 
Всего голосов: 60

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Создание пользовательского блока (CODE) простым языком.

Сообщение edyapd »

[ref=#ff8000]Sancho[/ref], [ref]Ivan_Kornege[/ref], выложил ЗДЕСЬ пример, того как делаю я. В блоке Main есть и условная компиляция. Может сделано всё по дилетантски и не правильно, но оно работает.
Ivan_Kornege писал(а): 11 дек 2019, 13:42поэтому смотрю наезжаешь на тех кто знает

Маленько не правильно интерпретировали слова. Главный упор был на то, что приходится экспериментировать.
Я не знаю как делать правильно, в отличии от вас. И если программа мне светит красным, я начинаю делать по другому.
Вы знаете и поэтому требуете от автора изменить программу. В этом наша разница.
destine
Рядовой
Сообщения: 15
Зарегистрирован: 26 фев 2019, 19:24
Имя: Вадим

Создание пользовательского блока (CODE) простым языком.

Сообщение destine »

Тему нужно переименовать ... "на обучение языку С++ простым языком на аналогиях" . Потому что название темы не соответствует действительности .
EgorKa
Сержант
Сообщения: 217
Зарегистрирован: 09 мар 2019, 17:49
Имя: Egor

Создание пользовательского блока (CODE) простым языком.

Сообщение EgorKa »

destine писал(а): 10 июл 2020, 23:15 Тему нужно переименовать ... "на обучение языку С++ простым языком на аналогиях" . Потому что название темы не соответствует действительности .
Тема правильная. Или знаете другой метод создания ПБ.
Не изучите чтение кода на языке программирования = ПБ создавать не сможете. Остается пользоваться альтруизмом автора и присутствующих на форуме.
MaksVish
Рядовой
Сообщения: 91
Зарегистрирован: 14 июл 2018, 19:09
Имя: Максим

Создание пользовательского блока (CODE) простым языком.

Сообщение MaksVish »

Здравствуйте! Прочитав данное пособие по созданию ПБ, в качестве тренировки попробовал сделать простенький блок! В итоге блок на плате не корректный! Можете подсказать что не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение rw6cm »

MaksVish писал(а): 16 фев 2021, 00:47 Можете подсказать что не так?
Когда копируете код от куда то, старайтесь не цеплять лишнего.
В данном случае в деклар занесли системный символ Non-breaking space(неразрывный пробел).
его не видно но он есть ))
Пульсирующий светодиод1.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

Создание пользовательского блока (CODE) простым языком.

Сообщение Naladchik »

MaksVish писал(а): 16 фев 2021, 00:47 Можете подсказать что не так?
[spoiler]
111.png
[/spoiler]

И рекомендация в догонку.
Имена входам, переменным и т.д. старайтесь давать уникальные, у Вас блок PulsLed, значит вход пусть будет не En а что то типа En_PL, переменная не brightness а brightness_PL и т.д.
Иначе может быть ситуация, когда создадите блок, который в проекте может использоваться только один раз, и начнутся конфликты имен с имеющимися в других блоках или библиотеках.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение rw6cm »

Naladchik писал(а): 16 фев 2021, 08:43Спойлер
Там могут быть и обычные пробелы.
а символ скрываться внутри кода.
Это своеобразные подарки любителям копипастить :)
Win10-64, FLProg (portable)
MaksVish
Рядовой
Сообщения: 91
Зарегистрирован: 14 июл 2018, 19:09
Имя: Максим

Создание пользовательского блока (CODE) простым языком.

Сообщение MaksVish »

Спасибо большое! Точно есть лишний символ! Ура, теперь плата светится зеленым!

Отправлено спустя 6 минут 13 секунд:
На счет имен понял, буду учитывать! Спасибо!
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение SergeyShikal »

Здравствуйте, начал изучать создание пб из кода и завис, не могу понять как назначить выход. Внутри блока выход есть и он работает, а пытаешься создать на блоке выход не компилируется иде
Сос.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение Dryundel »

SergeyShikal писал(а): 22 сен 2021, 18:10 Здравствуйте, начал изучать создание пб из кода и завис...
При создании простого блока, если нет особой необходимости напрямую указывать пин подключения, не надо ничего инициализировать.
Вот это совсем лишнее.
pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода.
.
Вам надо использовать тег входа и выхода блока в секции Loop, что Вы прекрасно и сделали вставив if (en_sos) .
А вместо
digitalWrite(led_pin, HIGH);// зажигаем светодиод
Создаете выход блока типа Vihod и пишете типа.
Vihod = 1;
или
Vihod = 0;

Вы же хотите что бы у блока был выход?
Ну как то так...

Отправлено спустя 5 минут 40 секунд:
[ref]SergeyShikal[/ref],
Да и вообще, не берите таких сложных для новичка примеров с циклами.
В помощь по изучению С++ есть отличный сайт AlexGyver

Отправлено спустя 7 минут 56 секунд:
И еще. Начните пожалуй с этого. Функции времени
delay() - это первый враг FLProg !
Блоки с этой функцией сразу убьют ваш проект, да и желание влезать в редактор блоков.
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

Создание пользовательского блока (CODE) простым языком.

Сообщение Rovki »

[ref]Dryundel[/ref], Ваш в клад в это количество 1.11% :smile9:
Электронщик до мозга костей и не только
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение SergeyShikal »

Dryundel писал(а): 22 сен 2021, 18:38Vihod = 1;
Спасибо,с самим кодом что да как работает будем разбираться позже, сейчас хочу понять как создать блок из готового кода. Все равно что то делаю не так, ошибка та же [spoiler]
bool en_sos_228070441_1;
bool Vihod _228070441_1;
bool _bounseInputD3S = 0;
bool _bounseInputD3O = 0;
unsigned long _bounseInputD3P = 0UL;
void setup()
{
pinMode(3, INPUT_PULLUP);
pinMode(13, OUTPUT);
digitalWrite(13, 0);
_bounseInputD3O = digitalRead(3);
}
void loop()
{
bool _bounceInputTmpD3 = (digitalRead (3));
if (_bounseInputD3S)
{
if (millis() >= (_bounseInputD3P + 40))
{
_bounseInputD3O= _bounceInputTmpD3;
_bounseInputD3S=0;
}
}
else
{
if (_bounceInputTmpD3 != _bounseInputD3O)
{
_bounseInputD3S=1;
_bounseInputD3P = millis();
}
}
//Плата:1
en_sos_228070441_1 = !(_bounseInputD3O);
if (en_sos_228070441_1)
{
for (int x=0; x<3; x++)
{
Vihod _228070441_1= 1; // зажигаем светодиод
delay(250); // ждем 350 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
delay(300);
for (int x=0; x<3; x++)
{
digitalWrite(led_pin, HIGH); // зажигаем светодиод
delay(500); // ждем 750 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
delay(300);
for (int x=0; x<3; x++)
{
digitalWrite(led_pin, HIGH); // зажигаем светодиод
delay(250); // ждем 350 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
digitalWrite(13, Vihod _228070441_1);
}
} [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение Dryundel »

[ref]SergeyShikal[/ref], Вы выбрали неудачный пример для изучения. Без минимальных знаний основ программирования из него сложно сделать полноценный блок.
Ну хорошо, давайте исходный скетч, будем разбирать по косточкам.
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение SergeyShikal »

Dryundel писал(а): 23 сен 2021, 08:37 [ref]SergeyShikal[/ref], Вы выбрали неудачный пример для изучения. Без минимальных знаний основ программирования из него сложно сделать полноценный блок.
Ну хорошо, давайте исходный скетч, будем разбирать по косточкам.
[spoiler]<code>int led_pin=3; // пин подключения
void setup() {
pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода.
}
void loop() {
for (int x=0; x<3; x++) {
digitalWrite(led_pin, HIGH);// зажигаем светодиод
delay(250); // ждем 350 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
delay(300);
for (int x=0; x<3; x++) {
digitalWrite(led_pin, HIGH);// зажигаем светодиод
delay(500); // ждем 700 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
delay(300);
for (int x=0; x<3; x++) {
digitalWrite(led_pin, HIGH);// зажигаем светодиод
delay(250); // ждем 350 милисекунд
digitalWrite(led_pin, LOW); // выключаем светодиод
delay(100); // ждем 300 милисекунд
}
delay(5000); // ждем 5 секунд
}[/spoiler]
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Создание пользовательского блока (CODE) простым языком.

Сообщение Sancho »

[ref]SergeyShikal[/ref], Опишите алгоритм работы блока - что есть в коде не всегда хорошо.
Dryundel писал(а): 22 сен 2021, 18:38 delay() - это первый враг FLProg !
и не только.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение SergeyShikal »

Sancho писал(а): 23 сен 2021, 10:57 [ref]SergeyShikal[/ref], Опишите алгоритм работы блока - что есть в коде не всегда хорошо.
Dryundel писал(а): 22 сен 2021, 18:38 delay() - это первый враг FLProg !
и не только.
Взято от сюда https://portal-pk.ru/news/54-urok-4---s ... duino.html
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Создание пользовательского блока (CODE) простым языком.

Сообщение Dryundel »

Qwert855
Сержант
Сообщения: 159
Зарегистрирован: 19 дек 2020, 23:57
Имя: Alex

Создание пользовательского блока (Code-Basic) простым языком.

Сообщение Qwert855 »

Добрый день.
подскажите как можно внести изменения в ПБ что бы менять имена классов (если правильно понял Adafruit_NeoPixel.h)

Для примера.
необходимо запустить адресный лед с двух пинов.
Как сделать это в коде понятно, и способ работает.

Код: Выделить всё

#include <Adafruit_NeoPixel.h>
bool en;
int num_led;
int led_1r;
int led_1g;
int led_1b;
bool en;
int num_led;
int led_1r;
int led_1g;
int led_1b;
Adafruit_NeoPixel pixels1= Adafruit_NeoPixel(5 ,   7 , NEO_GRB + NEO_KHZ800); //first number change does distance between colors
Adafruit_NeoPixel pixels2= Adafruit_NeoPixel(4 ,   8 , NEO_GRB + NEO_KHZ800); //first number change does distance between colors

void setup()
{
        
    pixels1.begin();
    pixels1.show(); // Устанавливаем все светодиоды в состояние "Выключено"
    pixels2.begin();
    pixels2.show(); // Устанавливаем все светодиоды в состояние "Выключено"
   
}
void loop()
{
    //Плата:2
   
    en = !(0);
    num_led = 3;
    led_1r = 80;
    led_1g = 0;
    led_1b = 0;
    
    if (en   == 1)
    {
        pixels1.setPixelColor (num_led -1, pixels1.Color(led_1r  ,  led_1g  ,  led_1b));
        pixels1.show();
    }
    else
    {
        pixels1.setPixelColor (num_led -1, pixels1.Color(0 , 0  ,  0));
       pixels1.show();
    }
    ;
   
    en = !(0);
    num_led = 2;
    led_1r = 0;
    led_1g = 80;
    led_1b = 0;
    
    if (en   == 1)
    {
        pixels2.setPixelColor (num_led -1, pixels2.Color(led_1r  ,  led_1g  ,  led_1b));
        pixels2.show();
    }
    else
    {
        pixels2.setPixelColor (num_led -1, pixels2.Color(0 , 0  ,  0));
        pixels2.show();
    }
    ;
}
т.е.
как в таких случаях добавить возможность вносить изменения через блоки?
может объединить блок декларации и функции и разделить их по экземплярам но это не удобно.

Adafruit_NeoPixel pixels1= Adafruit_NeoPixel(5 , 7 , NEO_GRB + NEO_KHZ800);

pixels1.setPixelColor (num_led -1, pixels1.Color(led_1r , led_1g , led_1b));
pixels1.show();
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

Создание пользовательского блока (Code-Basic) простым языком.

Сообщение aidar_i »

Qwert855 писал(а): 09 дек 2021, 15:08 как в таких случаях добавить возможность вносить изменения через блоки?
Создаёте главный блок, там общие настройки, остальное в блоке экземпляра.
Последний раз редактировалось aidar_i 09 дек 2021, 17:37, всего редактировалось 1 раз.
Qwert855
Сержант
Сообщения: 159
Зарегистрирован: 19 дек 2020, 23:57
Имя: Alex

Создание пользовательского блока (Code-Basic) простым языком.

Сообщение Qwert855 »

Т.е только через "новый" редактор?
Ответить

Вернуться в «Обучающие примеры работы в FLProg»

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

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