Как подключить кнопку


Arduino.ru

В этом примеры мы рассмотрим подключение кнопки к контроллеру Arduino. При нажатие кнопки мы будем зажигать встроенный светодиод. Большинство плат Arduino имеют встроенный SMT светодиод, подключенный к выходу 13 (pin 13).

Необходимые компоненты
  • контроллер Arduino
  • тактовая кнопка
  • 10кОм резистор
  • контактная макетная плата
  • соединительные провода
Подключение

Подключаем выход питания (5V) и землю (Gnd), красным и черным проводом соответственно к макетной плате. Обычно на макетных платах для питания и земли используют крайние ряды контактов, как показано на рисунке. Третьим синим проводом мы соединяем цифровой пин 2 контроллера Arduino к контакту тактовой кнопки. К этому же контакту, либо к контакту, постоянно соединенному с ней в 4х штырковом исполнении, подключаем подтягивающий резистор 10 кОм, который в свою очередь соединяем с землей. Другой выход кнопки соединяем с питанием 5 В. 

Когда тактовая кнопка не нажата, выход 2 подключен только к земле через подтягивающий резистор и на этом входе будет считываться LOW. А когда кнопка нажата появляется контакт между входом 2 и питанием 5В, и считываться будет HIGH.

Замечание: Чаще всего тактовые кнопки имеют по два контакта с каждой стороны так, как это показано на рисунке подключение. При этом по форме кнопка почти квадратная. ВАЖНО не перепутать при подключении какие контакты соединены, а какие замыкаются при нажатие. Лучше всего прозвонить кнопку если не уверены.

Можно также подключить кнопку наоборот — через подтягивающий резистор к питанию и через кнопку к земле. Тогда с входа будет считваться HIGH, а при нажатие кнопки LOW.

Если вход оставить неподключенным, то на входе будет считываться HIGH или LOW случайным образом. Именно поэтому мы используем подтягивающий резистор, чтобы задать определенное значение при ненажатой кнопке.

Схема

Код
/* Кнопка Включаем и выключаем светодиод нажатием кнопки. created 2005 by DojoDave modified 28 Oct 2010 by Tom Igoe This example code is in the public domain. */ // задаем константы const int buttonPin = 2; // номер входа, подключенный к кнопке const int ledPin = 13; // номер выхода светодиода // переменные int buttonState = 0; // переменная для хранения состояния кнопки void setup() { // инициализируем пин, подключенный к светодиоду, как выход pinMode(ledPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } void loop(){ // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { // включаем светодиод digitalWrite(ledPin, HIGH); } else { // выключаем светодиод digitalWrite(ledPin, LOW); } }

Смотрите также

  • pinMode()
  • digitalWrite()
  • digitalRead()
  • if()
  • else()
  • Blink

Как подключить кнопку включения к материнской плате

В процессе самостоятельной сборки ПК особое внимание уделяется правильности подключения элементов управления, имеющихся на лицевой панели, к размещенной внутри корпуса материнской плате. Ошибка в коммутации соединителей (коннекторов) с расположенными на материнке ответными частями не позволит подать на ПК питающие напряжения (приведет к невозможности его включения). Обесточенный компьютер превращается в этом случае в бесполезную вещь. В этой статье вы узнаете как правильно подключить кнопку включения компьютера к материнской плате.

Элементы управления

На лицевой части корпуса ПК располагаются все необходимые органы управления, включая кнопки, разъемы и индикаторные лампочки, по которым оценивается состояние его функциональных узлов (смотрите фото слева). От правильности их подключения зависит не только корректность работы компьютера, но и вообще – возможность его функционирования.

Один из важнейших элементов в этом комплекте – кнопка, ответственная за подачу питания на модули и узлы ПК (фото слева). Шлейф от нее «пробрасывается» вдоль корпуса к расположенной в системном блоке материнской плате.

