Слышал, от вас же в соседнем посте .Skull писал(а):Это Вы еще про аэропонику не слышали, где надо увлажнение каждые 5 мин ))
Первая разработка в программе (для теплицы, гроубокса)
Первая разработка в программе (для теплицы, гроубокса)
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Перешел к кнопкам. Программировать реле, да и для других целей нужны кнопки. Вот решил научиться программировать кнопки.
Сделал такой блок (прилагается).
3 кнопки подключены к одному аналоговому входу. Используя делители из резисторов, при нажатии кнопки или их комбинаций получаем разный уровень сигнала. Используя это определяем какая кнопка была (или комбинация) были нажаты.
Пределы кнопок в сравнении взял с большим запасом, т.к. уровни выдаваемые кнопками позволяют такой запас.
В блоке добавил вывод на монитор, чтоб визуально проверять работает ли все и правильно.
Думаю как и в случае с реле все усложнил, наверное можно проще все сделать.
Пока только определение нажатия кнопок, а что с ними делать дальше, потом буду думать как этим воспользоваться.
Надеюсь rw6cm (или еще кто-то из гуру) и в этот раз подскажет что я не так делаю.
Добавлено (23.01.2016, 09:34)
---------------------------------------------
И как защитить от дребезга кнопки, если по кнопке считывается аналоговый сигнал?
Сделал такой блок (прилагается).
3 кнопки подключены к одному аналоговому входу. Используя делители из резисторов, при нажатии кнопки или их комбинаций получаем разный уровень сигнала. Используя это определяем какая кнопка была (или комбинация) были нажаты.
Пределы кнопок в сравнении взял с большим запасом, т.к. уровни выдаваемые кнопками позволяют такой запас.
В блоке добавил вывод на монитор, чтоб визуально проверять работает ли все и правильно.
Думаю как и в случае с реле все усложнил, наверное можно проще все сделать.
Пока только определение нажатия кнопок, а что с ними делать дальше, потом буду думать как этим воспользоваться.
Надеюсь rw6cm (или еще кто-то из гуру) и в этот раз подскажет что я не так делаю.
Добавлено (23.01.2016, 09:34)
---------------------------------------------
И как защитить от дребезга кнопки, если по кнопке считывается аналоговый сигнал?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Спасибо. ПоставилОлег писал(а):Поставьте блок Bounce после компараторов.
Подскажите, как сделать подпрограмму входить на нее по нажатию кнопки?
Суть вопроса такова:
Имеем 3 кнопки. !-я например вход в меню и выход из него. Нажимаем ее входим в подпрограмму меню.
Находимся в меню, в котором кнопкой 2 входим в другое подменю, где можно выбрать что делать в этом подменю, например, установка часов, выбор программирования реле врмени...
При этом из меню можно выйти в начало по 1-й кнопке или по истечению 20 сек, если ни одна кнопка не была нажата.
Можно ли вообще как-то делать подпрограммы и входить в них по событию?
Первая разработка в программе (для теплицы, гроубокса)
На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером на переменную "Сброс меню". Ну а дальше уже зависит от того как вы собираетесь меню организовывать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Спасибо, но не очень понятно и как бы не до конца.Олег писал(а):На четыре меню у меня было так сделано. Единственно я закольцевал, а не делал возврат кнопкой выбора, для возврата на первое меню через 20 сек можете обработку повесить с таймером
По схеме я так понял:
При нажатии на кнопку 1 (это выбор) срабатывает счетчик и посылает сигнал на переключатель. На переключателе одна из переменных получает значение 1 (зависит сколько раз нажата кнопка выбор)
Счетчик настроен так, что когда он отрабатывает 5 шагов, сбрасывается в 0. И так по кругу.
Можно повесить и таймер на 20 сек, и кнопку сброс меню, это понятно. Не понятно что дальше?
Вот как раз и не пойму как организовывать меню, чтоб вызывалась подпрограмма в зависимости от выбранного. Хоть простенький примерчик посмотреть бы. Хоть какой-то организации меню.Олег писал(а):Ну а дальше уже зависит от того как вы собираетесь меню организовывать.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Вот соорудил блок кнопочный.
Три кнопки подключены к одному аналоговому выходу.
кнопки подключены к одному аналоговому входу. Используя делители из резисторов, при нажатии кнопки или их комбинаций получаем разный уровень сигнала. Используя это определяем какая кнопка была (или комбинация) были нажаты.
В итоге получаем 6 вариантов нажатий (в идеале 6 кнопок) на одном пине.
Пределы сигнала с кнопок в сравнении взял с большим запасом, т.к. уровни выдаваемые кнопками позволяют такой запас.
Для уверенного нажатия комбинации из 2-х кнопок поставил таймер на 150 мс, чтоб не определялась кнопка, которая раньше нажалась при нажатии 2-х кнопок одновременно.
В блоке добавил выводы на монитор, чтоб визуально проверять работает ли все и правильно.
А вот как организовать подпрограмму при нажатии любой из 6-ти кнопок. Тут у меня ступор
Три кнопки подключены к одному аналоговому выходу.
кнопки подключены к одному аналоговому входу. Используя делители из резисторов, при нажатии кнопки или их комбинаций получаем разный уровень сигнала. Используя это определяем какая кнопка была (или комбинация) были нажаты.
В итоге получаем 6 вариантов нажатий (в идеале 6 кнопок) на одном пине.
Пределы сигнала с кнопок в сравнении взял с большим запасом, т.к. уровни выдаваемые кнопками позволяют такой запас.
Для уверенного нажатия комбинации из 2-х кнопок поставил таймер на 150 мс, чтоб не определялась кнопка, которая раньше нажалась при нажатии 2-х кнопок одновременно.
В блоке добавил выводы на монитор, чтоб визуально проверять работает ли все и правильно.
А вот как организовать подпрограмму при нажатии любой из 6-ти кнопок. Тут у меня ступор
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Первая разработка в программе (для теплицы, гроубокса)
Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы хотите менять данные и т.д. Это можно делать различными способами.
Всегда сначала продумывается структура и пишется на бумаге как это будет выглядеть а потом уже думается как претворить в жизнь, а не наоборот.
Под вашу структуру и сделаем.
Всегда сначала продумывается структура и пишется на бумаге как это будет выглядеть а потом уже думается как претворить в жизнь, а не наоборот.
Под вашу структуру и сделаем.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Понятно. Попробую изобразить структуру. Может и в голову чё придет...Олег писал(а):Вы напишите структуру меню, какие данные на какой странице, какими кнопками вы хотите менять данные и т.д.
Первая разработка в программе (для теплицы, гроубокса)
Обычно так и происходит - правильно поставленная задача снимает 90% вопросов.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Вот изобразил структуру работы меню с кнопками. Сделал по скромному, без особых наворотов. Думаю, если с этим получится разобраться, то навороты уже по аналогии можно добавлять.
- rw6cm
- Полковник
- Сообщения: 2365
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 27 раз
Первая разработка в программе (для теплицы, гроубокса)
В предложении явно смайлика не хватает !AlexRyzh писал(а):Сделал по скромному, без особых наворотов.
Win10-64, FLProg (portable)
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Цитата rw6cm ()200?'200px':''+(this.scrollHeight+5)+'px');">В предложении явно смайлика не хватаетСогласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню помогите сделать (Удержание кнопки 2 сек). Остальное по аналогии буду думать, делать. Главное понять как это делается.
И возможно ли вообще это сделать в ФЛПрог?
И возможно ли вообще это сделать в ФЛПрог?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось AlexRyzh 24 янв 2016, 08:39, всего редактировалось 1 раз.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Вот таким образом добавил к кнопкам таймер для создания кнопки "Удержание кнопки 2 сек".
В результате удержания кнопки Кн1, переменная "Кнопка 2 сек" получает 1.
А вот дальше как? Создаем плату обработки нажатия для каждой кнопки и их удержания 2, 5 сек...
Если переменная 1 то делаем следующее ???
В результате удержания кнопки Кн1, переменная "Кнопка 2 сек" получает 1.
А вот дальше как? Создаем плату обработки нажатия для каждой кнопки и их удержания 2, 5 сек...
Если переменная 1 то делаем следующее ???
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Первая разработка в программе (для теплицы, гроубокса)
Для вас принципиально именно такое построение меню? Если нет, то добавив еще одну кнопку все упрощается, а две вообще замечательно.
И боюсь что при такой структуре у вас не то что в Nano, но и в Uno памяти не хватит. Использование одной кнопки для разных манипуляций требует постоянной проверки местонахождения на данном этапе, а это все код жрущий память.
В нашем деле чем проще, тем лучше.
Я бы сделал как-то так, но это навскидку.
Главная страница, например, показывает часы.
1 кнопка Выбор: листаем меню
- Установка даты и времени
- Автомат ручное
- Выбор канала
2 кнопка Вправо: в конкретном меню передвигаемся по значениям.
- Часы, минуты, секунды
- Вкл-выкл
- Установки в программе канала
3 кнопка Влево: выбор подканала
- Выбор программы в канале
4 кнопка Вверх: увеличение значения на единицу
5 Кнопка Вниз: уменьшение значения на единицу
При этом код сократится в полтора, а может и в два раза.
И вообще что-то сомнения меня гложут в объеме программы, если вы сделаете 10 программ по 10 каналов а в каждом канале по 4 значения, то только это 400 переменных, которые надо хранить в ЕЕПРОМ, иначе при сбое электричества все слетит напрочь.
Попробуйте посмотреть в этом направлении, и избавьтесь от всего что в принципе не очень-то и нужно и задача сильно упростится.
И боюсь что при такой структуре у вас не то что в Nano, но и в Uno памяти не хватит. Использование одной кнопки для разных манипуляций требует постоянной проверки местонахождения на данном этапе, а это все код жрущий память.
В нашем деле чем проще, тем лучше.
Я бы сделал как-то так, но это навскидку.
Главная страница, например, показывает часы.
1 кнопка Выбор: листаем меню
- Установка даты и времени
- Автомат ручное
- Выбор канала
2 кнопка Вправо: в конкретном меню передвигаемся по значениям.
- Часы, минуты, секунды
- Вкл-выкл
- Установки в программе канала
3 кнопка Влево: выбор подканала
- Выбор программы в канале
4 кнопка Вверх: увеличение значения на единицу
5 Кнопка Вниз: уменьшение значения на единицу
При этом код сократится в полтора, а может и в два раза.
И вообще что-то сомнения меня гложут в объеме программы, если вы сделаете 10 программ по 10 каналов а в каждом канале по 4 значения, то только это 400 переменных, которые надо хранить в ЕЕПРОМ, иначе при сбое электричества все слетит напрочь.
Попробуйте посмотреть в этом направлении, и избавьтесь от всего что в принципе не очень-то и нужно и задача сильно упростится.
Последний раз редактировалось Олег 24 янв 2016, 10:58, всего редактировалось 1 раз.
- rw6cm
- Полковник
- Сообщения: 2365
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 27 раз
Первая разработка в программе (для теплицы, гроубокса)
Если вечером будет время сделаю набросок.AlexRyzh писал(а):Согласен, слишком наворочено для подсказки. Но хотя бы одну ветку меню
Пока можете изучить как это сделал VirSpy в своих часах
Последний раз редактировалось rw6cm 24 янв 2016, 11:25, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Спасибо. Уверен, что Ваши наброски очень пригодятся для познания принципа построения блоков, и в практическом примененииrw6cm писал(а):Если вечером будет время сделаю набросок.
Посмотрел, скачал. На вскидку, без комментариев, не смог разобраться как это все работает, но оставил даже свое замечание, что мне показалось неправильным.rw6cm писал(а):Пока можете изучить как это сделал VirSpy в своих часах
Может там организовано так, что все правильно получается, но на вскидку показалось что неправильно.
Последний раз редактировалось AlexRyzh 24 янв 2016, 12:47, всего редактировалось 1 раз.
Первая разработка в программе (для теплицы, гроубокса)
Я так понимаю что легких путей вы решили не искать .
Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.
Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Первая разработка в программе (для теплицы, гроубокса)
Спасибо. Вроде довольно таки понятно все. Нужно смотреть разбираться. На основе этого буду что-то делать, что будет не ясно буду спрашивать.Олег писал(а):Высылаю вам набросок к кусочку алгоритма из поста номер 33. Заодно прокомментировал на примере чем неудобно использование одной и той-же кнопки для разных целей. При построении меню в полном размере как в посте номер 31 вам придется ставить еще много блоков И и таймеров чтобы не было ложных срабатываний, а это все раздувает код.
Для начала (пока еще не очень разбираюсь в этих блоках) сделаю попроще, только необходимые функции реле времени.
Сделаю на 3 канала. 1 канал с 1 программой Вкл и выкл (для досветки, которую нужно за сутки 1 раз утром включить и вечером выключить)
2-й канал для вентилятора, который будет включаться 3-4 раза в сутки, чтоб погонять воздух по теплице (это 3-4 программы).
3-й канал циклический, для аэрации раствора, чтоб постоянно не гонять компрессор, а включать на 15 с перерывом в 30 мин. ( ну или другие цифры, дело покажет сколько аэрировать, чтоб раствор не портился)
Потом, когда-нибудь (может следующей зимой) помозгую над задуманным реле.
Кнопок не жалко, просто хочется минимализма в кнопочной системе. Хотя все же проще будет добавить кнопок (хотя бы одну)... а там посмотрим.
Первая разработка в программе (для теплицы, гроубокса)
Забыл сказать, в проекте использован пользовательский блок, скачать можно здесь.
Минимализм в кнопочной системе приводит к максимализму в программной, как говорится: если где-то прибыло, то это значит что где-то убыло .
Минимализм в кнопочной системе приводит к максимализму в программной, как говорится: если где-то прибыло, то это значит что где-то убыло .
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость