Страница 2 из 5

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 22.01.2016{, 23:15}
krom23
Skull писал(а):Это Вы еще про аэропонику не слышали, где надо увлажнение каждые 5 мин ))
Слышал, от вас же в соседнем посте Изображение .

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 09:34}
AlexRyzh
Перешел к кнопкам. Программировать реле, да и для других целей нужны кнопки. Вот решил научиться программировать кнопки.
Сделал такой блок (прилагается).

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

В блоке добавил вывод на монитор, чтоб визуально проверять работает ли все и правильно.
Думаю как и в случае с реле все усложнил, наверное можно проще все сделать. 
Пока только определение нажатия кнопок, а что с ними делать дальше, потом буду думать как этим воспользоваться.

Надеюсь rw6cm (или еще кто-то из гуру) и в этот раз подскажет что я не так делаю.

Добавлено (23.01.2016, 09:34)
---------------------------------------------
И как защитить от дребезга кнопки, если по кнопке считывается аналоговый сигнал?

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 09:52}
Олег
Поставьте блок Bounce после компараторов.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 19:39}
AlexRyzh
Олег писал(а):Поставьте блок Bounce после компараторов.
Спасибо. Поставил
Подскажите, как сделать подпрограмму входить на нее по нажатию кнопки?
Суть вопроса такова:
Имеем 3 кнопки. !-я например вход в меню и выход из него. Нажимаем ее входим в подпрограмму меню.
Находимся в меню, в котором кнопкой 2 входим в другое подменю, где можно выбрать что делать в этом подменю, например, установка часов, выбор программирования реле врмени...
При этом из меню можно выйти в начало по 1-й кнопке или по истечению 20 сек, если ни одна кнопка не была нажата. 
Можно ли вообще как-то делать подпрограммы и входить в них по событию?

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 20:22}
Олег
На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером на переменную "Сброс меню". Ну а дальше уже зависит от того как вы собираетесь меню организовывать.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 22:52}
AlexRyzh
Олег писал(а):На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером
Спасибо, но не очень понятно и как бы не до конца.
По схеме я так понял: 
При нажатии на кнопку 1 (это выбор) срабатывает счетчик и посылает сигнал на переключатель. На переключателе одна из переменных получает значение 1 (зависит сколько раз нажата кнопка выбор)
Счетчик настроен так, что когда он отрабатывает 5 шагов, сбрасывается в 0. И так по кругу.
Можно повесить и таймер на 20 сек, и кнопку сброс меню, это понятно. Не понятно что дальше?
Олег писал(а):Ну а дальше уже зависит от того как вы собираетесь меню организовывать.
Вот как раз и не пойму как организовывать меню, чтоб вызывалась подпрограмма в зависимости от выбранного. Хоть простенький примерчик посмотреть бы. Хоть какой-то организации меню.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 23:00}
AlexRyzh
Вот соорудил блок кнопочный.
Три кнопки подключены к одному аналоговому выходу. 
 кнопки подключены к одному аналоговому входу. Используя делители из резисторов, при нажатии кнопки или их комбинаций получаем разный уровень сигнала. Используя это определяем какая кнопка была (или комбинация) были нажаты.
В итоге получаем 6 вариантов нажатий (в идеале 6 кнопок) на одном пине.
Пределы сигнала с кнопок в сравнении взял с большим запасом, т.к. уровни выдаваемые кнопками позволяют такой запас.
Для уверенного нажатия комбинации из 2-х кнопок поставил таймер на 150 мс, чтоб не определялась кнопка, которая раньше нажалась при нажатии 2-х кнопок одновременно.

В блоке добавил выводы на монитор, чтоб визуально проверять работает ли все и правильно.
А вот как организовать подпрограмму при нажатии любой из 6-ти кнопок. Тут у меня ступор Изображение

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 23.01.2016{, 23:13}
Олег
Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы  хотите менять данные и т.д. Это можно делать различными способами. 
 Всегда сначала продумывается структура и пишется на бумаге как это будет выглядеть а потом уже думается как претворить в жизнь, а не наоборот.
 Под вашу структуру и сделаем.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 00:48}