Дополнительная информация: Другие названия этого рабочего модуля – системная плата или main board (дословно – основная «доска»).

При нажатии на кнопку включения, расположенную на лицевой панели ПК, сигнал управления поступает на запускающий узел системной платы. Именно он обеспечивает подачу питающих напряжений на все остальные рабочие модули (включая и саму материнку). Для того чтобы обеспечить корректное подключение компьютера к сети перед коммутацией его пусковых элементов потребуется определенная подготовка.

Подготовительные процедуры

Чтобы правильно подсоединить кнопку включения ПК к материнке – потребуется основательно приготовиться к этой операции, включая подготовку всего необходимого инструмента.

Важно! Упоминание об инструменте совсем не случайно, поскольку в некоторых моделях ПК (и системных плат) провести подключение шлейфа от кнопки вручную практически невозможно.

К числу подготовительных мероприятий следует отнести:

Внимательное изучение инструкции, прилагаемой к самой материнке. При ее отсутствии – поиск в Интернете информации по подключению модулей ПК данной модели.

Подготовка инструмента, который может потребоваться при коммутации шлейфа.

Основное внимание при изучении бумажной или электронной инструкции следует уделить принципиальной схеме материнки с указанной контактной группой (к ней впоследствии будет подключаться шлейф от кнопки). Она обычно размещается с края платы или ближе к ее центру (между слотами расширителей).

Обратите внимание: В той же схеме можно найти разводку выводов шлейфа, которая пригодится в случае, если на системной плате отсутствуют обозначения контактов (фото ниже).

Рис. №1 Обозначения контактов на плате и на коннекторе (схема коммутации)

Из инструментов нужно приготовить тонкий пинцет, необходимый для удержания коннектора шлейфа при его установке, а также отвертка со сменной битой. Она может потребоваться при снятии передней панели ПК.

Инструкция по подключению

Последовательность операций, осуществляемых при подключении модуля управления электрическим питанием ПК, выглядит так:

Сначала на материнке необходимо найти небольшой по размеру разъём, выполненный в виде двух рядов штырей с имеющимися под ними надписями.

Дополнительная информация: У некоторых материнских плат он располагается в правом нижнем углу.

Затем на разъёме согласно схеме рис №1 выбираются контакты для переключателя питания (их маркировка – POWER SW или PSW). После этого с внутренней стороны панели управления отыскивается шлейф, состоящий из 2-х жил с коннектором на конце.

На пластмассовом корпусе этого соединителя должно иметься то же обозначение, что и под ножками платы (POWER SW). После его нахождения пользователю останется лишь состыковать одноименные части контакторного разъема.

Размеры и того и другого чаще всего очень малы – так что вручную соединить их довольно сложно. Поэтому при обращении с ними рекомендуется воспользоваться пинцетом.

Надежно зажав в нем ответную часть разъема – коннектор, затем нужно будет с усилием надеть его на ножки материнской платы. По завершении этой операции следует подключить к соответствующим контактам шлейф от индикаторов (светодиодов), обозначенный на Рис.№1 как POWERLED.

Важное замечание! При установке корпуса POWER SW полярность подводки не имеет значения, однако для соблюдения единообразия его плоскость с надписью должна «смотреть» снаружи разъема.

При подключении индикатора этот фактор обязательно учитывается, поскольку светодиод будет загораться лишь при соблюдении полярности его включения. Не ошибиться с назначением отдельных контактов на системной плате поможет более подробное ознакомление с надписями, которые имеются под ними. Такая потребность возникает из-за отсутствия единого стандарта на графические и физические обозначения (маркировку).

Кстати, компьютер можно включить и без кнопки включения, как это сделать мы рассказывали в этой статье.

Обозначения разъемов для подсоединения кнопок и индикаторов

В непосредственной близости от имеющихся на системной плате групп контактных разъемов, предназначенных для определенных коммутаций, нанесено их функциональное обозначение. Такая предусмотрительность позволяет при сборке конкретной модели не допустить ошибки в подключении требуемого узла.

