Вопрос по созданию блока

На этом форуме Вы можете задать вопросы знатокам программы и автору.
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#1

Сообщение seri0shka » 12.11.2017{, 21:35}

Как сделать блок, который работал бы только в момент подачи питания на ардуино? Есть устройство с несколькими режимами работы (три режима в зависимости от напряжения на аналоговом входе, считай "джампер"). Сейчас опрос происходит постоянно в цикле и все функции выполняются как положено. Но хочется оптимизировать, чтоб не отвлекалось на лишнее.
 И, кстати, можно ли в void setup() вставить
if((analogRead (0))... 
и т.д.?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#2

Сообщение pan » 12.11.2017{, 21:51}

seri0shka писал(а):Как сделать блок, который работал бы только в момент подачи
 создаете некую переменную, например Х и даете некое значение по умолчанию
Изображение

 затем в её свойствах включаете выполнение по условию

Изображение

делаете нужный код па плате, и в конце например обнуляете переменную.

Изображение

больше эта плата выполняться не будет.
если понадобится ее запустить , делаете переменную Х = 1

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#3

Сообщение seri0shka » 12.11.2017{, 22:56}

То есть заново компилировать и прошивать? Смысл именно в том, чтоб в любой момент сменить режим работы без подключения к компьютеру и без наличия нужного ПО, просто переставив перемычку. Залить один раз навсегда.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#4

Сообщение pan » 13.11.2017{, 08:22}

привяжите переменную к перемычке ( входу) , к кнопке, ..  да хоть к чему

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#5

Сообщение seri0shka » 13.11.2017{, 18:26}

И получим то, что работает сейчас- постоянный опрос аналогового входа, одна из самых длительных операций. Причём сработает этот вход возможно один раз за несколько месяцев.
 Сейчас я сделал на пробу блок, который в результате компиляции выдаёт такую конструкцию:

bool out_167848791_1;
void setup()
{
if(( (analogRead (7)))>(500))
{out_167848791_1 = 1;}
else
{out_167848791_1 = 0;}
}
void loop()
{ }
 
Блок вполне работает, при изменении состояния входа во время работы реакции нет (что и было нужно), а в момент повторной подачи питания режим работы меняется на нужный. Единственное, что смущает, это законность такой операции в фунции  void setup.
 Но, скорей всего, оставлю постоянный опрос входа в основном цикле скетча, от греха подальше.

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Вопрос по созданию блока

#6

Сообщение Nikan » 13.11.2017{, 18:36}

.
Последний раз редактировалось Nikan 23.03.2023{, 17:45}, всего редактировалось 1 раз.

Anydy

Вопрос по созданию блока

#7

Сообщение Anydy » 13.11.2017{, 19:05}

Nikan писал(а):setup выполняеся один раз перед стартом основной программы, для конфигурации оборудования
Опа...а мужики то и не знали))))
Щучу конечно, но если человек знает что такое Setup то думаю должен понимать что это инициализация Микроконтроллера)))

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Вопрос по созданию блока

#8

Сообщение Dev1 » 13.11.2017{, 21:04}

Anydy писал(а):это инициализация Микроконтроллера
 


СпойлерПоказать
The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc.
The setup() function will only run once, after each powerup or reset of the Arduino board.
Win10-64 FLProg v7.5.2 Portable :fie:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#9

Сообщение pan » 13.11.2017{, 21:07}

seri0shka писал(а):И получим то, что работает сейчас- постоянный опрос
 вы видимо совсем не поняли о чем я вам написал

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#10

Сообщение seri0shka » 13.11.2017{, 21:37}

Возможно и не понял. Но я правильно понял, что для смены режима скетч заливать по-новой нужно?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#11

Сообщение pan » 13.11.2017{, 22:08}

нет. не нужно.
сделайте сколько надо режимов на платах и выполняйте нужные по условию.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#12

Сообщение seri0shka » 13.11.2017{, 22:46}

if(( (analogRead (7)))>(500))
Это и есть выплнение по условию. Но оно сейчас выполняется в каждом void loop() и отнимает ценное время. Об этом я и писал.

Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 100
Откуда: москва

Вопрос по созданию блока

#13

Сообщение Nikan » 13.11.2017{, 23:14}

.
Последний раз редактировалось Nikan 23.03.2023{, 17:45}, всего редактировалось 1 раз.

Anydy

Вопрос по созданию блока

#14

Сообщение Anydy » 14.11.2017{, 05:02}

Nikan писал(а):зы, почему то всегда предполагал, что инициализация происходит сразу после начала работы генератора, и внутренними командами МК
Да, сорри не верно выразился....
Инициализация конечно на старте МК, в разделе Setup - Set (Установка) Up (Поднятие)
То есть задаем начальные параметры.

Добавлено (14.11.2017, 05:02)
---------------------------------------------
Dev1 писал(а):The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc.The setup() function will only run once, after each powerup or reset of the Arduino board.
Ну могу же иногда оговорится....мы же профи...и понимаем что такое Setup )))))

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#15

Сообщение pan » 14.11.2017{, 08:24}

seri0shka писал(а):if(( (analogRead (7)))>(500))Это и есть выплнение по условию
 мне кажется вы говорите об условии выполнения блока а не платы...

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#16

Сообщение seri0shka » 14.11.2017{, 20:41}

pan, действительно, мы не понимаем друг друга. Давайте на примерах. Допустим, в проекте ардуина (в составе готового устройства) выполняет одну функцию- при высоком уровне на pin1 включает высокий уровень на  pin13. Но она же может быть вставлена в другое аналогичное устройство, где выходной сигнал на  pin2, а не на  pin13. Режим работы определяется перемычкой на входе А7 (усройство А- перемычка к плюсу питания, устройство В- перемычка к минусу) Можете показать, как будет выглядеть проект или готовый скетч, чтоб я понял, что вы хотите мне объяснить.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#17

Сообщение pan » 14.11.2017{, 21:16}

типа того
Вложения
9443315.flp
(56.53 КБ) 50 скачиваний

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Вопрос по созданию блока

#18

Сообщение seri0shka » 14.11.2017{, 22:23}

Загрузил, скомпилировал, помотрел скетч. Попробовал в действии. Хотя пробовать бесполезно, даже если просто взглянуть на скетч- digitalRead (21) никогда работать не будет, я надеялся, что уважаемый автор FLProg уже исправил этот недочёт (А6 и А7 могут работать только как аналоговые). Менял на  digitalRead (19) для полноты картины, всё равно нет нужного эффекта.
Ещё раз перечитал все ваши сообщения. Похоже, что всё-таки вы не поймёте, что я хочу. Я хотел (digitalRead (21))выбросить из основного цикла (на самом деле (analogRead (7)), конечно),а в полученном скетче эта функция осталась в void loop(). Хотя я всё равно благодарен за помощь. Кстати, благодаря вашему примеру понял, в чём отличие более поздних версий от 2.1, которой я пользуюсь. Надо будет попробовать оценить все плюсы и минусы.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Вопрос по созданию блока

#19

Сообщение pan » 14.11.2017{, 22:29}

что мешает перенести чтение состояния перемычки в сетап и считать 1 раз при включении

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Вопрос по созданию блока

#20

Сообщение Dev1 » 14.11.2017{, 22:33}

Народ, у меня поп-корн кончился...
pan писал(а):что мешает перенести чтение состояния перемычки в сетап и считать 1 раз при включении
Ну наконец то....
Win10-64 FLProg v7.5.2 Portable :fie:

Ответить

Вернуться в «Спросить у знатоков»