AlexRyzh
Олег писал(а):Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы  хотите менять данные и т.д.
Понятно. Попробую изобразить структуру. Может и в голову чё придет... Изображение

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 00:56}
Олег
Обычно так и происходит - правильно поставленная задача снимает 90% вопросов. Изображение

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 02:32}
AlexRyzh
Вот изобразил структуру работы меню с кнопками. Сделал по скромному, без особых наворотов. Думаю, если с этим получится разобраться, то навороты уже по аналогии можно добавлять.Изображение

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 04:11}
rw6cm
AlexRyzh писал(а):Сделал по скромному, без особых наворотов.
В предложении явно смайлика не хватает Изображение !

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 08:31}
AlexRyzh
Цитата rw6cm ()200?'200px':''+(this.scrollHeight+5)+'px');">В предложении явно смайлика не хватаетСогласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню помогите сделать (Удержание кнопки 2 сек). Остальное по аналогии буду думать, делать. Главное понять как это делается.
И возможно ли вообще это сделать в ФЛПрог?

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 09:09}
AlexRyzh
Вот таким образом добавил к кнопкам таймер для создания кнопки "Удержание кнопки 2 сек".
В результате удержания кнопки Кн1, переменная "Кнопка 2 сек" получает 1.

А вот дальше как? Создаем плату обработки нажатия для каждой кнопки и их удержания 2, 5 сек...
Если переменная 1 то делаем следующее ???

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 10:53}
Олег
Для вас принципиально именно такое построение меню? Если нет, то добавив еще одну кнопку все упрощается, а две вообще замечательно.
И боюсь что при такой структуре у вас не то что в Nano, но и в Uno памяти не хватит. Использование одной кнопки для разных манипуляций требует постоянной проверки местонахождения на данном этапе, а это все код жрущий память.
В нашем деле чем проще, тем лучше.
Я бы сделал как-то так, но это навскидку.
Главная страница, например, показывает часы.
1 кнопка Выбор: листаем меню
- Установка даты и времени
- Автомат ручное
- Выбор канала
2 кнопка Вправо: в конкретном меню передвигаемся по значениям.
- Часы, минуты, секунды
- Вкл-выкл
- Установки в программе канала
3 кнопка Влево: выбор подканала
- Выбор программы в канале
4 кнопка Вверх: увеличение значения на единицу
5 Кнопка Вниз: уменьшение значения на единицу
При этом код сократится в полтора, а может и в два раза.
И вообще что-то сомнения меня гложут в объеме программы, если вы сделаете 10 программ по 10 каналов а в каждом канале по 4 значения, то только это 400 переменных, которые надо хранить в ЕЕПРОМ, иначе при сбое электричества все слетит напрочь.
Попробуйте посмотреть в этом направлении, и избавьтесь от всего что в принципе не очень-то и нужно и задача сильно упростится.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 11:24}
rw6cm
AlexRyzh писал(а):Согласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню
Если вечером будет время сделаю набросок.
Пока можете изучить как это сделал VirSpy в своих часах

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 12:43}
AlexRyzh
rw6cm писал(а):Если вечером будет время сделаю набросок.
Спасибо. Уверен, что Ваши наброски очень пригодятся для познания принципа построения блоков, и в практическом применении
rw6cm писал(а):Пока можете изучить как это сделал VirSpy в своих часах
Посмотрел, скачал. На вскидку, без комментариев, не смог разобраться как это все работает, но оставил даже свое замечание, что мне показалось неправильным.
Может там организовано так, что все правильно получается, но на вскидку показалось что неправильно.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 16:44}
Олег
Я так понимаю что легких путей вы решили не искать Изображение .
Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 17:43}
AlexRyzh
Олег писал(а):Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.
Спасибо. Вроде довольно таки понятно все. Нужно смотреть разбираться. На основе этого буду что-то делать, что будет не ясно буду спрашивать.
Для начала (пока еще не очень разбираюсь в этих блоках) сделаю попроще, только необходимые функции реле времени.
Сделаю на 3 канала. 1 канал с 1 программой Вкл и выкл (для досветки, которую нужно за сутки 1 раз утром включить и вечером выключить)
2-й канал для вентилятора, который будет включаться 3-4 раза в сутки, чтоб погонять воздух по теплице (это 3-4 программы).
3-й канал циклический, для аэрации раствора, чтоб постоянно не гонять компрессор, а включать на 15 с перерывом в 30 мин. ( ну или другие цифры, дело покажет сколько аэрировать, чтоб раствор не портился)
Потом, когда-нибудь (может следующей зимой) помозгую над задуманным реле.
Кнопок не жалко, просто хочется минимализма в кнопочной системе. Хотя все же проще будет добавить кнопок (хотя бы одну)... а там посмотрим.

Первая разработка в программе (для теплицы, гроубокса)

Добавлено: 24.01.2016{, 21:58}
Олег
Забыл сказать, в проекте использован пользовательский блок, скачать можно здесь.
Минимализм в кнопочной системе приводит к максимализму в программной, как говорится: если где-то прибыло, то это значит что где-то убыло Изображение .