Важно! В большинстве образцов компьютеров функциональное назначение каждого соединителя дублируется цветом пластмассового корпуса разъёма, а для элементов индикации дополнительно указывается полярность (+ или – ).

На плате и коннекторе включения питания – уже упоминавшаяся надпись POWER SWITCH, а также PSW, PSWITCH или POWERSW. Для сброса (перезагрузки) – RESET, RESTART или RESETSW.

И, наконец, для элементов индикации режима работы применяются маркировочные обозначения POWERLED, PLED или PWLED и другие.

В заключение отметим, что на основной (материнской) плате могут располагаться и другие контактные группы, похожие на уже рассмотренные ранее разъемы. Однако все они предназначаются для совершенно иных целей.

Правильное подключение кнопки питания компьютера

Если у вас возникла необходимость в подключении кнопки питания компьютера, то в данной статье этот вопрос будет рассмотрен довольно подробно.

Итак, для того, чтобы правильно подключить кнопку включения компьютера на системном блоке к материнской плате необходимо выполнить 3 действия:

  1. Найти штекер кнопки в общем жгуте проводов корпуса по маркировке;
  2. Найти контакты для кнопки включения на материнской плате;
  3. Вставить штекер кнопки питания на соответствующие контакты материнской платы.

Находим в корпусе жгут проводов, идущий от передней панели или сверху корпуса. Выглядит он примерно вот так:

Контакты кнопки включения компьютера

Как видите каждая пара проводов оконечена двух контактным разъемом, который подписан.

Нас интересует разъем с надписью «Power SW». Также может иметь названия «Power BTN», «Power Switch», «PW».

Теперь, когда фишка кнопки включения найдена, нужно найти куда ее вставлять на материнской плате.

Для этого внимательно осматриваем материнскую плату, а точнее ее правый нижний угол, так как в 90% случаев именно справа внизу и находятся контакты кнопки включения, кнопки перезагрузки, а также световой индикации.

На заметку! Компьютер можно включить и без кнопки включения. Для этого достаточно замкнуть отверткой контакты кнопки «Power SW».

Выглядят они вот так:

Контакты кнопки включения на материнской плате с подписями

Контакты кнопки включения на материнской плате без подписей

На первом фото видно, что каждая пара контактов подписана и вы, наверное, догадались, что нашу фишку кнопки включения с подписью «Power SW» («Power BTN», «Power Switch», «PW») нужно как бы надеть на соответствующие «ножки», которые также подписаны.

Так выглядит подключенная кнопка включения

В большинстве случаев на материнской плате все контакты подписаны, как на первом фото, но бывают случаи, как на втором фото, кто этих самых надписей нет. Что делать в этом случае?

Сперва определяем модель материнской платы. Далее вбиваем в гугл ее полное название и переходим на официальный сайт производителя платы (почти всегда будет на первом месте в выдаче).

Находим инструкцию к плате и смотрим в ней схему подключения всех кнопок корпуса системного блока.

Инструкция со схемой подключения кнопки включения к материнской плате

Подключение кнопки к ардуино

Подключение датчика кнопки к ардуино требует определенных знаний и навыков. В этой статье мы поговорим о том, что такое тактовая кнопка, что такое дребезг кнопки, как правильно подключать кнопку с подтягивающим и стягивающим резистором, как можно управлять с помощью кнопки светодиодами и другими устройствами.

Кнопка ардуино

Кнопка (или кнопочный переключатель) – самый простой и доступный из всех видов датчиков. Нажав на нее, вы подаете контроллеру сигнал, который затем приводит к каким-то действиям: включаются светодиоды, издаются звуки, запускаются моторы. В своей жизни мы часто встречаемся с разными выключателями и хорошо знакомы с этим устройством.

Тактовые кнопки и кнопки-переключатели

Как обычно, начинаем раздел с простых вещей, интересных только начинающим. Если вы владеете азами  и хотите узнать о различных вариантах подключения кнопки к ардуино – можете пропустить этот параграф.

Что такое кнопка? По сути, это достаточно простое устройство, замыкающее и размыкающее электрическую сеть. Выполнять это замыкание/размыкание можно в разных режимах, при этому  фиксировать или не фиксировать свое положение. Соответственно, все кнопки можно поделить на две большие группы:

  • Кнопки переключатели с фиксацией. Они возвращаются в исходное состояние после того, как их отпустили. При в зависимости от начального состояния разделяют на нормально-замкнутые и нормально-разомкнутые кнопки.
  • Кнопки без фиксации (тактовые кнопки). Они фиксируются и остаются в том положении, в котором их оставили.

Вариантов различных кнопок великое множество, это действительно один из самых распространенных видов электронных компонентов.

Кнопки ардуино для простых проектов

В наших проектах мы будем работать с очень простыми тактовыми кнопками с 4 ножками, которые идут практически в любом наборе ардуино. Кнопка представляет собой переключатель с двумя парами контактов. Контакты в одной паре соединены между собой, поэтому больше одного выключателя в схеме реализовать не удастся, но вы можете одновременно управлять двумя параллельными сегментами, это бывает полезно.

В зависимости от ситуации, вы можете создавать как схемы с нормально замкнутыми, так и с нормально разомкнутыми контактами – для этого нужно будет только соответствующим образом выполнить соединение в схеме.

Для удобства работы в комплекте с тактовой кнопкой обычно идет пластмассовый колпачок какого-то цвета, он достаточно очевидно надевается на кнопку и придает проекту менее хакерский вид.

Подключение кнопки Ардуино

Включение и выключение светодиода с помощью кнопки

Давайте начнем с самого простого способа подключения тактовой кнопки. Рассмотрим схему с 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); }

Подключение кнопки в режиме INPUT_PULLUP

В указанной выше схеме мы использовали резистор, называемый подтягивающим, для формирования определенного уровня сигнала на цифровом порту. Но есть другой способ подключить кнопку без резистора, используя внутренне сопротивление платы ардуино. В блоке setup мы должны всего лишь определить тип пина, к которому подключим кнопку, как INPUT_PULLUP.

pinMode(PIN_BUTTON, INPUT_PULLUP);

Альтернативным вариантом будет выбрать режим пина как OUTPUT и установить на данный порт высокий уровень сигнала. Встроенный подтягивающий резистор подключиться автоматически.

pinMode(PIN_BUTTON, INPUT_PULLUP); digitalWrite(PIN_BUTTON, HIGH);

И все. Можно собрать вот такую сложную схему и работать с кнопкой в скетче.

Мигание светодиода после нажатия на кнопку

В предыдущем примере со светодиодами мы подключили кнопку к плате ардуино и поняли, как она работает. Светодиод включался и выключался, но делал это в совершенно пассивном режиме – сам контроллер здесь был абсолютно лишним, его можно было бы заменить батарейками. Поэтому давайте сделаем наш новый проект более «интеллектуальным»: при нажатии на кнопку заставим светодиод непрерывно мигать. Обычной схемой с лампочкой и выключателем этого уже не сделаешь – мы будем использовать мощь нашего микроконтроллера для решения этой пусть и простой, но не тривиальной задачи.

Полная схема проекта изображена на рисунке:

Фрагмент схемы со светодиодом уже хорошо нам знаком. Мы собрали обычный маячок со светодиодом и ограничительным резистором. А вот во второй части мы видим знакомую нам кнопку и еще один резистор. Пока не будем вдаваться в подробности, просто соберем схему и закачаем в ардуино простой скетч. Все элементы схемы  идут в самых простых стартовых наборах ардуино.

