Дребезг кнопки. Как исправить? Технически и программно без delay

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ก.ค. 2018
  • Всем привет! В этот видео мы будем устранять дребезг кнопки. Устранить эту проблему можно как программно, так и технически. Рассмотрим оба варианта.
    Архив с примерами: drive.google.com/open?id=14vn...
    Полезные ссылки:
    Моторы Nema 17: ali.pub/2n3564
    Драйвер шагового двигателя: ali.pub/2n37jh
    Ардуино Мега 2560: ali.pub/2gih4z
    Сервоприводы: ali.pub/2glm6p
    Самые дешевые Ардуино Про Мини для поделок: ali.pub/1ny2z4
    Дисплей TM1637: ali.pub/2id9gd
    Клавиатура 4х4: ali.pub/2k005u
    WeMos D1 Mini Pro: ali.pub/2j9qwb
    0.96" OLED дисплей: ali.pub/2hvdd9
    Дисплей TM1637: ali.pub/2id9gd
    Самые дешевые Ардуино Про Мини для поделок: ali.pub/1ny2z4
    Зуммер: ali.pub/2hvd87
    Нагрузочный резистор 10 Ом 10 Вт: ali.pub/2hvdwp
    Мотор с редуктором: ali.pub/2hrtt2
    Блютуз HM-10: ali.pub/2amedo
    Блютуз HC-06: ali.pub/2amdlv
    WS2812B 7 светодиодов: ali.pub/2hi9h8
    WS2812B: ali.pub/1x8oim
    Солнечная панель 5V 4.5W: ali.pub/2gllam
    Солнечные батареи: ali.pub/2glli0
    TFT дисплеи: ali.pub/1ny2rc
    Самый удобный Кешбек:
    LetyShops: goo.gl/Ev5XgI
    Самый выгодный Кешбек:
    Ecomerce: goo.gl/3dDc2w
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 151

  • @AcademonZx
    @AcademonZx 5 ปีที่แล้ว +4

    Очень элегантно. Спасибо!

  • @decoratorr
    @decoratorr 5 ปีที่แล้ว +2

    Четко объясняешь)

  • @mansky266
    @mansky266 5 ปีที่แล้ว +11

    Дребезжит не кнопка, дребезжат контакты (везде, не только в кнопках), то есть правильно - дребезг контактов.

  • @PiseBankProduction
    @PiseBankProduction 4 ปีที่แล้ว +1

    Спасибо братуха,очень помог!

  • @dmitriyfilatov8658
    @dmitriyfilatov8658 3 ปีที่แล้ว +1

    Ахренеть, сколько умных советов)))
    Я напомню, что у меги (и не только) на входах уже стоят триггеры Шмитта...! На этом, можно было бы и попрощаться, но уверен, не все от этого знания поймут, куда слить все видео аналогичные этому. Поэтому подскажу, все же, последующие шаги. Так как вход можно притянуть программно вверх (к VCC) через внутренний резистор порядка 30-45 кОм, то достаточно будет между линией кнопки и GND (перед входом МК) поставить емкость порядка 0,47 мкФ и аппаратная защита от дребезга с интервалом 14-21 мс будет решена аппаратно. И не хер насиловать МК программно. Нужна длительность задержки на дребезг больше, увеличивайте емкость согласно t = R*C

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว

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

    • @dmitriyfilatov8658
      @dmitriyfilatov8658 3 ปีที่แล้ว

      @@UCanDo, совсем нет необходимости значительно уменьшать емкость. При таком высоком входном сопротивлении вентиля на триггере Шмитта, не важно (в разумных пределах) значение емкости. Единственно важным может быть количество энергии, запасенной конденсатором и ее разряд на контакты кнопки. В этом случае (если есть опасение износа контактов) достаточно последовательно кнопке поставить резистор на десятки Ом для гашения броска тока. Я практикую 100 Ом.

  • @m131184m
    @m131184m 7 หลายเดือนก่อน +1

    Спасибо!

  • @chessalkin9939
    @chessalkin9939 3 ปีที่แล้ว +1

    "5,7..." - и все отлично работает))

  • @user-dp3fw9vw7j
    @user-dp3fw9vw7j 5 ปีที่แล้ว +1

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

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Я взял самую распространённую схему на r-c фильтре. Можете поэкспериментировать, может есть и лучшие решения.

  • @nickmuntyanov2882
    @nickmuntyanov2882 3 ปีที่แล้ว +9

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

    • @amid6229
      @amid6229 ปีที่แล้ว +1

      А что мешает рассчитать адекватные номиналы резистора и конденсатора?
      Или подсмотреть в схемы продаваемых изделий?
      Я в основном видел конденсаторы на 100 nF и резисторы на килоомы (4.7 и выше) или вообще на внутренних подтяжках (20 кОм)
      Обычно, период колебаний от дребезга менее 1 миллисекунды.
      Конденсатор 100 nF и резистор 20 кОм гарантирует, что напряжение не поднимется выше 1.15 Вольта раньше 1 с небольшим миллисекунд.
      Если же мы добавляем резистор между кнопкой и конденсатором, то конденсатор не разрядится мгновенно (практически), и может случиться так, что иногда конденсатор разрядится до 0.9 вольт и успеет зарядиться до 2.2 вольт (при питании 3.3), что приведёт к срабатыванию на единицу, и мы получим дребезг…
      Ну и задержки срабатывания по обеим сторонам (по нажатию и отпусканию), вместо одной (по отпусканию)…

  • @GennPen
    @GennPen 3 ปีที่แล้ว +4

    1) НИКОГДА не подключайте конденсатор параллельно кнопке. Ни в верхнее, ни в нижнее плечо. Разряжая(заряжая) конденсатор у кнопки будут подгорать контакты, а это через определенное время убьет ее в труху, что даже нажиматься может перестать. Используйте RCR-цепочку, т.е. в схеме с конденсатором последовательно кнопке НУЖНО ставить резистор.
    2) Триггер Шмитта ставят не для инвертирования сигнала, а за его свойства петли гистерезиса. Грубо говоря, из 0 в 1 он переключается при бОльшем напряжении, чем из 1 в 0. Мало того, все современные контроллеры при включении входа как цифровой переключают его на триггер Шмитта.

    • @amid6229
      @amid6229 ปีที่แล้ว +1

      И что так много адептов резистора перед кнопкой?
      А как поставить резистор между кнопками и конденсатором образованном ножками кнопки, а так же дорожкой от резистора до кнопки и землёй?
      Может просто для этих целей не использовать конденсаторы большой ёмкости (микрофарады)?
      Ещё и схема энергоэффективнее выйдет…

    • @Palladln
      @Palladln ปีที่แล้ว

      можно взять кондер 2-33 нанофарады и резистор сотни Ком. тогда подгорать ничего не будет.

    • @UCanDo
      @UCanDo  ปีที่แล้ว

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

  • @poweredbysergey
    @poweredbysergey 5 ปีที่แล้ว +1

    Usefull

  • @mikurrey416
    @mikurrey416 16 วันที่ผ่านมา

    А можно ли (и целесообразно ли) триггер Шмидта заменить программно, если обрабатывать ввод как аналоговый и реагировать на переход порогового значения? Т. е. использовать конденсатор, но обойтись без дополнительной микросхемы.
    Ваш программный способ очень интересный, но я бы предложил ему другое применение: тестировать кнопки и по коэффициенту определять износ (для этого можно даже сделать его изменяемым через Serial или как-то ещё). А если по назначению, то, похоже, что со временем готовое устройство придется перепрошивать для увеличения коэффициента.

    • @UCanDo
      @UCanDo  15 วันที่ผ่านมา +1

      Отвечу на ваш вопрос с конца:
      Со временем нужно будет не перепрошивать (подстраивать коэффициент) а менять кнопку, которая израсходовала свой ресурс.
      Кнопки - это расходный материал.
      В остальном конструкция и код сильно зависят от потребностей и конкретного кода. Если нужно быстродействие то используют программные способы устранения дребезга, и аналоговый вход не подходит из-за медленной обработки. Если же быстродействие не важно, то можно и просто delay(); поставить…
      Так что все очень сильно зависит от конкретной программы и конкретных требований.

    • @mikurrey416
      @mikurrey416 15 วันที่ผ่านมา +1

      @@UCanDo спасибо, буду знать :)
      Delay - нет, не надо, не рекомендуйте её новичкам) Только-только закончил возиться с первым обучающим набором, и уже сам понял, на сколько это плохо. Может, delay применим там, где действительно нужен фриз контроллера на N миллисекунд, но некоторые обучающие блогеры (не вы, другие) на полном серьёзе рекомендуют именно так бороться с дребезгом.

    • @UCanDo
      @UCanDo  15 วันที่ผ่านมา +1

      @@mikurrey416 да, delay() -зло!
      😁

  • @user-vw4hs7kz8j
    @user-vw4hs7kz8j 5 ปีที่แล้ว

    Экспериментировал с кнопками много раз. Нашел пару интересных вариантов:
    1. Если паять, то достаточно напаять смд резистор, к примеру, на 10к...100к на землю и паралельно на него паял смд кондёр на 100n. Работает безотказно, паять можно прямо на ардуинку, места не занимает.
    2. Если программно, я брал таймер (библиотеку), конкретно: simpleTimer. При нажатии кнопки "включалась" переменная запрета нажатия, которая мониторится при срабатывании кнопки. И запускался таймер, я для своих задач ставил 200 - 300 мс. По окончанию таймера запрет снимается. Из минусов: нельзя держать нажатой кнопку больше чем время таймера, иначе при отжатии будут ложные срабатывания.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Да, вариантов есть много. И каждый по-своему хорош.

  • @romankrv
    @romankrv 3 ปีที่แล้ว

    @Home Made - То, что ты можешь сделать || Покажите, как устранить дребезг на ноутбутчной клавиатуре. У меня на Linovo T440p клавиша Enter совсем с ума сошла.

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว

      Никак. Только заменой клавиатуры.

    • @Palladln
      @Palladln ปีที่แล้ว

      перепаяй кнопку, подпаяй кондер на 3-10 нанофарад, керамику..

  • @Heorenmaru
    @Heorenmaru 5 ปีที่แล้ว +2

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

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

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

  • @_i_m_
    @_i_m_ 5 ปีที่แล้ว +1

    подскажите, почему первая и вторая нага триггера Шмитта закорочены?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว +1

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

  • @SergeyBelotserkovskiy
    @SergeyBelotserkovskiy 5 ปีที่แล้ว +1

    Первый раз вижу такой алгоритм борьбы с дребезгом контактов

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Способов очень много. Мне больше всего понравился этот.

    • @80cahek
      @80cahek 5 ปีที่แล้ว

      Sergei Belotserkovskii стоит такой алгоритм на освещении в квартире, причем на входе идет разбивка по уровням от нескольких ADC (кнопки через резисторные делители и несколько выключателей). лет 5 уже без сбоев.

  • @mikhailkolokoltsev2481
    @mikhailkolokoltsev2481 4 ปีที่แล้ว

    Чет с программным решением намудрил. Я сделал так:
    в обработчике прерывания
    if (millis()-lastTime

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      Каждому проекту свой подход. Иногда и простого delay() достаточно, а иногда нужно не иметь никакой привязки к паузам (таким как delay, millis или таймер), когда нужно получить чистое нажатие, все равно с какой частотой.

  • @babichfx
    @babichfx 7 หลายเดือนก่อน

    6:55 пипец обвязка ради одной кнопки да?!

  • @BerlogerX
    @BerlogerX 4 ปีที่แล้ว

    Как подобрана величина емкости конденсатора? Методом тыка?

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      Можно рассчитать скорость разряда конденсатора. Но проще поставить на 1 мкф. чем пытаться подобрать емкость под возможную частоту нажатия кнопок.

  • @user-du2bm5ui9u
    @user-du2bm5ui9u 5 ปีที่แล้ว

    На Ардуино уно тактовая частота 8МГц, а на меге около 80...что в 10 раз чаще. Поменяв контроллер, дребезг будет работать в 10 раз чаще, не говоря уже о моделях с ГГц на тактовом генераторе :)
    . Получается тайминг на дребезг скрыт в частоте работы контроллера. Поправите если я не прав. И использование таймера (millis) более универсальное решение.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Uno и Mega (да и почти все остальные Ардуино) работают на частоте 16 МГц. На частоте 8 МГц работают только низковольтные микроконтроллеры, которые работают от 3.3 вольт.
      На частоте 80 МГц работает плата DUE, но она редкость, ею почти никто не пользуется. Об Ардуино, работающей на частотах в ГГц первый раз слышу.
      Дребезг - это физическое свойство кнопки. Плохой контакт в момент нажатия. У новых кнопок он меньше, у старых - больше. Но он присутствует всегда. И он не зависит от скорости работы микроконтроллера. Кстати, приведённый код я применял на STM, там частота 160 МГц, работает отлично. Лишь некоторые значения выставлял другие.
      Вообще нет такого правили что нужно делать только так, а не иначе. Каждый использует то что ему удобно. Единственное замечание могу сказать: профессионалы не используют паузы, даже millis не применяют.

    • @Nevzoroff_
      @Nevzoroff_ 3 ปีที่แล้ว

      @@UCanDo
      Я так понимаю, в отношении к кнопкам не применяют, а вообще если скетч маленький то работать будет, а если штук 20 флоат переменных и лишнюю строку не добавить, этот алгоритм будет тупо пропускать нажатия...

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว

      Не играет роли сколько кнопок. Они все будут обрабатываться «почти» одновременно. И пропусков не будет.

    • @amid6229
      @amid6229 ปีที่แล้ว +1

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

  • @TDMLab
    @TDMLab 5 ปีที่แล้ว +1

    По аппаратному устранению дребезга почти согласен, конденсатор такой емкости не нужен, лучше например так th-cam.com/video/IenFIIMIbyk/w-d-xo.html (ТШ перед ФНЧ не обязательны)

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Я в большинстве случаев ставлю на 1 мкф. Хватает. Просто в видео я показывал работу с кнопкой наихудшего состояния (вытянул эту кнопку из мусорного ведра:)))

    • @TDMLab
      @TDMLab 5 ปีที่แล้ว +1

      Home Made - То, что ты можешь сделать Я имел ввиду, что можно совсем маленькую ёмкость использовать на 10-100нФ по немного другой схеме.
      В любом случае я согласен что delay не надо применять никогда, от слова вообще.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Да, я с вами полностью согласен!

    • @f33net
      @f33net 5 ปีที่แล้ว

      Худьщий кнопка - это проводочком касаться. Вот потестируй оно на этом массовом алгоритме или аппаратуре. :)

    • @f33net
      @f33net 5 ปีที่แล้ว

      Там ФНЧ примитивный первого порядка с очень пологой характеристикой, он не спасёт от шуршащей в нажатом состоянии кнопки, что случается в промышленной автоматике очень часто, особенно у любителей кнопок IEK. :). Программная реализация такого фильтра ничуть не уступит. Нужен ФНЧ второго порядка, либо два ФНЧ первого порядка, но инверсно на RS-триггер включенные.

  • @Master_Q
    @Master_Q ปีที่แล้ว

    Динистор помогает в борьбе с дребезгом контактов?

    • @UCanDo
      @UCanDo  ปีที่แล้ว

      Очень сомневаюсь. Динистор - это по сути диод, только немного «хитро» устроенный.

  • @volodysarasov
    @volodysarasov 3 ปีที่แล้ว

    подскажите как сделать нажал и отпустил кнопку светодиод загорелся , нажал и отпустил кнопку второй раз светодиод потух , работа по нажатию кнопки + анти-дребезг

  • @user-po9cn9og2g
    @user-po9cn9og2g 5 ปีที่แล้ว +2

    Это всё-равно Delay. ЦП отсчитывает счётчик - а это значит он занят.Есть ещё много вариантов: Таймер-счётчик, пороговый диод. Но дилэй самый простой.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว +3

      Работу микроконтроллера можно сравнить с работой повара. Вод представим что повару нужно сварить картошку в мундирах. Но картофель бывает разный и варится разное время. сила огня бывает разной. Какой сейчас картофель и как быстро он сварится - не известно. Картофель может вариться от 10 минут до 40 минут. Как будет действовать повар в сравнении с работой микроконтроллера:
      DELAY: Повар закинул картофель, поставил таймер на 40 минут (максимум, что бы точно сварилась) и стоит все 40 минут и смотрит на кастрюлю. За это время он больше ничего не делает, только ждет. После 40 минут достает картофель. Продуктивность минимальная + картофель мог быть тот который быстро варится и он мог развариться.
      MILLIS: Повар закинул картофель, поставил таймер на 40 минут (максимум, что бы точно сварилась). Пока идет таймер повар занимается другими делами. Продуктивность в таком случае максимальная, но картофель все так же мог развариться.
      ПРЕРЫВАНИЕ: у повара есть помощник, который проверяет когда картофель сварится, как только сварится - зовет повара. Продуктивность максимальная, картофель сварен правильно.
      ОТСЕИВАНИЕ ДРЕБЕЗГА (мой пример): повар ставит картофель и время от времени вилкой проверяет готовность. Продуктивность максимальная, картофель сварен правильно.
      Если все это перевести в работу микроконтроллера:
      DELAY: микроконтроллер стоит на месте и не выполняет никакой работы. Продуктивность минимальная. Невозможно отследить быстрые нажатия (двойные, тройные) и невозможно нормально обработать удерживание кнопки - это полное зависание МК.
      MILLIS: Микроконтроллер выполняет другую работу. Но все так же невозможно отследить быстрые нажатия (двойные, тройные) и невозможно (или очень проблематично) обработать удерживание кнопки.
      ПРЕРЫВАНИЕ: Микроконтроллер выполняет другую работу. Нормально обрабатываются быстрые нажатия (двойные, тройные). А вот удерживание кнопки обработать очень проблематично.
      ОТСЕИВАНИЕ ДРЕБЕЗГА (мой пример): Микроконтроллер выполняет другую работу. Нормально обрабатываются быстрые нажатия (двойные, тройные) и нормально обрабатывается удерживание кнопки.
      Во всех случаях есть свои исключения и сферы применения. Так же все зависит от сложности всей остальной программы и как быстро основной код выполняется. Но все же мой пример - это никак не Delay. Delay - зло :))

    • @Palladln
      @Palladln ปีที่แล้ว +1

      @@UCanDo офигенно объяснил!

  • @smilk1000
    @smilk1000 หลายเดือนก่อน

    Если нет кондера и нужно убрать дребезг, просто создайте переменную типа число и при каждом нажатии увеличивайте ее на 1. В Loop раз в секунду (только не через delay а через mills()) проверяйте если эта переменная больше 0 тогда кнопка была нажата, и сбрасывайте ее опять в 0. Самый простой и работающий способ.

    • @UCanDo
      @UCanDo  หลายเดือนก่อน

      Работать будет, но в использовании устройство будет казаться «тормознутым» и не отзывчивым, так как после нажатия на кнопку пройдёт до 1 секунды, пока устройство отреагирует. А это совсем плохо. Реакция на нажатия кнопки должна быть сразу, без задержек.

  • @user-lb4ii7km2v
    @user-lb4ii7km2v 7 หลายเดือนก่อน

    А если в кнопке 12v ? Нужно ли увеличивать номиналы? Мне грубо очистить надо сигнал.

    • @UCanDo
      @UCanDo  7 หลายเดือนก่อน +1

      Не может микроконтроллер работать с 12-тивольтовым сигналом.
      Что именно, куда и как у вас подключено и что вы хотите сделать?

    • @user-lb4ii7km2v
      @user-lb4ii7km2v 7 หลายเดือนก่อน

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

    • @UCanDo
      @UCanDo  7 หลายเดือนก่อน

      @@user-lb4ii7km2v хм.. 🤔
      У меня есть группа в Иелеграмм, там можно пообщаться на любую тему и задать любой вопрос, так что можешь за советом обратиться туда: t.me/HomeMadeChannel

    • @user-lb4ii7km2v
      @user-lb4ii7km2v 7 หลายเดือนก่อน

      @@UCanDo как бы не совсем удобно в Instagram меня нет. Хотелось бы узнать хотя бы в правильном направлении я копаю или нет

  • @yehorpererva6803
    @yehorpererva6803 5 ปีที่แล้ว +8

    Переворачивает - только инвертирующий тригер Шмидта.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Да, все верно, забыл об этом упомянуть

    • @kamesm
      @kamesm 5 ปีที่แล้ว +1

      Зачем его вообще использовать, если ножки микроконтроллера все равно превращают импульс в логический?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Триггер Шмидта превращает аналоговый сигнал в меандр.

    • @user-jv7us6zr3f
      @user-jv7us6zr3f 2 ปีที่แล้ว

      @@UCanDo а в контролері АЦП? :))

    • @UCanDo
      @UCanDo  2 ปีที่แล้ว

      Применять АЦП для обработки кнопок - так себе решение…

  • @BRICKonYourHead
    @BRICKonYourHead 5 ปีที่แล้ว

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

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      В чем аналогия? И чем мой пример хуже той же millis и чем он может тормозить программу?

    • @BRICKonYourHead
      @BRICKonYourHead 5 ปีที่แล้ว

      А как Вы думаете, во время выполнения отдельной функции, будет ли опрашиваться какие либо входы в основном цикле? Функция хороша тогда, когда от её присутствия не будет вреда, либо когда её наличие не критично влияет на остальной код. Вы же являясь публичным лицом, по сути, этот способ объявляете универсальным, что не есть верно. В отличии от этого, millis() работающая в основном цикле (и естественно без while и прочего) не затормаживает выполнение кода ни на миллисекунду, и выполняется максимум за 2-5 тактов таймера при каждом проходе цикла.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Простите, но вы так и не сказали чем он хуже. Мой код не тормозит программу. Использование функций делает программу более читабельной и понятной другим, но, опять же, никак не влияет на скорость выполнения.
      Понятно что подобный подход применим не к медленным программам, где основной код выполняется 300 мс. В таком случае нужно применять прерывание.
      Я не против применения millis. Но у millis есть один существенный недостаток: отслеживание по времени (не раньше чем прошло определенное время), и тоже необходимо писать какой-то код для антидребезга. По сути паузы (delay и millis) разрешают пользователю нажать кнопку только тогда, когда программа это разрешает, при этом можно забыть про быстрые нажатия, на пример двойное.
      Я не встречал хорошего кода с использованием millis, где можно было бы полноценно (быстро) использовать кнопку.
      Если вы встречали хороший код с millis, то пожалуйста, напишите его здесь, или дайте на него ссылку. Это будет полезным всем кто прочтёт.

  • @victorsi1992
    @victorsi1992 4 ปีที่แล้ว

    Варіант з конденсатором, криє в собі ще одну підставу. Гарно розглянувши схему, ми побачимо що кнопка, своїми контактами розряджає конденсатор. Струм, який виникає при розряджанні конденсатора через контакти кнопки, дуже швидко вкорочує їй віку.
    Проведіть експеримент знявши осцилограму з шунта (резистор 5-10 ом, підключеного послідовно з кнопкою. Будете вражені. ))

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      При замыкании конденсатора через кнопку потечёт ток менее 50 мА (при расчете что конденсатор емкостью не более 1 мкф). Время полного разряда около 10 мс. Признаюсь серьезных расчетов не делал, лишь «грубо» прикинул. Я не учитывал esr конденсатора (что снижает силу тока, так как у конденсаторов малой емкости, обычно, очень высокое внутреннее сопротивление), и некоторые другие факторы, на пример силу тока протекающую через резистор. Но в целом нагрузка на кнопку будет столь незначительна, что никак не повлияет на продолжительность службы кнопки.

  • @user-uv9rf6qm6f
    @user-uv9rf6qm6f 5 ปีที่แล้ว

    почему прерывание срабатывает только после повторения цикла loop?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว +1

      Прерывание срабатывает постоянно. В основном цикле происходит вывод в сериал. Прерывание от loop не зависит

  • @victorbrynev622
    @victorbrynev622 5 ปีที่แล้ว

    14:50 не проще сделать следующее: "создать две переменые, програмную задержку, в проверке указать, если одно значени и пред. значение установились, то есть равны, и время более 0.15-0.33 сек, то значение верное, и идем сравнивать, какая кнопка нажата."?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Вариантов много. Можно использовать любой, какой больше всего вам подходит.

    • @victorbrynev622
      @victorbrynev622 5 ปีที่แล้ว

      @@UCanDo , я говорил именно об кнопках на аналоговый.

  • @f33net
    @f33net 5 ปีที่แล้ว

    Забыл сказать про православный алгоритм... :) Использовать двунаправленный таймер, который при нажатой кнопке назад считает, при отпущенной вперёд, а по достижении нуля и значение защёлки генерит прерывание, в котором проверяется значение таймера и решается что с кнопкой. Во время дребезга таймер будет туда сюда метяться в каком-то значении и лишь при устойчивом контакте дойдёт до края. Реализуется аппаратно и программно весьма просто.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Тоже самое что и в примере, только используется аппаратный таймер

  • @user-om2ot3ib1k
    @user-om2ot3ib1k 4 ปีที่แล้ว

    Я обычно выдерживаю короткую временнУю паузу (без delay), перед тем, как считать следующее состояние кнопки.

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      Без примера кода сложно догадаться как у вас это реализовано :)

    • @user-om2ot3ib1k
      @user-om2ot3ib1k 4 ปีที่แล้ว

      @@UCanDo создаём переменную типа unsigned long, присваиваем этой переменной текущее время (millis). Создаём функцию "опроса кнопки", прописываем в ней условие: если текущее время, минус вышеуказанная переменная, меньше например 200 мс, то выходим из функции, не опрашивая состояние кнопки, в противном случае читаем статус кнопки и присваиваем переменной текущее время. Правда не учтён дребезг, когда кнопка продолжительное время в нажатом состоянии и когда контакты уже немного окислившиеся. Я на дверь и в отверстия в косяке, куда входят ригели замка, ставил концевые переключатели, вроде пока норм регистрируют.

  • @vyorkin
    @vyorkin 4 ปีที่แล้ว

    prev_count от слова previous

  • @KobalyanTV
    @KobalyanTV 4 ปีที่แล้ว +1

    вместо того чтобы считать импульсы можно просто задать время паузы при нажатии\отжатии.

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      Delay - зло :)
      Но иногда целесообразнее использовать его. Все зависит от конкретного проекта

    • @KobalyanTV
      @KobalyanTV 4 ปีที่แล้ว

      @@UCanDo под словом пауза я подразумевал death time при котором контроллер не будит видеть ненужные нажатия, необязательно delay. Согласен зло тоже можно иногда использовать - Дарт Вейдер одобряет.))

    • @amid6229
      @amid6229 ปีที่แล้ว

      @@UCanDo должна быть библиотека, которую можно легко подключить и настроить к любому проекту.
      Глупо под каждый конкретный случай изобретать очередной велосипед, если задача типовая и без особой специфики.
      Да и программное решение дребезга актуально только для макетирования (чтоб не загромождать макетку и не коротнуть случайно чего) и навесного монтажа (ну коли дело дошло до разработки и изготовления печатной платы, наверняка найдётся и возможность впаять пару SMD компонентов).

  • @kostya1306
    @kostya1306 5 ปีที่แล้ว +4

    Слишком сложно. Почему бы не взять только первое срабатывание кнопки и увеличить переменную на 1. А далее просто неучитывать следующие срабатывания втечение какого-то времени. Я руководствуюсь тем, что человек физически не может нажимать кнопку 5-10 раз в секунду. Соответственно, какое-то время вообще не обрабатывать кнопку, а затем снова проверять ее состояние до следующего нажатия. Я получил такую задержку опытным путем в 400мс. Если надо быстро бегать по менюшке, то можно и до 300мс уменьшить.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Паузы - беда всех программ... Нет, конечно можно и без delay, через millis, но это все равно будет "начальный" уровень программирования.
      К тому же можно забыть про быстрые нажатия ( на пример двойное, тройное). Пауза делает их невозможными.
      В примере что я привел максимальная пауза = время "успокоения" кнопки, а это очень мало.

    • @DjleonLeon
      @DjleonLeon 5 ปีที่แล้ว +4

      Home Made - проблема возникнет, когда будет работать не этот короткий цикл, а полноценная (большая) программа: тогда время затраченное процессором на выполнение всего цикла будет скажем 0.3 секунд и время удержания кнопки (для уверенного срабатывания будет 21 секунда! Тоесть вся программа длится 0.3 секунд и опрос кнопки будет раз в 0.3 секунд (0.3*70=21), если в прирывании, то программа будет остановлена, пока не наберёт 70, а это всё равно как делей. Эффективнее с таймером: программа остановилась, проверена таймер, если превышен интервал дребезга, кнопка нажата, если нет продолжаем работу... Так цикл тоже останавливается, но на наносекунды, а не на милли... Запусти в основном цикле для проверки отсчёт секунд в цикле, а в прирывании опрос кнопки, по нажимай пару десятков раз и увидеть отставание таймера (как при делей).

    • @user-uv9rf6qm6f
      @user-uv9rf6qm6f 5 ปีที่แล้ว +1

      Djleon_ Leonid прав у вас даже хуже делэй получилось

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Нет, не хуже. Вы же не будете добавлять задержку в цикл, который и так длится целых 300 мс!!! В таких случаях кнопка вешается на прерывание + техническая защита от дребезга (резистор + конденсатор + триггер Шмидта).
      Djleon_ Leonid, пересмотрите видео еще раз. В прерывании нет никакого +70. Прерывание срабатывает сразу после нажатия кнопки и только 1 раз. Будьте внимательны.
      P.S. если один цикл программы длится целых 300 мс то программа явно не оптимизированна. Работа с кнопками в такой программе в принципе будет не возможной (даже на прерываниях), так как на любое действие будет тратиться слишком много времени.

    • @DjleonLeon
      @DjleonLeon 5 ปีที่แล้ว

      Home Made - Хорошо, объясню по другому: есть программа на нулевом прирывании счётчик Гейгера, на втором кнопка меню, с вашим алгоритмом. При нажатии срабатывает прерывание 1 и длится обработка дребезга, тоесть программа считает до 70 в любую сторону, за это время вы теряете много импульсов счётчика, ваша программа работает плохо, если при прирывании от кнопки ничего не считать, а просто сравнить значение счётчика миллисекунд, вы потеряете меньше импульсов (отсчёт 70 сложений дольше, чем операция сравнения) ваша программа будет на много корректнее.

  • @f33net
    @f33net 5 ปีที่แล้ว +7

    Трандец схемотехника... Если уж просто и по-колхозному кондюк, то нафига т.с. необычно вверх ногами? Обычно кнопочные команда на землю даются. Вообще нужен ФНЧ, со срезом Герц так 10, т.е. максимально сколько чел может настучать. С учётом высокоомности входов МК, ёмкости большой не потребуется. Вместо триггера Шмитта (он не инвертирует, с чего ты взял эту глупость, тебе такая микруха досталась, он вообще, на любом операционнике или логическом элементе делается за счёт резистора обратной связи) уже давно созданы специализированные микрухи давить дребезг. Синхронизацией развёртки научись у осциллографа пользоваться - будет красиво и удобно видеть переходные процессы не уползающие вбок, даже разглядеть пики можно . :) Алгоритм "ой, что-то с кнопкой, подождём пока устаканится и посмотрим что с ней" ооочень распространённый, но кнопка может шуршать и в нажатом состоянии. А уж к матрице этот алгоритм прикручивать вообще некузяво. Нужен тот же ФНЧ, но программyый. Т.е. изменение состояния быстрее 1/10 секунды игнорировать. Но самое надёжное - это переключающийся контакт на RS триггер заведённый (на два входа МК). :)

    • @egorkusnezov
      @egorkusnezov 5 ปีที่แล้ว +1

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

    • @user-dz1ty5en8p
      @user-dz1ty5en8p 3 ปีที่แล้ว

      @@egorkusnezov нам на первом курсе института эту схему показали мимоходом: кнопка переключает "единицу" между R или S - подтяжки и прочие перелести по вкусу. в этом случае дребезг и "шуршания" никак не влияют на выход триггера. про "два входа МК" не понял.

  • @cedric69graf
    @cedric69graf 5 ปีที่แล้ว

    Здравствуйте! Могу я попросить Вас стать моим преподавателем-онлайн. Предложение платное. Тонкости можно обсудить после вашего ответа.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Добрый день. Я сейчас в отъезде. На два месяца. Все наработки остались дома. Смогу помочь только по приезду.

    • @cedric69graf
      @cedric69graf 5 ปีที่แล้ว

      Будем ждать. Спасибо за ответ.@@UCanDo

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Напишите мне где-то после 15-го апреля. Тогда я уже буду дома

  • @Gameplayer55055
    @Gameplayer55055 5 ปีที่แล้ว +1

    Delay,rs фиксатор , конденсатор

  • @slv8507
    @slv8507 5 ปีที่แล้ว +3

    Как то уж больно сложно все. Опросил кнопку, подождал 10 мс, опросил повторно - и все.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว +1

      За эти 10 мс микроконтроллер может сделать много чего. А так получается простаивает. Delay - это зло! :))

    • @slv8507
      @slv8507 5 ปีที่แล้ว

      Согласен, но чаще не хватает выводов, чем быстродействия. Я, например, вешаю на один аналоговый вход несколько кнопок. А как повесить на один пин прерывания несколько кнопок?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

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

    • @Yupitrer
      @Yupitrer 5 ปีที่แล้ว +1

      slv Да, и я так делаю. Ставлю 50мс. Для тех кто считает что 10мс это много то скажу что это время тратится только тогда когда нажать кнопку. Если ее не трогать то оно обходит стороной. Зато код простенький. А на Тини13 место нужно экономить.

    • @scrypto
      @scrypto 5 ปีที่แล้ว

      Установить несколько кнопок на одно прерывание - можно, проблем никаких нет. Посмотрите видео на моем канале, рассказал пару методов, как это сделать.

  • @Argonec
    @Argonec 4 ปีที่แล้ว +1

    if(knop==0) b++;
    if(knop==1&&b=5) // короткое нажатие
    {
    b=0;
    код
    }
    if(b>30) // длинное нажатие
    {
    while(knop==0) { };
    b=0;
    код
    }

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว

      Спасибо. Тоже хороший пример

  • @radiotechnician1757
    @radiotechnician1757 5 ปีที่แล้ว +2

    беда( блогеры которые юзают ардуино мимоходом решают дребезг.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      А почему беда?

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Понятно. Спасибо

  • @Relevantium
    @Relevantium 4 ปีที่แล้ว

    Одет проще нормальные кнопки купить?

    • @UCanDo
      @UCanDo  4 ปีที่แล้ว +2

      Все кнопки без исключения имеют дребезг. Не существует кнопок, которые бы не производили помехи.

  • @user-uv9rf6qm6f
    @user-uv9rf6qm6f 5 ปีที่แล้ว +2

    (ты совсем не экономишь память)

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Чем именно? Delay памяти использует гораздо больше.
      К тому же экономия только ради экономии - это всего лишь трата собственного времени (если, конечно, это не крайне необходимо).

  • @Master_Q
    @Master_Q ปีที่แล้ว

    Насколько это надёжное решение?

    • @UCanDo
      @UCanDo  ปีที่แล้ว

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

  • @user-xn5lf6fx1l
    @user-xn5lf6fx1l 3 ปีที่แล้ว

    Дребезг контактов наблюдается как при нажатии кнопки , так и при её отпускании .

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว +1

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

    • @user-xn5lf6fx1l
      @user-xn5lf6fx1l 3 ปีที่แล้ว

      ​@@UCanDo
      А вот какова длительность паузы между двумя последовательными нажатиями ?

    • @user-xn5lf6fx1l
      @user-xn5lf6fx1l 3 ปีที่แล้ว

      @@UCanDo
      Поправлю вопрос , минимальная длительность паузы !

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว +1

      Зависит от программной реализации кода кнопки. Я сейчас не у компьютера, код не могу посмотреть и сказать точно.

    • @UCanDo
      @UCanDo  3 ปีที่แล้ว +1

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

  • @andriuha_m
    @andriuha_m 3 ปีที่แล้ว

    У меня видимо кнопка вообще изнасилована, мне пришлось выставить не 70 а 500 для нормального срабатывания

  • @user-iq6mt2us2j
    @user-iq6mt2us2j 5 ปีที่แล้ว +2

    Нормальные люди кнопки опрашивают по таймеру, внешние прерывания не для этого.

  • @algisshaulis8878
    @algisshaulis8878 5 ปีที่แล้ว +1

    Нет там ни нуля, ни +5 вольт. Есть уровни логической ЕДИНИЦЫ и логического НУЛЯ. Дребезга кнопки не бывает, как и дёргание выключателя :) Эффект называется ДРЕБЕЗГ КОНТАКТОВ. Ну и прерывание на кнопку это моветон, ещё не дай бог с задержками.

  • @stanislavilchenko3368
    @stanislavilchenko3368 5 ปีที่แล้ว

    Вредное видео) Так как во многих моментах оно людей вводит в заблуждение. 1) Проверять кнопку в основном цикле нельзя потому что любые задержки в основном цикле скажутся на кнопке а при добавлении к Ардуине цветного экрана вообще такой код кнопки перестанет работать 2) Подтягивающий резистор в ЖЕЛЕЗНОЙ или ХАРДВАРНОЙ но не технической схеме не нужен, так как чип в Ардуине уже имеет встроенные подтяжки, только они подтягивают к плюсу. 3) более правильный, со всех сторон, способ работы с кнопкой - обрабатывать нажатие и осуществлять фильтрация в прерывании, а этого в видео к сожалению нет.

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      хм.. давайте рассмотрим по-порядку.
      1) Если кнопку не опрашивать в основном цикле, то где? (При условии что прерывания не доступны). Приведите рабочий пример опроса кнопки не в основном цикле программы и без прерываний. Применение цветных дисплеев делает невозможным использование внешних прерываний. Пример: Если использовать цветной TFT дисплей то он занимает весь порт PD (PD0-PD7), то есть все цифровые пины D0 - D1, в том числе пины 2 и 3 которые являются входом для прерывания, а значит на них кнопки уже не повешать. По этому приведите рабочий пример опроса кнопки не в основном цикле программы и без прерываний.
      2) Внутренний подтягивающий резистор ничем не поможет, так как между R-C цепочкой и микроконтроллером должен стоять еще триггер шмидта. Как вы его поставите внутрь микроконтроллера???
      3) Покажите пример фильтрации в прерывании, Без DELAY и каких-либо пауз. В моем примере фильтрацию выполняет R-C цепочка и триггер. А весь код выглядит вот так:
      void setup()
      {
      attachInterrupt(1, blink, RISING);
      }
      void loop()
      {
      // основной цикл программы
      }
      void blink()
      {
      // кнопка нажата
      // действие произойдет только 1 раз при нажатии кнопки
      }
      И все отлично работает, без дребезга и без нагрузки МК ненужным кодом

    • @stanislavilchenko3368
      @stanislavilchenko3368 5 ปีที่แล้ว

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

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Прерывания для всего порта ради одной кнопки? А как быть со всем остальным что на этом порте висит?
      Опрос пина по таймеру - это тот же millis, с той лишь разницей что, да, можно вынести опрос кнопки в отдельную функцию. Но так делать не хорошо. В прерываниях должен выполнятся максимально простой и короткий код, а чтение пина выполняется довольно долго. Значит в прерывании сделать разрешение на чтение, а читать в основном цикле (после разрешения)... и мы вернулись к той же millis. (поправьте если я не прав).
      Я не против применения millis или, как в данном случае, прерывание по таймеру. Но у таких способов есть один существенный недостаток: отслеживание по времени (не раньше чем прошло определенное время), и тоже необходимо писать какой-то код для антидребезга. По сути паузы (прерывание по таймеру, delay и millis) разрешают пользователю нажать кнопку только тогда, когда программа это разрешает, при этом можно забыть про быстрые нажатия, на пример двойное.
      На счет гугления - это ведь вы говорите что мой код не верен. Это вам стоит привести хороший пример кода, а то просто спор на тему "что кому нравится". Я привел код. Приведите и вы код для примера. Тогда и можно будет говорить какой вариант лучше, а какой плох.
      На счет применения r-c цепочки: обязательно нужно ставить триггер шмитта. Если просто конденсатор и резистор (пусть даже внутренний подтягивающий) то на выходе вместо логических "0" и "1" мы получим "волну". У ардуино логический "0" считается когда напряжение ниже 0,8 вольт, единица - когда напряжение выше 2 вольта. Так вот, когда "волна" будет подыматься то между 0,8 вольт 2 вотами пин будет в третьем состоянии, а это то же самое что дребезг кнопки. В быстрых программах подключение конденсатора ни на что не влияет так как будет ловиться это третье состояние. Именно по этому вместе с r-c цепочкой нужно ставить триггер шмитта.
      Конечно, если программа медленная то такой вариант прокатывает.

    • @shlemkin
      @shlemkin 3 ปีที่แล้ว

      после 15 сек поиска: "Три регистра PCMSK0, PCMSK1 и PCMSK2 (Pin Change Mask Register) используются для указания входов, которым разрешено генерировать сигнал запроса прерывания."... ищите инфу больше 14 секунд!!!
      таблицу сюдой рисовать, или сами найдете, как конкретным ногам разрешить дергать за pcint прерывания?))

    • @guliwer1713
      @guliwer1713 2 ปีที่แล้ว

      у меня кнопка подтянута на минус резистором 200 ом и в паралель кнопке сидит конденсатор 0,5 микрофарат
      и все равно кнопка иногда "сама" нажимается ....

  • @user-jv7us6zr3f
    @user-jv7us6zr3f 2 ปีที่แล้ว

    Погано кнопку прямо на кондюк вішати.

    • @amid6229
      @amid6229 ปีที่แล้ว

      Да во многих схемах так и делают и ничего!
      Правда ёмкости используют более адекватные (100 nF).
      Решил погуглить схемы (для примера взял какой-то монитор HP), так там в схеме между кнопками и конденсатором обведена красным область и отмечено, что в правке такой то резисторы R209-R212 номиналом 470 ohm удалены.
      Решили начать экономить? Или они просто там даром не нужны?

    • @UCanDo
      @UCanDo  ปีที่แล้ว

      В большинстве случаев можно обойтись «малой кровью», без резисторов. Но с ними надежнее.

    • @amid6229
      @amid6229 ปีที่แล้ว

      @@UCanDo
      Ну…
      Возьмём внутренний резистор подтяжки 20 кОм (STM32), кондей замыкаемый на кнопку 0.1 микрофарада.
      Он будет заряжаться до логической единицы 2 миллисекунды (при этом 0.8 миллисекунды будет гарантированно ниже логического нуля).
      Т.е. если между импульсами менее 1 мс, то они отфильтруются, а срабатывание будет по первому импульсу.
      А вот при отпускании, срабатывание будет через 2 мс.
      Если же добавить резистор между конденсатором и кнопкой, то добавится и задержка перед нажатием (что может быть не приятным, когда кнопка работает в качестве концевика).
      Да и энергии (особенно при напряжении 3.3 В) в конденсаторе 0.1 микрофарад не хватит чтобы как-то навредить контактам. Раньше механический и химический (от влажности и воздуха) износ наступят чем от разрядов конденсатора…
      Проблема от использования внутренних подтяжек может возникнуть только при длинных проводниках, особенно если они идут в параллель с силовыми.

  • @Dim_sev
    @Dim_sev 5 ปีที่แล้ว +4

    фоновая музыка полный шлак

    • @UCanDo
      @UCanDo  5 ปีที่แล้ว

      Посоветуйте другую