Страница 1 из 1
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 14:23
slavas
Здравствуйте уважаемые коллеги, решил нарисовать себе блок для усыпления и последующего пробуждения по прерыванию. Рукописный скетч работает без проблем но в редакторе не могу вставить обработчик прерываний
void isr()
{
}
эти строчки должны быть между setup b loop
заранее благодарю.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 14:42
Naladchik
slavas писал(а): 14 окт 2021, 14:23
...эти строчки должны быть между setup b loop...
Вот вообще не факт. В данном случае Вы просто объявляете функцию, и где Вы расположите ее код - большого значения не имеет, лишь бы не внутри секций setup и loop, так как это тоже функции.
Вообще считается правильным размещение функции в секции Declare, но можно ее разместить и в секции Function, компилятор проглатывает.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 15:15
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 секунд, но можем проснуться по кнопке
}
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 16:01
Naladchik
slavas писал(а): 14 окт 2021, 15:15
в редакторе ругается
ничего не ругается
[spoiler]
1.png
[/spoiler]
P.S.
Вы бы, для порядка, приложили бы свой проект с Вашим блоком, тогда и было бы что обсуждать.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 16:41
slavas
Спасибо огромное! я в функции пытался со скобками записать
Спасибо!
Отправлено спустя 24 минуты 53 секунды:
Проекта как такового нет просто решил поиграть с библиотекой от Gayvera
библиотеки
и заодно научиться профессиональные блоки рисовать.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 17:11
Naladchik
[ref]slavas[/ref],
То, что Вы нарисовали это просто кошмар.
Ваш блок должен был выглядеть примерно так:
GyverPower_sleep_(Code_-_Professional).ubi
!!!это только пример, работоспособность не проверялась!!!
А тем, кто скачал блок из предыдущего сообщения - прошу удалить, так как он только демонстрационный и может работать только при задании в блоке пина D3 (номер пина и номер прерывания разные вещи).
Советую почитать
https://alexgyver.ru/lessons/interrupts/
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 18:39
slavas
[ref]Naladchik[/ref], да это и не блок в принципе это проба пера, я просто хотел понять как в код вставить функцию пока Вы не показали. Что касается прерываний это понятно, у MEGA 328 например это пины 2 и 3 прерывания 0 и 1 соответственно, у других контроллеров они другие. Была мысль сделать выбор прерывания в параметрах для этого буду учиться собирать профессиональные блоки.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 18:51
Naladchik
slavas писал(а): 14 окт 2021, 18:39
...Была мысль сделать выбор прерывания в параметрах...
Посмотрите как это реализовано в том, что я выложил (в новом редакторе).
Отправлено спустя 7 минут 13 секунд:
[ref]slavas[/ref],
Главная Ваша ошибка при создании блока в новом редакторе заключалась в том, что те ветки кода, которые должны быть в
экземпляре блока Вы разместили в общих ветках.
как в блоке разместить void isr() { }
Добавлено: 14 окт 2021, 19:20
slavas
[ref]Naladchik[/ref], Всё супер Ваш блок на примере показывает как собирать П блоки на новом редакторе. Спасибо.