Nashidvery.ru

Наши Двери
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Скетч — выключатель, светодиод и кнопка в Arduino UNO

Скетч — выключатель, светодиод и кнопка в Arduino UNO

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

Мы сделали на монтажной плате схему из резистора, светодиода, кнопки и набора проводников.

Схема на Arduino из резистора, светодиода, кнопки и набора проводников

У нас подается 5 вольт на кнопку, и если через кнопку приходит 5 Вольт на 12 пин на плате Arduino, то загорается светодиод, соответственно если нет, то светодиод не горит.

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

Давайте введём несколько дополнительных переменных типа int в наш предыдущий код, объявим переменную tekButton — текущая кнопка, присвоим ей значение LOW , это у нас будет 0 или отсутствие напряжения, еще одна int переменная prevButton это у нас будет обозначать прошлое состояние нажатия на кнопку.

Присвоим этой переменной значение LOW и объявим логическую булевую переменную ledOn , которая будет иметь значение False , означающее ложь или 0.

Подпрограмму setup поставим без изменения, а в цикле loop мы напишем следующий код.

Запишем нашу переменную tekButton равно, через DigitalRead мы присвоим ей значения переменной keyPin .

Как вы помните это у нас 12 разъем, и переменная tekButton будет учитывать состояние 12 разъёма и изменим теперь условия if, если tekButton принимает значения HIGH , если подаётся напряжение на 12 разъем и предыдущее значение переменной prevButton будет равно LOW , то есть, предыдущий раз не было напряжения, то ledOn , наша булевая переменная, будет инвертироваться, принимать противоположное значение.

Если изначально она равно False(ложь), то станет равна True, и соответственно в функцию digitalWrite( ledPin) мы передаем инвертированная значение ledOn .

В принципе конструкция else нам уже не нужна. Давайте присвоим prevButton значение tekButton .

Сохраним наш скетч, проверим и загрузим его на Arduino.

Промигали индикаторы, прошла загрузка, при нажатии на кнопку индикатор горит, при повторном нажатии индикатор гаснет.

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

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

Давайте изменим скетч таким образом, чтобы у нас срабатывало всё чётко, надо избавиться от этого дребезга контактов.

Напишем небольшую функцию, которая будет всем этим делом управлять, функция у нас будет логическая, Boolean, она будет возвращать либо True либо False, назовем ее testLed .

У нас будет тест светодиода. Внутренняя переменная last будет принимать значение true/false.

Объявим еще одну логическую переменную — current текущее значение будет равно digitalRead и принимать значение она будет из переменной keyPin , с нашего 12 разъёма.

Будет определяться, подавалось ли напряжение или нет, если предыдущее значению last не равно текущему current , то мы выполним следующие действия: сделаем небольшую задержку в 5 миллисекунд с помощью delay , этого будет достаточно чтобы процессор обработал данные и присвоим переменной current значение DigitalWrite с нашего 12 разъёма через переменную keyPin .

Читайте так же:
Горизонт 32le5161d ограничить ток подсветки

Ну и соответственно наша функция testLed должна что-то вернуть, для этого допишем return и возвращать она будет current – текущее нажатие, с небольшой задержкой в 5 миллисекунд.

Так давайте теперь в нашем коде изменим tekButton у нас будет принимать значение из функции testLed , здесь мы будем передавать переменную prevButton , которая в самом начале у нас имеет значение LOW .

И теперь мы перенесём из скобок функцию digitalWrite . Ну и в принципе на этом модификация кода у нас завершена. Визуально проверим, нет ли ошибок, можно проверять, так проверка прошла и скетч загрузится в Arduino.

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

Схема на Arduino из резистора, светодиода, кнопки и набора проводников

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

Кнопка

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

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

Подключим кнопку без использования контроллера, пропустив ток из 5V. При нажатии кнопки цепь замкнётся и светодиод будет светиться. Ничего неожиданного.

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

Код прекрасно работает при нажатии кнопки. А когда мы отпускаем кнопку и создаём разрыв в цепи, то возникает проблема. Вывод 12 становится свободным и висит в неопределённом состоянии в режиме INPUT (вспоминаем урок про цифровые выводы). В результате мы получаем случайные значения и светодиод то включается, то выключается от наводок.

Чтобы избежать этой проблемы, можно добавить резистор от 10 до 100 кОм и прижать кнопку к земле. В этом случае цепь будет замкнута даже при отпущенной кнопке. В этом случае резистор называют стягивающим (pull down). Это рабочая схема, которую можно использовать в учебной программе.

