блок меню в flprog
Пример работы с блоками меню в FLProg
Для данной реализации нам понадобится:
Для начала добавим блок Другое>меню>основной блок меню. В данном блоке создадим 4 пункта меню с настройками как на скрине:
Так как у нас реле, поэтому мы и выбрали тип переменной boolean.
Далее переходим во вкладку управление меню и ставим галочки как на скрине:
Ну и последний штрих во вкладке управление значением:
Далее добавим блок Другое>Меню>Значение пункта меню и установим следующие параметры:
Так как у нас 4 реле, по аналогии нужно создать 4 таких блока с разными пунктами меню.
Далее нужно создать и входы и выходы и одну переменную, добавить блоки работы дисплея 1602 и в итоге должна получиться вот такая схема:
Весь проект FLProg можно скачать по ссылке: https://yadi.sk/d/5tS08BHH3QFGNc
Ну и подробнее о добавлении каждого блока рассказано в видео:
Создание меню с помощью программы FLProg
Добрый день. В программе FLProg начиная с версии 2.1. появились блоки конструктора меню. В данном уроке будет рассмотрено создание меню с помощью данных блоков.
Для того что бы было интереснее рассмотрим реальную задачу. Соберём блок контроля температуры, в который будет входить датчик температуры, нагреватель и вентилятор. Кроме того включение вентилятора или нагревателя будет сопровождаться звуковым сигналом. С помощью меню будем настраивать пороги включения и выключения устройств и необходимость звукового сигнала. Для упрощения отладки датчик температуры для начала будем симулировать с помощью переменного резистора.
Первый вариант устройства будет состоять из:
Двух релейных блоков:
И активного зуммера:
Вот принципиальная схема устройства
Рассмотрим каждую плату по отдельности.
На этой плате анализируется сигнал кнопок LCD Keypad Shield и формируются соответствующие сигналы. Анализ производится с помощью пользовательского блока 5Bin1. Создание данного блока рассматривается в этом уроке, там же можно скачать этот блок.
Поскольку кнопок на шилде маловато, расширим возможности кнопки “Select”.
Данная схема работает следующим образом. При коротком нажатии на кнопку формируется импульс «Зайти в меню», при длительном (длительностью более уставки таймера TON), формируется импульс «Выйти из меню».
На этой плате формируется сигнал активации меню. Таймер TON необходим для защиты от случайного формирования этого сигнала при старте контроллера. Ну и непосредственно плата с основным блоком меню.
В описании блока меню (вкладка «Информация» редактора блока) я постарался максимально полно описать работу блока. Рассмотрим настойки блока в данном конкретном случае.
Вкладка – «Дерево меню»:
Дерево меню состоит из двух групп меню для настроек температур включения и выключения нагревателя и вентиляции, а так же одиночного пункта для управления активностью звука. Вообще данный блок позволяет строить меню любой сложности и вложенности. Главное что бы хватило памяти контроллера.
Настройка группового пункта меню.
Настройки пунктов настроек температуры.
Немного уточню по поводу стартового значения в EEPROM. Это значение запишется в EEPROM в начале первого цикла после загрузки программы в контроллер. Это произойдёт только один раз после каждой новой загрузки программы в контроллер. Остальные пункты меню связанные с температурой аналогичны этому.
Настройки пункта меню управления звуком:
Тексты для True и False будут выводится на выход ValStr при соответствующих значениях пунктов меню.
Закладка – «Управление меню»:
Тут вроде всё интуитивно понятно.
Закладка – «Управление значением»
В выбранном режиме изменений при кратковременном нажатии на кнопку изменения значения оно изменяется на величину заданного шага. Если удерживать данную кнопку более 2 секунд значение будет изменяться на величину заданного шага каждые полсекунды. Если продолжать удерживать кнопку ещё в течении 2 секунд период изменения значения уменьшится до 200 ms.
Выход «Активно главное меню» необходимо для формирования сигнала «Активация меню». Последующие две платы практически одинаковы, и в особых объяснениях не нуждаются.
Обращу только внимание на входы CanValUp у блоков MenuValue. При высоком уровне на этом входе значение на выходе Q соответствует значению выбранного пункта меню. По заднему фронту на этом входе значение на выходе «замораживается» до появления на этом входе высокого уровня. Это необходимо для того, что бы значение не изменялось до окончании его редактирования (закрытия меню).
Оставшиеся платы так же просты и не нуждаются в пояснениях.
Теперь немного «прокачаем» проект. Заменим LCD Keypad Shield на матричную клавиатуру 4х4 и дисплей 4х20 подключенный по I2C.
Это позволит задавать значение не пошагово, а простым вводом цифр. Кроме того это позволит сделать вход в меню по паролю. Изменённая схема проекта.
Рассмотрим изменённые платы
Используется стандартный блок опроса матричной клавиатуры из библиотеки элементов.
При нажатии кнопки «*» активируется меню. Только на этот раз не основное меню, а меню для ввода пароля.
Настройки парольного меню
Данное меню состоит из одного пункта, служащего для ввода пароля. Использован тип Long Integer для увеличения количества символов пароля.
На этой плате проверяется правильность ввода пароля. При совпадении введённого пароля и сохранённого в основном меню включается основное меню. При выходе из меню в значение вводимого пароля записывается 0 (подготовка к следующему вводу)
В основное дерево меню добавлен пункт для настройки сохранённого пароля.
Так же изменения коснулись закладки «Управление значением»
Управление значением переведено на непосредственный ввод цифр. Остальные платы не изменились.
Использование резистора в качестве задания температуры удобно для отладки, но в реальном применении все таки необходим датчик температуры. Используем датчик температуры DS18B20. Для этого необходимо изменить первую плату в обоих проектах.
Блок «ScanOneWare» служит для автоматического определения адреса датчика. Это позволяет заменить в случае необходимости датчик температуры без перепрошивки контроллера.
Схема с LCD Keypad Shield.
Схема с матричной клавиатурой
Ну, вот и всё, если что то не понятно, задавайте вопросы в комментариях — отвечу.
Создание меню с помощью программы FLProg
Добрый день. В программе FLProg начиная с версии 2.1. появились блоки конструктора меню. В данном уроке будет рассмотрено создание меню с помощью данных блоков.
Для того что бы было интереснее рассмотрим реальную задачу. Соберём блок контроля температуры, в который будет входить датчик температуры, нагреватель и вентилятор. Кроме того включение вентилятора или нагревателя будет сопровождаться звуковым сигналом. С помощью меню будем настраивать пороги включения и выключения устройств и необходимость звукового сигнала. Для упрощения отладки датчик температуры для начала будем симулировать с помощью переменного резистора.
Первый вариант устройства будет состоять из:
Arduino Uno:
LCD Keypad Shield
Двух релейных блоков:
И активного зуммера:
Вот принципиальная схема устройства
Для начала целиком проект.
Рассмотрим каждую плату по отдельности.
На этой плате анализируется сигнал кнопок LCD Keypad Shield и формируются соответствующие сигналы. Анализ производится с помощью пользовательского блока 5Bin1. Создание данного блока рассматривается в этом уроке, там же можно скачать этот блок.
Поскольку кнопок на шилде маловато, расширим возможности кнопки “Select”.
Данная схема работает следующим образом. При коротком нажатии на кнопку формируется импульс «Зайти в меню», при длительном (длительностью более уставки таймера TON), формируется импульс «Выйти из меню».
На этой плате формируется сигнал активации меню. Таймер TON необходим для защиты от случайного формирования этого сигнала при старте контроллера. Ну и непосредственно плата с основным блоком меню.
В описании блока меню (вкладка «Информация» редактора блока) я постарался максимально полно описать работу блока. Рассмотрим настойки блока в данном конкретном случае.
Вкладка – «Дерево меню»
Дерево меню состоит из двух групп меню для настроек температур включения и выключения нагревателя и вентиляции, а так же одиночного пункта для управления активностью звука. Вообще данный блок позволяет строить меню любой сложности и вложенности. Главное что бы хватило памяти контроллера.
Настройка группового пункта меню.
Настройки пунктов настроек температуры.
Немного уточню по поводу стартового значения в EEPROM. Это значение запишется в EEPROM в начале первого цикла после загрузки программы в контроллер. Это произойдёт только один раз после каждой новой загрузки программы в контроллер. Остальные пункты меню связанные с температурой аналогичны этому.
Настройки пункта меню управления звуком:
Тексты для True и False будут выводится на выход ValStr при соответствующих значениях пунктов меню.
Закладка – «Управление меню»:
Тут вроде всё интуитивно понятно.
Закладка – «Управление значением»
В выбранном режиме изменений при кратковременном нажатии на кнопку изменения значения оно изменяется на величину заданного шага. Если удерживать данную кнопку более 2 секунд значение будет изменяться на величину заданного шага каждые полсекунды. Если продолжать удерживать кнопку ещё в течении 2 секунд период изменения значения уменьшится до 200 ms.
Закладка «Выхода»
Выход «Активно главное меню» необходимо для формирования сигнала «Активация меню». Последующие две платы практически одинаковы, и в особых объяснениях не нуждаются.
Обращу только внимание на входы CanValUp у блоков MenuValue. При высоком уровне на этом входе значение на выходе Q соответствует значению выбранного пункта меню. По заднему фронту на этом входе значение на выходе «замораживается» до появления на этом входе высокого уровня. Это необходимо для того, что бы значение не изменялось до окончании его редактирования (закрытия меню).
Оставшиеся платы так же просты и не нуждаются в пояснениях.
Теперь немного «прокачаем» проект. Заменим LCD Keypad Shield на матричную клавиатуру 4х4 и дисплей 4х20 подключенный по I2C.
Это позволит задавать значение не пошагово, а простым вводом цифр. Кроме того это позволит сделать вход в меню по паролю. Изменённая схема проекта.
Рассмотрим изменённые платы
Используется стандартный блок опроса матричной клавиатуры из библиотеки элементов.
При нажатии кнопки «*» активируется меню. Только на этот раз не основное меню, а меню для ввода пароля.
Настройки парольного меню
Данное меню состоит из одного пункта, служащего для ввода пароля. Использован тип Long Integer для увеличения количества символов пароля.
На этой плате проверяется правильность ввода пароля. При совпадении введённого пароля и сохранённого в основном меню включается основное меню. При выходе из меню в значение вводимого пароля записывается 0 (подготовка к следующему вводу)
В основное дерево меню добавлен пункт для настройки сохранённого пароля.
Так же изменения коснулись закладки «Управление значением»
Управление значением переведено на непосредственный ввод цифр. Остальные платы не изменились.
Использование резистора в качестве задания температуры удобно для отладки, но в реальном применении все таки необходим датчик температуры. Используем датчик температуры DS18B20. Для этого необходимо изменить первую плату в обоих проектах.
Блок «ScanOneWare» служит для автоматического определения адреса датчика. Это позволяет заменить в случае необходимости датчик температуры без перепрошивки контроллера.
Создание меню с помощью программы FLProg
Первый вариант устройства будет состоять из:
Arduino –Uno
двух релейных блоков
и активного зуммера
Вот принципиальная схема устройства
Рассмотрим каждую плату по отдельности.
На этой плате анализируется сигнал кнопок LCD Keypad Shield и формируются соответствующие сигналы. Анализ производится с помощью пользовательского блока 5Bin1. Создание данного блока рассматривается в этом уроке, там же можно скачать этот блок.
Поскольку кнопок на шилде маловато, расширим возможности кнопки “Select”.
Данная схема работает следующим образом. При коротком нажатии на кнопку формируется импульс «Зайти в меню», при длительном (длительностью более уставки таймера TON), формируется импульс «Выйти из меню».
На этой плате формируется сигнал активации меню. Таймер TON необходим для защиты от случайного формирования этого сигнала при старте контроллера.
Ну и непосредственно плата с основным блоком меню.
В описании блока меню (вкладка «Информация» редактора блока) я постарался максимально полно описать работу блока. Рассмотрим настойки блока в данном конкретном случае.
Вкладка – «Дерево меню»
Дерево меню состоит из двух групп меню для настроек температур включения и выключения нагревателя и вентиляции, а так же одиночного пункта для управления активностью звука. Вообще данный блок позволяет строить меню любой сложности и вложенности. Главное что бы хватило памяти контроллера.
Настройка группового пункта меню.
Настройки пунктов настроек температуры.
Немного уточню по поводу стартового значения в EEPROM. Это значение запишется в EEPROM в начале первого цикла после загрузки программы в контроллер. Это произойдёт только один раз после каждой новой загрузки программы в контроллер.
Остальные пункты меню связанные с температурой аналогичны этому.
Настройки пункта меню управления звуком
Тексты для True и False будут выводится на выход ValStr при соответствующих значениях пунктов меню.
Закладка – «Управление меню»
Тут вроде всё интуитивно понятно.
Закладка – «Управление значением»
В выбранном режиме изменений при кратковременном нажатии на кнопку изменения значения оно изменяется на величину заданного шага. Если удерживать данную кнопку более 2 секунд значение будет изменяться на величину заданного шага каждые полсекунды. Если продолжать удерживать кнопку ещё в течении 2 секунд период изменения значения уменьшится до 200 ms.
Выход «Активно главное меню» необходимо для формирования сигнала «Активация меню».
Последующие две платы практически одинаковы, и в особых объяснениях не нуждаются.
Обращу только внимание на входы CanValUp у блоков MenuValue. При высоком уровне на этом входе значение на выходе Q соответствует значению выбранного пункта меню. По заднему фронту на этом входе значение на выходе «замораживается» до появления на этом входе высокого уровня. Это необходимо для того, что бы значение не изменялось до окончании его редактирования (закрытия меню).
Оставшиеся платы так же просты и не нуждаются в пояснениях.
Теперь немного «прокачаем» проект. Заменим LCD Keypad Shield на матричную клавиатуру 4х4 и дисплей 4х20 подключенный по I2C.
Это позволит задавать значение не пошагово, а простым вводом цифр. Кроме того это позволит сделать вход в меню по паролю.
Изменённая схема проекта.
Рассмотрим изменённые платы
Используется стандартный блок опроса матричной клавиатуры из библиотеки элементов.
При нажатии кнопки «*» активируется меню. Только на этот раз не основное меню, а меню для ввода пароля.
Настройки парольного меню
Данное меню состоит из одного пункта, служащего для ввода пароля. Использован тип Long Integer для увеличения количества символов пароля.
На этой плате проверяется правильность ввода пароля. При совпадении введённого пароля и сохранённого в основном меню включается основное меню. При выходе из меню в значение вводимого пароля записывается 0 (подготовка к следующему вводу)
В основное дерево меню добавлен пункт для настройки сохранённого пароля.
Так же изменения коснулись закладки «Управление значением»
Управление значением переведено на непосредственный ввод цифр.
Остальные платы не изменились.
Использование резистора в качестве задания температуры удобно для отладки, но в реальном применении все таки необходим датчик температуры. Используем датчик температуры DS18B20. Для этого необходимо изменить первую плату в обоих проектах.
Блок «ScanOneWare» служит для автоматического определения адреса датчика. Это позволяет заменить в случае необходимости датчик температуры без перепрошивки контроллера.
Схема с матричной клавиатурой
Схема с LCD Keypad Shield и резистором
Схема с LCD Keypad Shield и датчиком
Схема с матричной клавиатурой и резистором
Схема с матричной клавиатурой и датчиком
Ну, вот и всё, если что то не понятно, задавайте вопросы в комментариях — отвечу.