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

Онлайн всего: 34
Гостей: 21
Пользователей: 13
Novichok, НовыйUser, Shturman, Axelforce, Ethantrivy, Anydy, golowa70, Sancho, hamelion1279, thoti3S, dmitriy7788, Skaynet, nalnik
Пятница, 15.12.2017, 20:32
Приветствую Вас Гость | 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 | Теги: кнопка
Просмотров: 1788 | Загрузок: 420 | Комментарии: 2 | Рейтинг: 4.2/5
Всего комментариев: 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
Яндекс.Метрика