FLProg
Вход на сайт
Логин:
Пароль:
Категории раздела
Документация [18]
Блоки пользователей [162]
Цветовые темы [0]
Цветовые темы для программы FLProg предоставленные пользователями
Архив версий программы [188]
Поиск
...
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
Вторник, 11.12.2018, 00:09
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Внимание всем пользователям программы FLProg! В течении ближайших двух дней будет осуществляться переход на новую платформу
Чтобы продолжить общение на форуме вы можете перейти сюда
Сообщения оставленные на старом форуме будут утеряны безвозвратно
Приятного Вам Нового года и до встречи в новом 2018 году
С уважением Администрация flprog.ru
Каталог файлов
Главная » Файлы » Блоки пользователей

IntButton - Интеллектуальная кнопка
[ · Скачать удаленно () ] 07.07.2017, 21:17


Блок распознает разные типы нажатий и выдает короткий импульс (логическую 1) на соответствующие выходы One и Doubl.
На выходе DurLong подается логическая 1 с момента срабатывания удержания и до прекращения подачи сигнала на вход (in).

Выходы:
One; Выход одиночного нажатия (короткий импульс).
Doubl; Выход двойного нажатия (короткий импульс).
DurLong; Выход "во время удержания" (длительный сигнал).

Настраиваемые парамеры:
Tout - Время задержки логической единицы на выходах One и Doubl (ms).
doub - Время ожидания двойного клика (ms)
hold - Время ожидания удержания (ms)

При использовании блока с физическими входами (пинами) необходимо включить антидребезг.
При использовании подтягивающего резистора - инвертировать вход

Возможно использовать с логическим входом (с блоками типа: "несколько кнопок на одном пине")

Тема здесь: http://flprog.ru/forum/20-2312-1
Категория: Блоки пользователей | Добавил: Dryundel | Теги: кнопка
Просмотров: 2500 | Загрузок: 662 | Комментарии: 3 | Рейтинг: 4.3/6
Всего комментариев: 3
avatar
-1
1 AV KV • 10:39, 25.09.2017
Эт что получается ,что при любом нажатии кнопки на выходе DurLong всегда будет импульс ?
avatar
0
2 Serg Tkachuk • 17:52, 12.10.2017
Хорошая идея. Но у меня работала не стабильно. Далеко не всегда  исчезал импульс One и Double.  Вылечилось изменением метода сравнения с "равно" на "больше или равно" в LoopSection:

Было 
if (en){
  // Отработка режимов
  // Если требуются разные задержки для выходов, заменить Tout 
  // на конкретное время (в миллисекундах)
  if (One && next1 < millis()) {next1 = millis() + Tout;}     // 1 нажатие
  if (One && next1 == millis()) {One = 0;}
  if (Doubl && next2 < millis()) {next2 = millis() + Tout;}     // 2 нажатия
  if (Doubl && next2 == millis()) {Doubl = 0;}

Стало 

if (en){
  // Отработка режимов
  // Если требуются разные задержки для выходов, заменить Tout 
  // на конкретное время (в миллисекундах)
  if (One && next1 < millis()) {next1 = millis() + Tout;}     // 1 нажатие
  if (One && next1 >= millis()) {One = 0;}
  if (Doubl && next2 < millis()) {next2 = millis() + Tout;}     // 2 нажатия
  if (Doubl && next2 >= millis()) {Doubl = 0;}

Возможно, автор рассмотрит?
avatar
0
3 aidar_i • 23:35, 29.01.2018
Можно сделать второй выход press2? Чтобы при нажатии сперва включался первый press при следующем второй.
avatar
FLProg © 2018
uCozЯндекс.Метрика