Roccat представила клавиатуру с распознающими степень нажатия кнопками и мышь с новым сенсором разрешением 12 000 точек на дюйм
На выставку CES 2017 компания Roccat привезла несколько новинок. Из них хочется выделить клавиатуру, кнопки которой «понимают» степень нажатия и новый сенсор мыши Owl-Eye, представленный в нескольких новых устройствах.
Толстая грань между клавиатурой и геймпадом стала немного меньше благодаря наработке от Roccat. Мощность нажатия – одно из отличий этих двух устройств.
Так, на геймпаде возможно регулировать, например, степень нажатия на педаль газа в гоночных играх, а на клавиатуре это пока было недоступно (либо «в пол», либо никак).
Первой такой клавиатурой стала ISKU+. Не все кнопки оснащены специальным механизмом, а только блок Q, W, E, A, S, D. Для начала этого будет вполне достаточно, но было бы хорошо иметь такую же функциональность и на блоке стрелок, которым часто пользуются игроки для управления, к примеру, машинами.
Хороша новость еще тем, что клавиатура не будет стоить заоблачных денег, а обойдется в $100. Но тут же есть и небольшое разочарование, клавиатура представлена только в мембранном варианте и поклонники механики пока не смогут опробовать новую функциональность не изменяя своим принципам.
Еще одним обновлением в продуктах Roccat стал новый оптический сенсор Owl-Eye. На выставке показались сразу три мыши с новой оптикой: Kone EMP, Kone Pure 2017 и Leadr.
Доработанный сенсор PixArt 3361 c разрешением 12000 DPI обещает предоставить натуральные ощущения от перемещения и скорости реакции.
Регулировать DPI можно с шагом в 100 (от 100 до 12000), хотя производитель советует значение от 400 до 3000.
Точной даты поставки и стоимости новых мышек пока нет.
Кнопка ардуино
Тактовые кнопки и кнопки-переключатели
Как обычно, начинаем раздел с простых вещей, интересных только начинающим. Если вы владеете азами и хотите узнать о различных вариантах подключения кнопки к ардуино – можете пропустить этот параграф.
Что такое кнопка? По сути, это достаточно простое устройство, замыкающее и размыкающее электрическую сеть. Выполнять это замыкание/размыкание можно в разных режимах, при этому фиксировать или не фиксировать свое положение. Соответственно, все кнопки можно поделить на две большие группы:
- Кнопки переключатели с фиксацией. Они возвращаются в исходное состояние после того, как их отпустили. При в зависимости от начального состояния разделяют на нормально-замкнутые и нормально-разомкнутые кнопки.
- Кнопки без фиксации (тактовые кнопки). Они фиксируются и остаются в том положении, в котором их оставили.
Вариантов различных кнопок великое множество, это действительно один из самых распространенных видов электронных компонентов.
Кнопки ардуино для простых проектов
В наших проектах мы будем работать с очень простыми тактовыми кнопками с 4 ножками, которые идут практически в любом наборе ардуино. Кнопка представляет собой переключатель с двумя парами контактов. Контакты в одной паре соединены между собой, поэтому больше одного выключателя в схеме реализовать не удастся, но вы можете одновременно управлять двумя параллельными сегментами, это бывает полезно.
В зависимости от ситуации, вы можете создавать как схемы с нормально замкнутыми, так и с нормально разомкнутыми контактами – для этого нужно будет только соответствующим образом выполнить соединение в схеме.
Для удобства работы в комплекте с тактовой кнопкой обычно идет пластмассовый колпачок какого-то цвета, он достаточно очевидно надевается на кнопку и придает проекту менее хакерский вид.
Как подключить кнопку и светодиод к Ардуино
Для занятия нам понадобятся следующие детали:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- 2 резистора 220 Ом;
- 2 тактовых кнопки;
- провода «папа-папа».
Схема для включения/выключения светодиода кнопкой от Ардуино
Для переключения светодиода кнопкой Ардуино соберите схему, как на изображении выше
Обратите внимание, что тактовая кнопка на макетной плате подключена к микроконтроллеру без подтягивающего резистора. Пин 2 подключен к 5V через встроенный резистор, поэтому при отпущенной кнопке на входе пине 2 будет высокий уровень сигнала, а при нажатии кнопки будет низкий уровень
Скетч. Управление светодиодом Ардуино через кнопку
boolean buttonWasUp = true; boolean ledEnabled = false; void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); } void loop() { // узнаем, отпущена ли кнопка сейчас boolean buttonIsUp = digitalRead(2); // если кнопка была отпущена и не отпущена сейчас if (buttonWasUp && !buttonIsUp) { // исключаем дребезг контактов тактовой кнопки delay(10); // и считываем сигнал с кнопки снова buttonIsUp = digitalRead(2); // если кнопка нажата, то переворачиваем сигнал светодиода if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(10, ledEnabled); } } // запоминаем состояние кнопки для новой итерации buttonWasUp = buttonIsUp; }
Пояснения к коду:
- — это глобальная переменная Ардуино, которая может принимать всего два значения – true (истина) и false (ложь);
- задержка в программе позволяет избежать «дребезг контактов» кнопки и исключить ложное срабатывание.
Схема управления светодиодом двумя кнопками от Ардуино
Скетч. Управление двумя кнопками одним светодиодом
boolean button1WasUp = true; boolean button2WasUp = true; void setup() { pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(2, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); } void loop() { // узнаем, отпущены ли две кнопки сейчас boolean button1IsUp = digitalRead(2); boolean button2IsUp = digitalRead(4); // если кнопка 1 была отпущена и не отпущена if (button1WasUp && !button1IsUp) { delay(10); // повторно считываем сигнал с кнопки 1 button1IsUp = digitalRead(2); if (!button1IsUp) { digitalWrite(10, LOW); } } // если кнопка 2 была отпущена и не отпущена if (button2WasUp && !button2IsUp) { delay(10); // повторно считываем сигнал с кнопки 2 button2IsUp = digitalRead(4); if (!button2IsUp) { digitalWrite(10, HIGH); } } // запоминаем состояние двух кнопок ардуино button1WasUp = button1IsUp; button2WasUp = button2IsUp; }
Пояснения к коду:
- данный пример программы позволяет включать светодиод нажатием одной кнопки и выключать светодиод нажатием второй кнопки;
- задержка Ардуино позволяет избежать «дребезг контактов» кнопки и исключить возможность ложного срабатывания.
Следующий пример тоже потребует для подключения к Ардуино две кнопки, два светодиода, как на предыдущей схеме. Но вместо простого включения/выключения диода, мы будем увеличивать и уменьшать яркость светодиода с помощью ШИМ сигнала микроконтроллера. Загрузите пример программы для «Светодиод и кнопка Ардуино ШИМ», чтобы получить понятие о принципе работы кнопки с Arduino Uno.
Скетч. Управление яркостью светодиода кнопкой Ардуино
#define PLUS_BUTTON 2 #define MINUS_BUTTON 4 int brightness = 100; boolean plusUp = true; boolean minusUp = true; void setup() { pinMode(10, OUTPUT); pinMode(PLUS_BUTTON, INPUT_PULLUP); pinMode(MINUS_BUTTON, INPUT_PULLUP); } void loop() { analogWrite(10, brightness); // реагируем на нажатия кнопки с помощью функции handleClick plusUp = handleClick(PLUS_BUTTON, plusUp, +20); minusUp = handleClick(MINUS_BUTTON, minusUp, -20); } boolean handleClick(int buttonPin, boolean wasUp, int delta) { boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) { delay(10); isUp = digitalRead(buttonPin); // если был клик кнопки, меняем яркость в пределах от 0 до 255 if (!isUp) brightness = constrain(brightness + delta, 0, 255); } return isUp; }
Пояснения к коду:
- для подключения светодиода следует использовать пин с ШИМ модуляцией;
- начальное значение яркости равен ста, в программе прирост и уменьшение яркости (20) можно поменять по своему усмотрению.
Программный способ устранения дребезга кнопок
Самым простым способом справиться с проблемой дребезга кнопки является выдерживание паузы. Мы просто останавливаемся и ждем, пока переходный процесс не завершится. Для этого можно использовать функцию delay()или millis() (за подробной информации можете обратиться к статье про использование функций delay() и millis() в ардуино). 10-50 миллисекунд – вполне нормальное значение паузы для большинства случаев.
int currentValue, prevValue; void loop() { currentValue = digitalRead(PIN_BUTTON); if (currentValue != prevValue) { // Что-то изменилось, здесь возможна зона неопределенности // Делаем задержку delay(10); // А вот теперь спокойно считываем значение, считая, что нестабильность исчезла currentValue = digitalRead(PIN_BUTTON); } prevValue = currentValue; Serial.println(currentValue); }
В данном примере мы использовали задержку в программе, чтобы не реагировать на случайные всплески и определить реальную смену сигнала.
Борьба с дребезгом кнопки с помощью библиотеки ардуино
Пример использования библиотеки:
#include <Bounce2.h>; #define PIN_BUTTON 2 #define PIN_LED 13 // Создаем объект Bounce debouncer = Bounce(); void setup() { // Устаовили тип пина pinMode(PIN_BUTTON, INPUT_PULLUP); // Даем бибилотеке знать, к какому пину мы подключили кнопку debouncer.attach(PIN_BUTTON); debouncer.interval(5); // Интервал, в течение которого мы не буем получать значения с пина //Setup the LED : pinMode(PIN_LED, OUTPUT); } void loop() { // Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop debouncer.update(); // Получаем значение кнопки int value = debouncer.read(); // Теперь мы точно знаем, в каком состоянии находится наша кнопка if ( value == LOW ) { digitalWrite(PIN_LED, HIGH ); } else { digitalWrite(PIN_LED, LOW ); } }
Технология Force Touch (распознавание силы нажатия): принцип работы, как пользоваться?
Force Touch предназначен для замены такого популярного аксессуара, как компьютерная мышь. Благодаря специальной технологии мультитатч тачпады могут понимать жесты. В настоящий момент появилась возможность понимания силы нажатия, то есть отклик на физическое воздействие. Данная технология может быть использована практически во всех моделях техники от компании Apple.
Технология Force Touch: знакомство с терминами
С внедрением таких технологий появилась возможность использования новых терминов. Далее будет рассказано об этих терминах.
- Сильное нажатие. Этот вид нажатия стал использоваться относительно недавно. Использовать его можно, совершенно не беспокоясь за целостность самого оборудования.
- Тактильный вид отклика. Оборудование реагирует на легкую вибрацию.
- Специальный привод Таптик Энджайн. Под этим названием скрывается обычный электромагнит.
- Чувствительность к силе нажатия.
Устройство Force Touch
Стоит отметить, что данная технология, способствует дополнительным возможностям, которые, в свою очередь, могут посодействовать в выполнении новых задач.
Что касается новых часов Apple Watch, то здесь используется такая же технология, что и в любых других видах техники от компании Apple.
Как пользоваться Force Touch?
Поскольку ежедневно возникают сотни программ и приложений, технология сильного нажатия будет наиболее актуальна для пользователей компьютеров от компании Apple.
Стоит отметить, что относительно недавно появилась возможность использования данной технологии с некоторыми программами. Однако говорить об общем использовании пока не приходится.
Сейчас имеется возможность задействовать технологию в следующих ситуациях:
- Поиск слов в словарях Сафари и Майл.
- Осуществление метки на карте.
- Выделение всех диалоговых окон.
- Установка различных дат и событий в приложении «Календарь».
Кроме всего прочего, имеется возможность использования данной технологии в Apple для программ, которые предназначены для просмотра и редактирования фото и видеофайлов. К таким программам можно отнести следующее:
- Аймови.
- Квиктайм Плеер.
- Мовави.
В этих программах у вас будет возможность использовать различные варианты перемотки, а также выполнять некоторые другие действия с видеофайлами. Благодаря вибрации вы сможете понять, что воспроизведение видео окончено.
Подведение итогов
Стоит отметить, что технология Touch Force сможет помочь пользователю реализовать многие действия, которые сейчас недоступны. Данная технология обязательно будет использоваться и в следующем году во всех продуктах Apple.
Ошибки дребезга кнопки
Как отразится дребезг на нашем проекте? Да самым прямым образом – мы будем получать на входе совершенно случайный набор значений. Ведь если мы считываем значение с кнопки непрерывно, в каждом новом рабочем цикле функции loop, то будем замечать все “всплески” и “падения” сигнала. Потому что пауза между двумя вызовами loop составляет микросекунды и мы измерим все мелкие изменения.
Если мы хотим отследить ситуацию, когда кнопка была отпущена после нажатия, то получим множество ложных сигналов – она будет “нажата-отпущена” десятки раз, хотя мы выполнили лишь однократное нажатие.
Вот пример скетча, в котором непременно обнаружится ошибка дребезга
Мы сможем увидеть в мониторе порта в первые мгновения после нажатия целый набор нулей и единиц в случайной последовательности (не важно, что означает 1 – нажатие или отпускание кнопки, важен сам факт появления хаоса)
void loop() { if (digitalRead(PIN_BUTTON)) { Serial.println("1"); } else { Serial.println("0"); } }
Естественно, такое поведение ни к чему хорошему не приведет и нам нужно придумать способ борьбы с дребезгом. В нашем арсенале есть два способа: программный и аппаратный. Первый довольно простой, но не всегда его можно использовать в реальных проектах. Второй – более надежный, но требует существенных изменений в схеме. Давайте рассмотрим оба способа подробнее.
Переключение режимов с помощью кнопки
Для того, чтобы определить, была ли нажата кнопка, надо просто зафиксировать факт ее нажатия и сохранить признак в специальной переменной.
Факт нажатия мы определяем с помощью функции digitalRead(). В результате мы получим HIGH (1, TRUE) или LOW(0, FALSE), в зависимости от того, как подключили кнопку. Если мы подключаем кнопку с помощью внутреннего подтягивающего резистора, то нажатие кнопки приведет к появлению на входе уровня 0 (FALSE).
Для хранения информации о нажатии на кнопку можно использовать переменную типа boolean:
boolean keyPressed = digitalRead(PIN_BUTTON)==LOW;
Почему мы используем такую конструкцию, а не сделали так:
boolean keyPressed = digitalRead(PIN_BUTTON);
Все дело в том, что digitalRead() может вернуть HIGH, но оно не будет означать нажатие кнопки. В случае использования схемы с подтягивающим резистором HIGH будет означать, что кнопка, наоборот, не нажата. В первом варианте (digitalRead(PIN_BUTTON)==LOW ) мы сразу сравнили вход с нужным нам значением и определили, что кнопка нажата, хотя и на входе сейчас низкий уровень сигнала. И сохранили в переменную статус кнопки. Старайтесь явно указывать все выполняемые вами логические операции, чтобы делать свой код более прозрачным и избежать лишних глупых ошибок.
Как переключать режимы работы после нажатия кнопки?
Часто возникает ситуация, когда мы с помощью кнопок должны учитывать факт не только нажатия, но и отпускания кнопки. Например, нажав и отпустив кнопку, мы можем включить свет или переключить режим работы схемы. Другими словами, нам нужно как-то зафиксировать в коде факт нажатия на кнопку и использовать информацию в дальнейшем, даже если кнопка уже не нажата. Давайте посмотрим, как это можно сделать.
Логика работы программы очень проста:
- Запоминаем факт нажатия в служебной переменной.
- Ожидаем, пока не пройдут явления, связанные с дребезгом.
- Ожидаем факта отпускания кнопки.
- Запоминаем факт отпускания и устанавливаем в отдельной переменной признак того, что кнопка была полноценно нажата.
- Очищаем служебную переменную.
Как определить нажатие нескольких кнопок?
Нужно просто запомнить состояние каждой из кнопок в соответствующей переменной или в массиве ардуино. Здесь главное понимать, что каждая новая кнопка – это занятый пин. Поэтому если количество кнопок у вас будет большим, то возможно возникновение дефицита свободных контактов. Альтернативным вариантом является использование подключения кнопок на один аналоговый пин по схеме с резистивным делителем. Об этом мы поговорим в следующих статьях.
На Kickstarter появилась «магнитная» клавиатура, которая реагирует на силу нажатия
- Новости
- 01 августа 2019
Специальный механизм может рассчитывать перемещение кнопок вплоть до миллиметров.
Современной альтернативой «классическим» клавиатурам являются механические — их конструкция позволяет варьировать силу нажатия. Вместе с тем, в механических клавишах реализован тот же принцип, что и в «простых» — реакция на нажатие происходит после замыкания контакта, доведением кнопки до нижней точки. Производитель клавиатур Input Club решил пересмотреть этот принцип, предложив «магнитный» принцип работы клавиш.
На портале Kickstarter, позволяющем собирать средства для реализации идей, появилась «магнитная» клавиатура, которая реагирует на силу нажатия. Модель Keystone отличается отсутствием металлического контакта. Вместо этого в недрах клавиш помещён магнит, перемещение которого считывает датчик Холла — он измеряет перемещение кнопок, преобразуя его в электрический сигнал.
Руководитель Input Club Эндрю Лекашман уверяет что новая конструкция надёжней существующих механических клавиатур. Это обусловлено уменьшением количества подвижных деталей. По предварительным подсчётам, каждая клавиша Keystone способна выдержать до 1 млрд нажатий — вместо миллиона во флагманской клавиатуре Input Club Cherry MX. Более того, ремонт клавиатуры не будет требовать пайки, что ещё упростит эксплуатацию новинки.
Главным преимуществом разработки является полностью аналоговое управление. Клавиатура сможет отличить силу нажима, активируя соответствующие команды. По словам Лекашмана, датчики на клавиатуре способны различить 200-500 точек нажима. Это означает, что с Keystone переходить на заглавную букву можно будет без дополнительных кнопок.
Сделать заказ на клавиатуру можно, пожертвовав 149 долларов на Kickstarter — во столько обойдётся компактная версия устройства — без цифрового блока. Расширенное издание оценили в 188 долларов. Серийное производство наладят до конца текущего года, но сроки могут сместиться — всё зависит от того, как быстро будет собрана необходимая сумма.
Настройка Яндекс.Директ от 5 000 руб5.000 руб |
Печать на баннере, пластике, ткани, пленке250 руб |
Сток-центр компании «Окно в Европу» |
У подъезда пятиэтажки нашли расчлененного россиянина14 сентября 2020 17:22
В «пыточном» изоляторе в Минске почти закончились места14 сентября 2020 00:37
В США признали отсутствие доказательств сговора России с талибами15 сентября 2020 06:57
Сестра Ефремова назвала процесс над актером халтурным14 сентября 2020 20:18
Москвичка вызвала сантехника и лишилась спрятанных в носке денег15 сентября 2020 11:09
Эпохе роста спроса на нефть предсказали конец14 сентября 2020 12:15
Поставки американского газа в Европу рухнули14 сентября 2020 14:00
Facebook потратила почти 400 миллионов долларов на новый кампус15 сентября 2020 10:18
Рыбак за сутки поймал на удочку 2645 рыб и побил мировой рекорд14 сентября 2020 18:20
Раскрыты планы Huawei на рынке смартфонов14 сентября 2020 15:28
Генпрокуратура оценила бездействие бывшего мэра Норильска при разливе топлива14 сентября 2020 13:40
Лидер Therr Maitz поддержал ЛГБТ во время фестиваля традиционных ценностей14 сентября 2020 15:30
Телезрители вспомнили самые «сумасшедшие» случаи в прямом эфире14 сентября 2020 09:43
Прожившие в браке 48 лет муж и жена умерли с разницей в четыре минуты14 сентября 2020 02:05
Трамп выразил симпатию самым жестким лидерам14 сентября 2020 18:45
Будущий премьер Японии высказался о Курилах14 сентября 2020 13:17
Повариха, мотоциклистка и рэперша снялись в рекламе люксового нижнего белья14 сентября 2020 20:44
Неймар прокомментировал драку со своим участием в матче ПСЖ14 сентября 2020 09:33
Раскрыта новая причина смерти пациентов от коронавируса14 сентября 2020 21:01
В Югре сельское хозяйство поддержат почти двумя миллиардами рублей14 сентября 2020 14:04
Социологи заинтересовались новым методом определения легитимности выборов14 сентября 2020 18:13
Центр российского города забаррикадировали для борьбы с потопом14 сентября 2020 15:42
Назван главный российский актер десятилетия14 сентября 2020 14:27
Евросоюз отказался признать выборы в Крыму14 сентября 2020 11:47
США отказались признать выборы в Крыму15 сентября 2020 10:52
В России предложили разрешить вождение автомобиля с 16 лет14 сентября 2020 08:54
Россиянам пообещали потепление до 24 градусов14 сентября 2020 05:22
«Единая Россия» заявила о победе всех кандидатов на выборах14 сентября 2020 04:02
Причины дребезга кнопок
Кнопка ардуино – один из самых популярных и простых видов датчиков. В основе работы любой кнопки лежит механический способ смыкания-размыкания контактов. Нажимая на любую, даже самую простую тактовую кнопку, мы формируем определенное давление на внутренние механизмы (пластины или пружины), в результате чего происходит сближение или расхождение металлических пластин.
Мы люди взрослые и хорошо понимаем, что идеального в мире ничего не существует, в том числе идеально гладких поверхностей, контактов без неровностей, сопротивления и паразитной емкости. В нашем неидеальном мире в момент нажатия на кнопку в месте соединения контакты не соприкасаются мгновенно, микро-неровности на поверхности не позволяют пластинам мгновенно соединиться. Из-за этого в короткий промежуток времени на границе пластинок меняется и сопротивление, и взаимная емкость, из-за чего возникают масса разнообразных изменений уровня тока и напряжения. Другими словами, возникают очень интересные, хотя и не очень приятные процессы, которые в электротехнике называют переходными.
Переходные процессы протекают очень быстро и исчезают за доли миллисекунд. Поэтому мы редко их замечаем, например, когда включаем свет в комнате. Лампа накаливания не может менять свою яркость с такой скоростью, и тем более не может реагировать на изменения наш мозг. Но, обрабатывая сигал от кнопки на таком быстром устройстве, как Arduino, мы вполне можем столкнуться с такими переходными эффектами и должны их учитывать при программировании.
В идеальном мире форма сигнала после нажатия на кнопку должна быть строго прямоугольная. В реальных же условиях вместе резкого перехода мы видим множество пиков и спадов.
Как определить силу нажатия на устройство
Вы здесь: Главная — JavaScript — JavaScript Скрипты — Как определить силу нажатия на устройство.
В этой статье мы рассмотрим библиотеку, которая поможет нам отслеживать силу нажатия на экран или тачпад устройства пользователя.
Как многие, наверное, знают, относительно недавно вышел ноутбук от Apple, имеющий тачпад, поддерживающий ForceTouch – технологию, которая позволяет отслеживать силу нажатия.
Также вышел новый iPhone, где использована технология 3D Touch, которая делает то же самое, но уже на сенсорном дисплее устройства.
Технология достаточно интересная, и в этой статье мы рассмотрим Pressure – javascript библиотеку, которая позволит использовать возможности этой технологии на сайтах.
Установка и настройка
Скачайте нужные файлы на GitHub, либо используйте npm или bower:
npm install pressure —save // npm
bower install pressure —save // bower
Используйте pressure в глобальной области видимости:
Pressure.set(‘#id-name’, { change: function(force){ this.innerHTML = force; }
});
Или с browserify или CommonJS как установку.
var Pressure = require(‘pressure’); Pressure.set(‘#id-name’, { change: function(force){ this.innerHTML = force; }
});
Использование
Заметьте, что ключевое слово this в каждом методе обратного вызова будет самостоятельным элементом, к которому применена сила.
Pressure.set(‘#element’, { start: function(){ // this вызван в начале }, end: function(){ // this вызван в конце }, startDeepPress: function(){ // this вызван на «сильное нажатие» / «глубокое нажатие», когда сила больше 0.5 }, endDeepPress: function(){ // this вызван в конце «сильного нажатия» / «глубокого нажатия» }, change: function(force, event){ // this вызывается каждый раз, когда происходит изменение силы нажатия // значение силы будет всегда в диапазоне от 0 до 1 на мобильных и настольных устройствах }, unsupported: function(){ // this вызывается однажды, когда произведено нажатие на экран, но устройство или браузер не поддерживает технологию ForceTouch / 3D Touch }
});
Итак, на этом все
Спасибо за внимание!. Предыдущая статья Следующая статья
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья : http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так:
- Текстовая ссылка:Как создать свой сайт
Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи): [URL=»https://myrusakov.ru»]Как создать свой сайт
Подключение кнопки Ардуино
Включение и выключение светодиода с помощью кнопки
Давайте начнем с самого простого способа подключения тактовой кнопки. Рассмотрим схему с Arduino в качестве источника питания, светодиода, ограничительного резистора номиналом 220 Ом и кнопки, которая будет замыкать и размыкать цепь.
Если у вас переключатель другого типа, то можете смело выбрать контакты с противоположных углов (на некоторых кнопка делается специальный знак в виде выемки, по которому можно определить, с какой стороны расположены спаренные контакты). Самый надежный способ определить правильные ножки – это прозвонить контакты тестером.
Сама схема с кнопкой, светодиодом и контроллером Arduino не нуждается в особых пояснениях. Кнопка разрывает цепь, светодиод не горит. При нажатии цепь замыкается, светодиод включается. Если вы перепутаете контакты (включите через замкнутые спаренные контакты кнопки), то кнопка работать не будет, потому что цепь никогда не разомкнется. Просто поменяйте контакты местами.
Подключение кнопки с подтягивающим резистором
Давайте теперь подключим кнопку к ардуино так, чтобы можно было считывать в скетче ее состояние. Для этого воспользуемся следующей схемой.
В скетче мы будем отслеживать факт нажатия и выводить сообщение в монитор порта. Более интересный пример и подробное объяснение самой схемы мы приведем чуть позже.
Следует обратить внимание на сопротивление 10 К, которое мы добавили в этой схеме. Более подробно о его предназначении мы поговорим позже, просто имейте в виду, что такой резистор необходим для правильной работы схемы
Скетч для кнопки ардуино с подтягивающим резистором:
/* Пример использования тактовой кнопки в ардуино. Кнопка подключена к пину 2. */ const int PIN_BUTTON = 2; void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); } void loop() { // Получаем состояние кнопки и выводим в мониторе порта int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); delay(50); }
Аппаратный способ подавления дребезга кнопки
Подавление дребезга кнопки с помощью задержек в скетче – способ очень распространенный и не требующий изменения самой схемы. Но далеко не всегда его можно использовать – ведь 10 миллисекунд – это целая вечность для многих процессов в электроном мире. Также программный способ невозможно применять при использовании прерываний – дребезг приведет к многократному вызову функций и повлиять на этот процесс в скетче мы не сможем.
Более правильный (и более сложный) способ борьбы с дребезгом – использование аппаратного решения, сглаживающего импульсы, посылаемые с кнопки. Для этого, правда, придется внести изменения в схему.
Аппаратный способ устранения дребезга основан на использовании сглаживающих фильтров. Сглаживающий фильтр, как следует из названия, занимается сглаживанием всплесков сигналов за счет добавления в схему элементов, имеющих своеобразную “инерцию” по отношению к таким электрическим параметрам как ток или напряжение. Самым распространенным примером таких “инерционных” электронных компонентов является конденсатор. Он может “поглощать” все резкие пики, медленно накапливая и отдавая энергию, точно так же, как это делает пружина в амортизаторах.
За счет инерции устройство как утюгом походит по “мятому” сигналу с большим количеством пиков и впадин, создавая пусть и не идеальную, но вполне гладкую кривую, у которой легче определить уровень срабатывания.
Пример простого фильтра на базе RC-цепочки
Схема подключение фильтра для устранения дребезга:
Пример подключения к плате ардуино
Форма сигнала после использования фильтра:
Как видим, “лес” дребезга сменился достаточно плавной линией, с которой уже можно работать дальше.
Подавление дребезга с помощью триггера шмидта
Сделать квадратную форму сигнала с помощью простой RC цепочки невозможно. Для “огранения” сглаженных форм используется специальный компонент, который называется триггер шмидта. Его особенностью является срабатывание при достижении определенного уровня сигнала. На выходе триггера шмидта мы получим или высокий или низкий уровень сигнала, никаких промежуточных значений. Выход триггера инвертированный: при спаде входного сигнала он выдает на выходе включение и наоборот. Ниже представлена схема и результат работы с триггером шмидта.
Иллюстрация результата работы:
Как видим, мы практически полностью избавились от результатов переходных процессов, сперва превратив хаос в почти гладкую кривую линию, а затем с помощью триггера шмидта “отрубили” хвосты, придав сигналу практически идеальный вид. Подав его на вход ардуино, мы уже можем не беспокоиться о ложных срабатываниях и смело использовать в скетче метод digitalRead и прерывания.