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

Онлайн всего: 29
Гостей: 25
Пользователей: 4
pa_bogidanov1965, СЛОН0077, alexcrey, Сергей
Пятница, 20.10.2017, 19:09
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

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


Каталог файлов
Главная » Файлы » Блоки пользователей

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 | Теги: кнопка
Просмотров: 1460 | Загрузок: 316 | Комментарии: 2 | Рейтинг: 4.0/4
Всего комментариев: 2
avatar
-1
1
Эт что получается ,что при любом нажатии кнопки на выходе DurLong всегда будет импульс ?
avatar
0
2
Хорошая идея. Но у меня работала не стабильно. Далеко не всегда  исчезал импульс 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
FLProg © 2017
Яндекс.Метрика