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

Нужна ли статья про Редактор Code-Professional?

Да, очень нужна!
45
73%
Интересно было бы знать.
15
24%
Мне хватает редактора Code-Basiс.
1
2%
Не пользуюсь редактором вообще.
1
2%
 
Всего голосов: 62

Anydy

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

#21

Сообщение Anydy » 29.09.2021{, 23:59}

Еще одно мнение - setup() само по себе зло почти всегда (если только для присвоения констант) - создает проблемы при реализации управляемого программного сброса проекта.
И delay() всегда зло. Иногда приходиться использовать delayMicroseconds(x), где x не более 100.
как Setup() Может быть злом?? к примеру Sim 800 пока иницалируеся в сети .......пока подключится к сети......пока уставит GPRS соединение
Ардуинка не должна стартовать ....как это сделать без сетап?
Авот в цикле....и в фуyкциях однозначно использовать millis()

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 773
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#22

Сообщение Dryundel » 30.09.2021{, 00:17}

Anydy, я думаю что ecoins имеет ввиду то, что иногда настройки требуется делать по "ходу пьесы" и запускать их в Loop по какому то флагу. А вот некоторые библиотечные дефайны надо запускать до подключения библиотеки, что в Loop уже не получается, ибо нужная часть либы уже скомпилирована. :) Ну или что то в этом роде.

Anydy

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

#23

Сообщение Anydy » 30.09.2021{, 03:23}

Есть же радел Declare ....там указываем нужные библиотеки ...и не только....далее в сетап инициализирум свои устройсва.....ждем чтобы они заработали...и только после этого запускаем МК..что не так то?
Простите за ошибки......инфа для новичков!

Отправлено спустя 6 минут 36 секунд:
Dryundel писал(а):
30.09.2021{, 00:17}
Anydy, я думаю что ecoins имеет ввиду то, что иногда настройки требуется делать по "ходу пьесы" и запускать их в Loop по какому то флагу. А вот некоторые библиотечные дефайны надо запускать до подключения библиотеки, что в Loop уже не получается, ибо нужная часть либы уже скомпилирована. Ну или что то в этом роде.
не понял как настройки устройств которые в сетп можно изменить в цикле? параметры да можно

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 773
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#24

Сообщение Dryundel » 30.09.2021{, 07:18}

Anydy писал(а):
30.09.2021{, 03:29}
не понял как настройки устройств которые в сетп можно изменить в цикле?
Да запросто. Какая разница от куда их менять. Но да, не все и не всегда, можно изменять из Loop.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 589
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#25

Сообщение Sancho » 30.09.2021{, 08:27}

ecoins писал(а):
27.09.2021{, 18:25}
Еще одно мнение - setup() само по себе зло почти всегда (если только для присвоения констант) - создает проблемы при реализации управляемого программного сброса проекта.
вопрос очень интересный, но немного не понятный без примера.
Создаём хедер, туда всё необходимое, возможно в виде функций, прикрепляем - всё в Ваших руках.
Anydy писал(а):
29.09.2021{, 23:59}
как Setup() Может быть злом?? к примеру Sim 800 пока иницалируеся в сети .......пока подключится к сети......пока уставит GPRS соединение
Ардуинка не должна стартовать ....как это сделать без сетап?
В моих проектах ардуино стартует сразу, а уже в теле loop подымается соединение через gprs, по tcp. Смысла ждать чего-то нет. Дело нужно делать :)

Отправлено спустя 1 минуту 33 секунды:
Для sim800 delay не используется, от слова совсем.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

ecoins
Полковник
Сообщения: 2615
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 414
Откуда: Шатура
Имя: Энвер

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

#26

Сообщение ecoins » 30.09.2021{, 09:53}

Sancho писал(а):
30.09.2021{, 08:29}
В моих проектах ардуино стартует сразу, а уже в теле loop подымается соединение через gprs, по tcp. Смысла ждать чего-то нет. Дело нужно делать

Отправлено спустя 1 минуту 33 секунды:
Для sim800 delay не используется, от слова совсем.
Все хорошо изложено.

Anydy

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

#27

Сообщение Anydy » 30.09.2021{, 15:52}

Зачем тогда в С++ придумали фунцию Делай? Осложнить работу прогррамистов?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 773
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#28

Сообщение Dryundel » 30.09.2021{, 16:30}

Anydy писал(а):
30.09.2021{, 15:52}
Зачем тогда в С++ придумали фунцию Делай? Осложнить работу прогррамистов?
Наверное потому, что это например простой способ сделать элементарный командоаппарат.
Ну и в учебных целях тоже хорошо.

Мало того, позже придумали и костыль к delay(), так называемый yield(). В простых случаях работает. :)

Naladchik
Капитан
Сообщения: 759
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 132
Откуда: Новосибирск
Имя: Павел

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

#29

Сообщение Naladchik » 30.09.2021{, 19:38}

По поводу delay() и yield() для ESP интересная информация
"... delay() - это задержка для ВАШЕЙ ПРОГРАММЫ, для есп это время обработки WiFi..."
https://esp8266.ru/forum/threads/funkcija-yield.2369/
Win10-64. FLProg Portable.
Изображение

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

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

