как в блоке разместить void isr() { }

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

Сообщение slavas »

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

как в блоке разместить void isr() { }

Сообщение Naladchik »

slavas писал(а): 14 окт 2021, 14:23 ...эти строчки должны быть между setup b loop...
Вот вообще не факт. В данном случае Вы просто объявляете функцию, и где Вы расположите ее код - большого значения не имеет, лишь бы не внутри секций setup и loop, так как это тоже функции.
Вообще считается правильным размещение функции в секции Declare, но можно ее разместить и в секции Function, компилятор проглатывает.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

Сообщение slavas »

в редакторе ругается

Отправлено спустя 6 минут 11 секунд:
Текст который я хочу получить

#include <GyverPower.h>
bool en_37325871_1;
void setup()
{
pinMode(3, INPUT_PULLUP); // кнопка подключена к GND и D3
attachInterrupt(1, isr, FALLING); // подключаем прерывание на пин D3 (Arduino NANO)
power.setSleepMode(POWERDOWN_SLEEP); // глубокий сон
}

void isr()
{
}

void loop()
{
//Плата:1
en_37325871_1 = !(0);
if (en_37325871_1 ==1)
power.sleep(SLEEP_8192MS); // спим ~8 секунд, но можем проснуться по кнопке
}
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

как в блоке разместить void isr() { }

Сообщение Naladchik »

slavas писал(а): 14 окт 2021, 15:15 в редакторе ругается
ничего не ругается

[spoiler]
1.png
[/spoiler]

P.S.
Вы бы, для порядка, приложили бы свой проект с Вашим блоком, тогда и было бы что обсуждать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Naladchik 14 окт 2021, 17:06, всего редактировалось 1 раз.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

Сообщение slavas »

Спасибо огромное! я в функции пытался со скобками записать
Спасибо!

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

как в блоке разместить void isr() { }

Сообщение Naladchik »

[ref]slavas[/ref],
То, что Вы нарисовали это просто кошмар.
Ваш блок должен был выглядеть примерно так:
GyverPower_sleep_(Code_-_Professional).ubi
!!!это только пример, работоспособность не проверялась!!!
А тем, кто скачал блок из предыдущего сообщения - прошу удалить, так как он только демонстрационный и может работать только при задании в блоке пина D3 (номер пина и номер прерывания разные вещи).
Советую почитать https://alexgyver.ru/lessons/interrupts/
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Naladchik 14 окт 2021, 19:26, всего редактировалось 2 раза.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

Сообщение slavas »

[ref]Naladchik[/ref], да это и не блок в принципе это проба пера, я просто хотел понять как в код вставить функцию пока Вы не показали. Что касается прерываний это понятно, у MEGA 328 например это пины 2 и 3 прерывания 0 и 1 соответственно, у других контроллеров они другие. Была мысль сделать выбор прерывания в параметрах для этого буду учиться собирать профессиональные блоки.
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

как в блоке разместить void isr() { }

Сообщение Naladchik »

slavas писал(а): 14 окт 2021, 18:39 ...Была мысль сделать выбор прерывания в параметрах...
Посмотрите как это реализовано в том, что я выложил (в новом редакторе).

Отправлено спустя 7 минут 13 секунд:
[ref]slavas[/ref],
Главная Ваша ошибка при создании блока в новом редакторе заключалась в том, что те ветки кода, которые должны быть в экземпляре блока Вы разместили в общих ветках.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
slavas
Лейтенант
Сообщения: 596
Зарегистрирован: 14 сен 2015, 22:29
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

Сообщение slavas »

[ref]Naladchik[/ref], Всё супер Ваш блок на примере показывает как собирать П блоки на новом редакторе. Спасибо.
Ответить

Вернуться в «Разработка пользовательских блоков»

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

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