тыкать ли пин каждый цикл?
- Войдите на сайт для отправки комментариев
Чт, 02/03/2017 - 15:25
Добрый день.
Есть ардуина, к которой подключен блок релешек.
Управляется все это по блютусу, кнопочками и сенсорным экраном.
boolean Relay_flag[8]; #define PIN_RELAY_01 22 #define PIN_RELAY_02 23 #define PIN_RELAY_03 24 #define PIN_RELAY_04 25 void setup() { тут какой-то код } void loop() { if (нажата кнопка 1) Relay_flag[0] = !Relay_flag[0] if (нажата кнопка 2) Relay_flag[1] = !Relay_flag[1] if (с блютуса прилетела команда 3) Relay_flag[2] = !Relay_flag[2] if (на экране нажата кнопка 4) Relay_flag[3] = !Relay_flag[3] digitalWrite (PIN_RELAY_01, Relay_flag[0]); digitalWrite (PIN_RELAY_02, Relay_flag[1]); digitalWrite (PIN_RELAY_03, Relay_flag[2]); digitalWrite (PIN_RELAY_04, Relay_flag[3]); }
Получается что каждый цикл ардуина тыкает пин, говоря ему High он или Low.
Правильно ли это? Или грамотнее завести еще один массив переменных "bool Prev_Relay_flag[8]", сравнивать текущее значение флага с предыдущим и, если изменилось - тыкать пин?
Тыкает и тыкает есть не просит. Имхо
Для простого проект пофиг. Главное чтоб не сложилось мнение что надо обязательно тыкать каждый раз. В принципе однажды установить достаточно и на века будет, т.е. до ребута.
Я бы не "тыкал"
Это мне напоминает анекдот:
Ну почему не делать так.
Тогда и темы тупой бы не было.
Хотел так написать, но подумал у ТС мозг вскипит.
Правильно ли это? Или грамотнее завести еще один массив переменных "bool Prev_Relay_flag[8]", сравнивать текущее значение флага с предыдущим и, если изменилось - тыкать пин?
правильней будет изменять аппаратное состояние пина реле в том же месте кода, где изменилось значение элемента массива.
Хотел так написать, но подумал у ТС мозг вскипит.
ок. раз пошла такая пьянка:
Хотел так написать, но подумал у ТС мозг вскипит.
Пусть кипит. Все должно быть по-взрослому, а так никогда не научатся программировать. Короткая запись в Си затавляет мозгу шевелить, кроме тех случаев, когда там сплошная кость. Да и глаз привыкает к таким конструкциям.
Спасибо всем за комменты и за идею.
Текущую конструкцию подглядел у кого-то в скетче и использовал. Скорее всего я бы допер до этого решения и сам, раз решил оптимизировать код и задал вопрос (сначала сам себе, а потом уже и тут).
Спасибо еще раз.
Хотел так написать, но подумал у ТС мозг вскипит.
ок. раз пошла такая пьянка:
продолжаем "бухать" :)
после этого ТС точно научится программировать !
а если этих реле 28 штук?
а если этих реле 28 штук?
И что должно поменяться ?
а если этих реле 28 штук?
это неспортивно! - количество реле должно быть равно 8-ми.
после этого ТС точно научится программировать !
Поменьшей мере "прозреет". А то будет думать , что кипяченое молоко это разбавленая манная каша, и будет там комочки искать. А так сразу будет ответ на вопрос, как сократить размеры скетча. Второй по популярности вопрос.
ПС: Первый популярный вопрос это танцы вокруг millis() , а точнее у меня очень много delay() и скечь не совсем работает.
не, от delay() я избавился на первом же этапе
SPI
продолжаем "бухать" :)
после этого ТС точно научится программировать !
А вот спасибо!! Реально, СПАСИБО!
Вернулся с командировки, разобрался, переделал скетч, съэкономил память заменив все digitalWrite и pinMode
переделал скетч, съэкономил память заменив все digitalWrite и pinMode
, заменил arduino uno на какой-нибудь due или wemos, упс, перестало работать :)
Ну если не вынимать голову из задницы, то да, перестанет работать.