#30

Сообщение sergserg » 04.12.2021{, 20:39}

Dryndel писал(а):
04.12.2021{, 20:20}
В простых случаях работает
да ладно :D
ну-ка пруфов накидайте-ка с yield()

Отправлено спустя 2 минуты 48 секунд:
*подскажу: возьмите для примера распространенный тут блок ping.v.1.1

ARTEMM
Рядовой
Сообщения: 37
Зарегистрирован: 05.05.2021{, 21:31}
Репутация: 0
Имя: Артём

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

#31

Сообщение ARTEMM » 15.07.2023{, 13:21}

помогите с созданием блока пытаюсь сделать подобие штатного блока генератора только на прерываниях код компилируетса нормально а когда код вставил в блок то при компиляции ошибки
Вложения
генератор_32_(Code_-_Basic).ubi
(34.75 КБ) 9 скачиваний

Naladchik
Капитан
Сообщения: 759
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 132
Откуда: Новосибирск
Имя: Павел

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

#32

Сообщение Naladchik » 16.07.2023{, 21:59}

ARTEMM писал(а):
15.07.2023{, 13:21}
... а когда код вставил в блок ...
Вот исходный код тоже надо прикладывать, тогда шансы получить помощь гораздо выше.
Win10-64. FLProg Portable.
Изображение

ARTEMM
Рядовой
Сообщения: 37
Зарегистрирован: 05.05.2021{, 21:31}
Репутация: 0
Имя: Артём

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

#33

Сообщение ARTEMM » 17.07.2023{, 08:02}

вот исходный скетч

Отправлено спустя 6 минут 56 секунд:
#include <Arduino.h>
#include "esp32-hal-timer.h"

const int outputPin = 27; // Пин для вывода сигнала

hw_timer_t *timer = NULL;
volatile int pulseWidth = 1000; // Длительность импульса в микросекундах
volatile int pauseWidth = 1000; // Длительность паузы в микросекундах
volatile bool pulseState = false;

void IRAM_ATTR timerISR();

void setup() {
pinMode(outputPin, OUTPUT);

timer = timerBegin(0, 80, true); // Используем таймер 0 с делителем на 80
timerAttachInterrupt(timer, &timerISR, true); // Привязываем прерывание к функции timerISR
timerAlarmWrite(timer, pulseWidth, true); // Устанавливаем период таймера равный длительности импульса
timerAlarmEnable(timer); // Включаем таймер
}

void loop() {
// Чтение значений с регуляторов или других источников для установки новых значений pulseWidth и pauseWidth
}

void IRAM_ATTR timerISR() {
pulseState = !pulseState; // Инвертируем состояние импульса

if (pulseState) {
digitalWrite(outputPin, HIGH); // Включаем вывод на пин
timerAlarmWrite(timer, pulseWidth, true); // Устанавливаем период таймера равный длительности импульса
} else {
digitalWrite(outputPin, LOW); // Выключаем вывод на пин
timerAlarmWrite(timer, pauseWidth, true); // Устанавливаем период таймера равный длительности паузы
}
}

Naladchik
Капитан
Сообщения: 759
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 132
Откуда: Новосибирск
Имя: Павел

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

#34

Сообщение Naladchik » 17.07.2023{, 12:43}

ARTEMM писал(а):
15.07.2023{, 13:21}
код вставил в блок
генератор_32_0(Code_-_Basic).ubi
(22.67 КБ) 6 скачиваний
Компилируется. Допиливайте под себя.
Win10-64. FLProg Portable.
Изображение

ARTEMM
Рядовой
Сообщения: 37
Зарегистрирован: 05.05.2021{, 21:31}
Репутация: 0
Имя: Артём

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

#35

Сообщение ARTEMM » 18.07.2023{, 07:29}

Спасибо за помощь грузится без ошибок буду разбираться дальше только не могу разобраться FL prog ругается на то что не найдена библиотека хотя библиотеку установил а arduino при загрузке не возмущается на отсутствие библиотеки

Отправлено спустя 2 минуты 16 секунд:
include "esp32-hal-timer.h FL prog возмущается на отсутствие этой библиотеки хотя её установил

Naladchik
Капитан
Сообщения: 759
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 132
Откуда: Новосибирск
Имя: Павел

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

#36

Сообщение Naladchik » 18.07.2023{, 08:48}

ARTEMM писал(а):
18.07.2023{, 07:31}
FL prog ругается на то что не найдена библиотека
у меня не ругается, так что как с этим бороться - не знаю
Win10-64. FLProg Portable.
Изображение

aidar_i
Полковник
Сообщения: 2920
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 621
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#37

Сообщение aidar_i » 18.07.2023{, 09:47}

Naladchik писал(а):
18.07.2023{, 08:48}
include "esp32-hal-timer.h FL prog возмущается на отсутствие этой библиотеки хотя её установил
Не обращайте внимания на это. Просто не в ту папку установили его. Но это не мешает работе Ардуино Иде.

Ответить

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