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

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06 сен 2015, 15:18
Откуда: Калуга
Имя: Андрей

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

Сообщение krom23 »

Skull писал(а):Это Вы еще про аэропонику не слышали, где надо увлажнение каждые 5 мин ))
Слышал, от вас же в соседнем посте Изображение .
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

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

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

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

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

Добавлено (23.01.2016, 09:34)
---------------------------------------------
И как защитить от дребезга кнопки, если по кнопке считывается аналоговый сигнал?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

Поставьте блок Bounce после компараторов.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

Олег писал(а):Поставьте блок Bounce после компараторов.
Спасибо. Поставил
Подскажите, как сделать подпрограмму входить на нее по нажатию кнопки?
Суть вопроса такова:
Имеем 3 кнопки. !-я например вход в меню и выход из него. Нажимаем ее входим в подпрограмму меню.
Находимся в меню, в котором кнопкой 2 входим в другое подменю, где можно выбрать что делать в этом подменю, например, установка часов, выбор программирования реле врмени...
При этом из меню можно выйти в начало по 1-й кнопке или по истечению 20 сек, если ни одна кнопка не была нажата. 
Можно ли вообще как-то делать подпрограммы и входить в них по событию?
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером на переменную "Сброс меню". Ну а дальше уже зависит от того как вы собираетесь меню организовывать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

Олег писал(а):На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером
Спасибо, но не очень понятно и как бы не до конца.
По схеме я так понял: 
При нажатии на кнопку 1 (это выбор) срабатывает счетчик и посылает сигнал на переключатель. На переключателе одна из переменных получает значение 1 (зависит сколько раз нажата кнопка выбор)
Счетчик настроен так, что когда он отрабатывает 5 шагов, сбрасывается в 0. И так по кругу.
Можно повесить и таймер на 20 сек, и кнопку сброс меню, это понятно. Не понятно что дальше?
Олег писал(а):Ну а дальше уже зависит от того как вы собираетесь меню организовывать.
Вот как раз и не пойму как организовывать меню, чтоб вызывалась подпрограмма в зависимости от выбранного. Хоть простенький примерчик посмотреть бы. Хоть какой-то организации меню.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

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

В блоке добавил выводы на монитор, чтоб визуально проверять работает ли все и правильно.
А вот как организовать подпрограмму при нажатии любой из 6-ти кнопок. Тут у меня ступор Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы  хотите менять данные и т.д. Это можно делать различными способами. 
 Всегда сначала продумывается структура и пишется на бумаге как это будет выглядеть а потом уже думается как претворить в жизнь, а не наоборот.
 Под вашу структуру и сделаем.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

Олег писал(а):Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы  хотите менять данные и т.д.
Понятно. Попробую изобразить структуру. Может и в голову чё придет... Изображение
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

Обычно так и происходит - правильно поставленная задача снимает 90% вопросов. Изображение
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

Вот изобразил структуру работы меню с кнопками. Сделал по скромному, без особых наворотов. Думаю, если с этим получится разобраться, то навороты уже по аналогии можно добавлять.Изображение
Аватара пользователя
rw6cm
Полковник
Сообщения: 2365
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 27 раз

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

Сообщение rw6cm »

AlexRyzh писал(а):Сделал по скромному, без особых наворотов.
В предложении явно смайлика не хватает Изображение !
Win10-64, FLProg (portable)
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

Цитата rw6cm ()200?'200px':''+(this.scrollHeight+5)+'px');">В предложении явно смайлика не хватаетСогласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню помогите сделать (Удержание кнопки 2 сек). Остальное по аналогии буду думать, делать. Главное понять как это делается.
И возможно ли вообще это сделать в ФЛПрог?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось AlexRyzh 24 янв 2016, 08:39, всего редактировалось 1 раз.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

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

А вот дальше как? Создаем плату обработки нажатия для каждой кнопки и их удержания 2, 5 сек...
Если переменная 1 то делаем следующее ???
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

Для вас принципиально именно такое построение меню? Если нет, то добавив еще одну кнопку все упрощается, а две вообще замечательно.
И боюсь что при такой структуре у вас не то что в Nano, но и в Uno памяти не хватит. Использование одной кнопки для разных манипуляций требует постоянной проверки местонахождения на данном этапе, а это все код жрущий память.
В нашем деле чем проще, тем лучше.
Я бы сделал как-то так, но это навскидку.
Главная страница, например, показывает часы.
1 кнопка Выбор: листаем меню
- Установка даты и времени
- Автомат ручное
- Выбор канала
2 кнопка Вправо: в конкретном меню передвигаемся по значениям.
- Часы, минуты, секунды
- Вкл-выкл
- Установки в программе канала
3 кнопка Влево: выбор подканала
- Выбор программы в канале
4 кнопка Вверх: увеличение значения на единицу
5 Кнопка Вниз: уменьшение значения на единицу
При этом код сократится в полтора, а может и в два раза.
И вообще что-то сомнения меня гложут в объеме программы, если вы сделаете 10 программ по 10 каналов а в каждом канале по 4 значения, то только это 400 переменных, которые надо хранить в ЕЕПРОМ, иначе при сбое электричества все слетит напрочь.
Попробуйте посмотреть в этом направлении, и избавьтесь от всего что в принципе не очень-то и нужно и задача сильно упростится.
Последний раз редактировалось Олег 24 янв 2016, 10:58, всего редактировалось 1 раз.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2365
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 27 раз

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

Сообщение rw6cm »

AlexRyzh писал(а):Согласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню
Если вечером будет время сделаю набросок.
Пока можете изучить как это сделал VirSpy в своих часах
Последний раз редактировалось rw6cm 24 янв 2016, 11:25, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

rw6cm писал(а):Если вечером будет время сделаю набросок.
Спасибо. Уверен, что Ваши наброски очень пригодятся для познания принципа построения блоков, и в практическом применении
rw6cm писал(а):Пока можете изучить как это сделал VirSpy в своих часах
Посмотрел, скачал. На вскидку, без комментариев, не смог разобраться как это все работает, но оставил даже свое замечание, что мне показалось неправильным.
Может там организовано так, что все правильно получается, но на вскидку показалось что неправильно.
Последний раз редактировалось AlexRyzh 24 янв 2016, 12:47, всего редактировалось 1 раз.
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13 окт 2015, 16:47
Контактная информация:

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

Сообщение Олег »

Я так понимаю что легких путей вы решили не искать Изображение .
Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22 дек 2015, 11:06
Откуда: Мелитополь
Контактная информация:

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

Сообщение AlexRyzh »

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

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

Сообщение Олег »

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

Вернуться в «Проекты различных устройств на Arduino»

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

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