Несмотря на рабочую схему с стягивающим резистором, мы получаем проблему при работе со сложным проектом. Дело в том, что возможна ситуация, когда многие устройства в схеме используют разные значения питания. И тогда придётся к каждой кнопке устройства подавать свой отдельный стягивающий резистор. На практике принято подключаться не к питанию, а к земле, которая всегда одинакова и равно 0. В этом случае сам резистор следует подключить к питанию — подтянуть. Резистор в этом случае является подтягивающим (pull up). Правда, при этом возникает другая проблема — поведение светодиода изменилось противоположным образом — при нажатии светодиод выключается, а при отпускании — включается. Решается проблема просто — меняем одну строчку кода.

Читайте так же:
Как отключить таймер выключателя света

Мы просто меняем значение переменной на противоположное. Это стандартный подход при работе с кнопкой. Теперь вам будет легче разобраться с примерами из Arduino IDE.

Стоит отметить, что у платы Arduino у выводов уже есть встроенные подтягивающие резисторы (кроме вывода 13) и мы можем убрать внешний резистор. Но тогда надо также явно указать использование данного резистора через код с параметром INPUT_PULLUP.

01.Basics: DigitalReadSerial (Чтение цифрового вывода)

Изучим пример DigitalReadSerial из File | Examples | 01.Basics.

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

Приблизительно собранная схема может выглядеть следующим образом:

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

Кнопка выполняет очень важную функцию — она замыкает цепь при нажатии. Когда кнопка не нажата, то ток не проходит между ножками кнопки, и не можем поймать сигнал с цифрового вывода под номером 2. Поэтому состояние вывода определяется системой как LOW или 0. При нажатии на кнопку его две ножки соединяются, позволяя току пройти от питания к цифровому выводу 2, а система считывает проходящий сигнал как HIGH или 1.

Разберём код по кусочкам

В функции setup() устанавливаем связь с портом для считывания данных на скорости 9600 бит в секунду с Arduino на ваш компьютер: Serial.begin(9600).

Вторая строчка нам уже знакома, но здесь теперь используется параметр INPUT — мы устанавливаем второй цифровой вывод на режим чтения данных, поступающих с кнопки: pinMode(pushButton, INPUT);

В цикле считываем поступающую информацию. Для начала нам понадобится новая переменная buttonState, которая будет содержать значения 0 или 1, поступающие от функции digitalRead().

Чтобы мы могли видеть поступающую информацию, нужно вывести получаемые результаты в окно Serial Monitor при помощи команды println().

Для большей стабильности при чтении данных установим минимальную задержку.

Если вы сейчас запустите программу и откроете также окно Serial Monitor (меню Tools | Serial Monitor), то на экране увидите бесконечные нули. Программа постоянно опрашивает состояние нашей конструкции и выводит результат — отсутствие тока. Если нажать на кнопку и удерживать её, то увидите, что цифры сменяются с 0 на 1. Значит в нашей цепи появился ток и информация изменилась.

02.Digital: Button

Работа с кнопкой рассматривается также в примере File | Examples | 02.Digital | Button. Кнопка соединяется с выводом 2, а светодиод с выводом 13. К кнопке также следует подвести питание и землю через резистор на 10K. Сам принцип работы остался без изменений. Только на этот раз мы не будем выводить информацию о состоянии кнопки на экран, а будем включать светодиод. Такой вариант более наглядный. При нажатии и отпускании кнопки встроенный светодиод должен загораться или гаснуть.

Читайте так же:
Кабель канал с розетками с потолка

Допустим, мы хотим изменить поведение — если кнопка не нажата — светодиод горит, а при нажатии — светодиод не горит. Достаточно изменить одну строчку кода.

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

Нужно поменять полярность цепи! Провод от резистора, который на землю, нужно воткнуть в 5V, а провод, который шёл из 5V к кнопке, перекинуть на землю. При включении ток пойдёт из питания на вывод 2 без всяких помех и будет получено значение HIGH. При нажатии кнопки получится другая цепь, и вывод 2 останется без питания.

02.Digital: StateChangeDetection

В примере File | Examples | 02.Digital | StateChangeDetection идёт подсчёт щелчков кнопки и состояние кнопки (включён или выключен). Схема осталась прежней. Кнопка соединяется с выводом 2, а светодиод с выводом 13 (можно использовать встроенный). К кнопке также следует подвести питание и стягивающий резистор к земле на 10K.