/* Скетч для схемы с использованием тактовой кнопки и светодиода Светодиод мигает, пока нажата кнопка. Кнопка подтянута к земле, нажатию соответствует HIGH на входе */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); } void loop() { // Получаем состояние кнопки int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); // Если кнопка не нажата, то ничего не делаем if (!buttonState) { delay(50); return; } // Этот блок кода будет выполняться, если кнопка нажата // Мигаем светодиодом digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(1000); }

Нажимаем и держим – светодиод мигает. Отпускаем – он гаснет. Именно то , что хотели. Хлопаем от радости в ладоши и приступаем к анализу того, что сделали.

Давайте посмотрим на скетч. В нем мы видим довольно простую логику.

  1. Определяем, нажата ли кнопка.
  2. Если кнопка не нажата, то просто выходим из метода loop, ничего не включая и не меняя.
  3. Если кнопка нажата, то выполняем мигание, используя фрагмент стандартного скетча:
    1. Включаем светодиод, подавая напряжение на нужный порт
    2. Делаем нужную паузу при включенном светодиоде
    3. Выключаем светодиод
    4. Делаем нужную паузу при выключенном светодиоде

Логика поведения кнопки в скетче может зависеть от способа подключения с подтягивающим резистором. Об этом мы поговорим в следующей статье.

Дребезг кнопки ардуино

В процессе работы с кнопками мы можем столкнуться с очень неприятным явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хоть и очень быстро для наших глаз), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких “мусорных” сигналов, то будем реагировать на них каждый раз и можем привести наш проект к хаусу.

Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:

  • Добавляем в скетче паузу 10-50 миллисекунд между полкучением значений с пина ардуино.
  • Если мы используем прерывания, то программный метд использоваться не может и мы формируем аппаратную защиту. Простейшая из них  – RC фильтр с конденсатором и сопротивлением.
  • Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера шмидта. Этот вариант позволит получить на входе в ардуино сигнал практически идеальной формы.

Более подробную информацию о способах борьбы с дребезгом вы можете найти в этой статье об устранении дребезга кнопок.

Переключение режимов с помощью кнопки

Для того, чтобы определить, была ли нажата кнопка, надо просто зафиксировать факт ее нажатия и сохранить признак в специальной переменной.

Факт нажатия мы определяем с помощью функции 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 ) мы сразу сравнили вход с нужным нам значением и определили, что кнопка нажата, хотя и на входе сейчас низкий уровень сигнала. И сохранили в переменную статус кнопки. Старайтесь явно указывать все выполняемые вами логические операции, чтобы делать свой код более прозрачным и избежать лишних глупых ошибок.

Как переключать режимы работы после нажатия кнопки?

Часто возникает ситуация, когда мы с помощью кнопок должны учитывать факт не только нажатия, но и отпускания кнопки. Например, нажав и отпустив кнопку, мы можем включить свет или переключить режим работы схемы.  Другими словами, нам нужно как-то зафиксировать в коде факт нажатия на кнопку и использовать информацию в дальнейшем, даже если кнопка уже не нажата.  Давайте посмотрим, как это можно сделать.

Логика работы программы очень проста:

  • Запоминаем факт нажатия в служебной переменной.
  • Ожидаем, пока не пройдут явления, связанные с дребезгом.
  • Ожидаем факта отпускания кнопки.
  • Запоминаем факт отпускания и устанавливаем в отдельной переменной признак того, что кнопка была полноценно нажата.
  • Очищаем служебную переменную.

Как определить нажатие нескольких кнопок?

Нужно просто запомнить состояние каждой из кнопок в соответствующей переменной или в массиве ардуино. Здесь главное понимать, что каждая новая кнопка – это занятый пин. Поэтому если количество кнопок у вас будет большим, то возможно возникновение дефицита свободных контактов. Альтернативным вариантом является использование подключения кнопок на один аналоговый пин по схеме с резистивным делителем. Об этом мы поговорим в следующих статьях.


Смотрите также