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

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

Да, очень нужна!
66
78%
Интересно было бы знать.
17
20%
Мне хватает редактора Code-Basiс.
1
1%
Не пользуюсь редактором вообще.
1
1%
 
Всего голосов: 85

Anydy

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

Сообщение Anydy »

Еще одно мнение - setup() само по себе зло почти всегда (если только для присвоения констант) - создает проблемы при реализации управляемого программного сброса проекта.
И delay() всегда зло. Иногда приходиться использовать delayMicroseconds(x), где x не более 100.
как Setup() Может быть злом?? к примеру Sim 800 пока иницалируеся в сети .......пока подключится к сети......пока уставит GPRS соединение
Ардуинка не должна стартовать ....как это сделать без сетап?
Авот в цикле....и в фуyкциях однозначно использовать millis()
Аватара пользователя
Dryundel
Полковник
Сообщения: 2431
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

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

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

Сообщение Anydy »

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

Отправлено спустя 6 минут 36 секунд:
Dryundel писал(а): 30 сен 2021, 00:17 Anydy, я думаю что ecoins имеет ввиду то, что иногда настройки требуется делать по "ходу пьесы" и запускать их в Loop по какому то флагу. А вот некоторые библиотечные дефайны надо запускать до подключения библиотеки, что в Loop уже не получается, ибо нужная часть либы уже скомпилирована. Ну или что то в этом роде.
не понял как настройки устройств которые в сетп можно изменить в цикле? параметры да можно
Аватара пользователя
Dryundel
Полковник
Сообщения: 2431
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

Anydy писал(а): 30 сен 2021, 03:29 не понял как настройки устройств которые в сетп можно изменить в цикле?
Да запросто. Какая разница от куда их менять. Но да, не все и не всегда, можно изменять из Loop.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Отправлено спустя 1 минуту 33 секунды:
Для sim800 delay не используется, от слова совсем.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
ecoins
Полковник
Сообщения: 4007
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

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

Сообщение ecoins »

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

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

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

Сообщение Anydy »

Зачем тогда в С++ придумали фунцию Делай? Осложнить работу прогррамистов?
Аватара пользователя
Dryundel
Полковник
Сообщения: 2431
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

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

Мало того, позже придумали и костыль к delay(), так называемый yield(). В простых случаях работает. :)
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

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

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

Сообщение sergserg »

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

Отправлено спустя 2 минуты 48 секунд:
*подскажу: возьмите для примера распространенный тут блок ping.v.1.1
ARTEMM
Рядовой
Сообщения: 50
Зарегистрирован: 05 май 2021, 21:31
Имя: Артём

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

Сообщение ARTEMM »

помогите с созданием блока пытаюсь сделать подобие штатного блока генератора только на прерываниях код компилируетса нормально а когда код вставил в блок то при компиляции ошибки
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

ARTEMM писал(а): 15 июл 2023, 13:21 ... а когда код вставил в блок ...
Вот исходный код тоже надо прикладывать, тогда шансы получить помощь гораздо выше.
Win10-64. FLProg Portable.
Изображение
ARTEMM
Рядовой
Сообщения: 50
Зарегистрирован: 05 май 2021, 21:31
Имя: Артём

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

Сообщение ARTEMM »

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

Отправлено спустя 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
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

ARTEMM писал(а): 15 июл 2023, 13:21 код вставил в блок
генератор_32_0(Code_-_Basic).ubi
Компилируется. Допиливайте под себя.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
ARTEMM
Рядовой
Сообщения: 50
Зарегистрирован: 05 май 2021, 21:31
Имя: Артём

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

Сообщение ARTEMM »

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

Отправлено спустя 2 минуты 16 секунд:
include "esp32-hal-timer.h FL prog возмущается на отсутствие этой библиотеки хотя её установил
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

ARTEMM писал(а): 18 июл 2023, 07:31 FL prog ругается на то что не найдена библиотека
у меня не ругается, так что как с этим бороться - не знаю
Win10-64. FLProg Portable.
Изображение
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Naladchik писал(а): 18 июл 2023, 08:48 include "esp32-hal-timer.h FL prog возмущается на отсутствие этой библиотеки хотя её установил
Не обращайте внимания на это. Просто не в ту папку установили его. Но это не мешает работе Ардуино Иде.
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

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

Сообщение SergeyShikal »

Пытаюсь создать ПБ из тестового примера для aht20+bmp280 столкнулся с проблемой инициализации шины I2C, что не правильно сделал?
2.flp
[spoiler]
2.png
[/spoiler][spoiler]
3.png
[/spoiler]
сам пример
[scroll]#include <Wire.h>
#include <AHT20.h>
AHT20 aht20;

void setup()
{
Serial.begin(115200);
Serial.println("Humidity AHT20 examples");

Wire.begin(); //Join I2C bus
//Check if the AHT20 will acknowledge
if (aht20.begin() == false)
{
Serial.println("AHT20 not detected. Please check wiring. Freezing.");
while (1);
}
Serial.println("AHT20 acknowledged.");
}

void loop()
{
//If a new measurement is available
if (aht20.available() == true)
{
//Get the new temperature and humidity value
float temperature = aht20.getTemperature();
float humidity = aht20.getHumidity();

//Print the results
Serial.print("Temperature: ");
Serial.print(temperature, 2);
Serial.print(" C\t");
Serial.print("Humidity: ");
Serial.print(humidity, 2);
Serial.print("% RH");

Serial.println();
}

//The AHT20 can respond with a reading every ~50ms. However, increased read time can cause the IC to heat around 1.0C above ambient.
//The datasheet recommends reading every 2 seconds.
delay(2000);
}[/scroll]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ivansidor012
Лейтенант
Сообщения: 310
Зарегистрирован: 10 сен 2020, 14:37
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 5 раз

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

Сообщение ivansidor012 »

[ref]SergeyShikal[/ref],
у тебя в скетче Wire.begin();

а ты в блоке как написал?)

Отправлено спустя 3 минуты 48 секунд:
и у тебя в loop будет опрос датчика в каждом цикле - так нельзя.

создай bool вход, обзови его например "my_in_test", и в редакторе в секции loop напиши

if (my_in_test) {
а вот тут уже код опроса вставляй
}

после этого появится вход на блоке с этим именем, цепляй его через R-триггер и опрашивай когда необходимо
Аватара пользователя
SergeyShikal
Лейтенант
Сообщения: 593
Зарегистрирован: 30 авг 2018, 17:15
Откуда: Иркутская область
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 1 раз

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

Сообщение SergeyShikal »

ivansidor012 писал(а): 29 мар 2024, 18:25 [ref]SergeyShikal[/ref],
у тебя в скетче Wire.begin();

а ты в блоке как написал?)

Отправлено спустя 3 минуты 48 секунд:
и у тебя в loop будет опрос датчика в каждом цикле - так нельзя.

создай bool вход, обзови его например "my_in_test", и в редакторе в секции loop напиши

if (my_in_test) {
а вот тут уже код опроса вставляй
}

после этого появится вход на блоке с этим именем, цепляй его через R-триггер и опрашивай когда необходимо
Не работает ни так, ни как в тесте, в пб сейчас сделано как в блоке на бме280.
Ответить

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

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

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