02.Digital: Debounce (Дребезг)

У кнопок существует такой эффект, как «дребезг». При замыкании и размыкании между пластинами кнопки возникают микроискры, провоцирующие до десятка переключений за несколько миллисекунд. Явление называется дребезгом (англ. bounce). Это нужно учитывать, если необходимо фиксировать «клики». Поэтому первичным показаниям верить нельзя. По этой причине часто в скетчах делают небольшую задержку, а уже потом считывают показания. В обычном состоянии, когда мы не нажимаем кнопку или держим кнопку нажатой, эффекта дребезга не наблюдается. Иногда для этих целей в учебных примерах используют функцию delay(), но на практике следует использовать функцию millis(), как в примере File | Examples | 02.Digital | Debounce. Схема подключения остаётся без изменений.

02.Digital: DigitalInputPullup (Встроенный подтягивающий резистор)

У цифровых выводов уже есть резисторы на 20 кОм, которые можно использовать в качестве подтягивающих при работе с кнопками. Рассмотрим пример File | Examples | 02.Digital | DigitalInputPullup.

Схема подключения — соединим первый вывод кнопки с выводом 2 на плате, а второй вывод кнопки с выводом GND. Во время работы скетча будем считывать показания второго вывода.

Если запустить скетч, то увидим, что на монитор выводятся числа 1 (HIGH). При нажатии на кнопку значения поменяются на 0 (LOW).

Кнопки1988

Кнопки миниатюрные

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

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

Читайте так же:
Выключатель unica 2 клавиши с подсветкой бежевый

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

Более восприимчивыми к коммутациям больших токов являются силовые кнопки на блок. Хорошими показателями отличаются кнопочные выключатели производителя Cirmarker Industry серий FPB, MPB, IDS. Надежная механическая конструкция и качество коммутирующих контактов позволяют использовать изделия в различных бытовых и промышленных силовых аппаратах. Кнопки, монтируемые на панель управления, удобны для монтажа, обладают длительным ресурсом работы, отличаются простотой конструктивного исполнения, поэтому и надежны в работе. К одним из таких типов относятся кнопки на блок. Компания Jietong Switch представила ряд изделий коммутирующих элементов. Выбрать и купить необходимый компонент помогут характеристики изделий: способ коммутации (с фиксацией или без нее), рабочее напряжение (50В/250В), максимальный рабочий ток (0.1А…5А), а так же, конструктивное исполнение.

Дополняют ряд коммутирующих изделий, монтируемых на панель, кнопки с подсветкой. Модели коммутирующих устройств серии СА25- L 11 фирмы Cirmarker Industry используются в промышленном оборудовании, как кнопки аварийной остановки. Характерной особенностью изделий является механический поворотный размыкатель, высокий коммутирующий ток, неоновая подсветка кнопки, длительный рабочий ресурс.

Новые образцы своих изделий представила компания Deca Switchlab. Кнопки с фиксацией и без фиксации выполнены из прочного пластика, с одной или несколькими группами коммутирующих контактов, крепятся на панель в отверстие под гайку, подсветку кнопки выполняет светодиод, лампа накаливания или неоновая лампа, в зависимости от модификации. Переключатели серии D 16 выполнены из термостойкого пластика, имеют коммутирующие контакты из серебра, удобный посадочный крепеж на панель под гайку, высокий ток коммутируемых нагрузок. Подсветка ручки осуществляется светодиодом, лампой накаливания или неоновой лампой.

Фирма Well Buying представила на Ваш выбор линейку эксклюзивных коммутационных кнопок с красочной светодиодной подсветкой и контактами из серебра. Модели серии L выполняют функцию двухпозиционного переключателя с монтажом на печатную плату, переключение дублируется двухцветным режимом подсветки. Кнопочные коммутаторы серии PS 001 применяются для включения слаботочных нагрузок, двухрежимную подсветку осуществляют светодиоды, режим работы без фиксации, удобный посадочный крепеж в отверстие на панель. Применяются в различной радиоэлектронной аппаратуре, в том числе и любительской, в качестве слаботочных переключателей.

Посмотрите популярные запросы:

Посмотреть и купить товар вы можете в наших магазинах в городах: Москва, Санкт-Петербург, Алматы, Архангельск, Астрахань, Барнаул, Белгород, Владимир, Волгоград, Вологда, Воронеж, Гомель, Екатеринбург, Иваново, Ижевск, Казань, Калуга, Кемерово, Киров, Кострома, Краснодар, Красноярск, Курган, Курск, Липецк, Минск, Набережные Челны, Нижний Новгород, Новосибирск, Омск, Орёл, Пермь, Псков, Ростов-на-Дону, Рязань, Самара, Саранск, Саратов, Смоленск, Ставрополь, Тверь, Томск, Тула, Тюмень, Уфа, Чебоксары, Челябинск, Ярославль. Доставка заказа почтой, через систему доставки Pickpoint или через салоны «Связной» в следующие города: Тольятти, Барнаул, Ульяновск, Иркутск, Хабаровск, Владивосток, Махачкала, Томск, Оренбург, Новокузнецк, Астрахань, Пенза, Чебоксары, Калининград, Улан-Удэ, Сочи, Иваново, Брянск, Сургут, Нижний Тагил, Архангельск, Чита, Курган, Владикавказ, Грозный, Мурманск, Тамбов, Петрозаводск, Кострома, Нижневартовск, Новороссийск, Йошкар-Ола и еще в более чем 1000 городов и населенных пунктов по всей России.

Читайте так же:
6917l 0094c уменьшить ток подсветки

Подсветка выключателя обогрева сидений

Готов расписать и сделать фотки ,если кто обьяснит как их здесь разместить !

———- Добавлено в 14:41 ———- Предыдущее сообщение было написано в 14:40 ———-

Просто без фото не очень понятно будет!

Aleksandr aut
Посмотреть профиль
Найти ещё сообщения от Aleksandr aut
lukanin
Посмотреть профиль
Посетить домашнюю страницу lukanin
Найти ещё сообщения от lukanin

Если несложно, с фотками, плиз!

———- Добавлено в 17:04 ———- Предыдущее сообщение было написано в 16:57 ———-

И какая лампочка нужна?

dmi3y
Посмотреть профиль
Найти ещё сообщения от dmi3y
Aleksandr aut
Посмотреть профиль
Найти ещё сообщения от Aleksandr aut
SergeyOut
Посмотреть профиль
Найти ещё сообщения от SergeyOut

Тыкс, фото не влеплю — кто обещал тот пусть и лепит. Расписать, распишу, на память — сильно не пинайте если чо забуду :

Достаём сам блок управления — надо подцепить тонкой отвёрткой или ножом.
Отсоединяем "шланг". Та штука от которой тока что отсоединили коннектор с проводами — задняя стенка корпуса — по бокам есть два крепежа-защёлки, нужно разжать немного борта основного корпуса и выщелкнуть заднюю стенку.

Терь, аккуратно, над чем-то большим, дабы не прое№%:ть мелкие запчастюшки переворачиваем кнопками вверхЪ оставшийся корпус — получаем 2 шарика и 2 пружинки выпавших из недр.

Не сильно потянув за клемы коннектора достаём плату с лампочками.
В самом корпусе у нас остались кнопки и ползунки кнопок которые тоже лучше достать если они ещё не вывалились сами.

Вооот. на плате видим 6 лампочек (диоды в резиновых гандошачках).
Забегая вперёд оговорюсь : найти эти диодики прям вот так — в сборе с гандошками — забейте, не реально — пробовал, друг с ФорикКлуба тоже. долго.
На любом рынке есть обычные "усатые" диоды по 50р/шт (максимум, нормальная цена 20р) выбирайте цвет и вперёд к рукоблудию.
Берите конечно парой — менять тоже лучше такжешь.

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

Внимание! Не перепутайте полярность. На диоде + обозначен длинным хвостом, на платформе литерой "В".

Не берите синие диоды — это пестец какие они ядрёные, боковое зрение режут.

Ну а далее умировотворяющий процесс сборки. Меньше мата будет если :

перед сборкой, если меняли диоды подсветки а не диоды High/Low проверьте, работают ли. Для этого прям голую платформу с диодами воткните в коннектор и включите габариты.

Ползунки кнопок должны быть ровно установлены и паз селектора должен попасть в дупло ползунка.

Вставляем плату. Далее шарики в дырочки, а потом только пружинки + задняя крышка. Втыкаем коннектор.

Далее либо радуемся, либо орём "БЛ*ТЬ, не работает" и с удовольствием повторяем процесс.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector