Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:aruno:exp5_2 [2020/06/26 18:16] – alexnik | products:aruno:exp5_2 [2020/08/28 11:36] (текущий) – alexnik | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 5.2. Эмуляция кнопки с фиксацией ===== | ===== Эксперимент 5.2. Эмуляция кнопки с фиксацией ===== | ||
+ | |||
В предыдущем эксперименте мы столкнулись с явлением которое характерно для всех кнопок и выключателей - **дребезг контактов**. Это паразитное явление, | В предыдущем эксперименте мы столкнулись с явлением которое характерно для всех кнопок и выключателей - **дребезг контактов**. Это паразитное явление, | ||
Дребезг контактов возникает при нажатии на кнопку и переключатель, | Дребезг контактов возникает при нажатии на кнопку и переключатель, | ||
Строка 7: | Строка 8: | ||
{{ : | {{ : | ||
Чтобы устранить эффект дребезга контактов есть два способа программный и аппаратный.\\ | Чтобы устранить эффект дребезга контактов есть два способа программный и аппаратный.\\ | ||
- | , параллельно кнопке включают конденсатор, сглаживающий скачки | + | Один из вариантов |
- | переключения кнопки станет | + | |
- | Сглаживающий конденсатор заряжается до уровня HIGH почти мгновенно, а во время дребезга контактов разряжается, повышая уровень напряжения в цепи. Таким образом скачки напряжения значительно уменьшаются. | + | |
- | Теперь | + | |
- | Чтобы защитить контроллер, последовательно с кнопкой добавим токоограничительный резистор 1 кОм. | + | |
==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
- | {{ : | + | Схема эксперимента не изменилась по сравнению с прошлым, |
+ | |||
+ | {{ : | ||
// | // | ||
Соберем эту схему: | Соберем эту схему: | ||
- | {{ : | + | {{ : |
// | // | ||
==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
- | <file cpp Exp5_2[enable_line_numbers=" | + | <file cpp Exp5[enable_line_numbers=" |
// инициализация констант | // инициализация констант | ||
Строка 35: | Строка 34: | ||
void setup() { | void setup() { | ||
- | pinMode(BUTTON, | + | |
- | | + | pinMode(LED, |
- | } | + | } |
void loop() { | void loop() { | ||
Строка 45: | Строка 44: | ||
if (switchState == HIGH) { | if (switchState == HIGH) { | ||
lightsOn = !lightsOn; | lightsOn = !lightsOn; | ||
- | } | + | delay(20); |
- | } | + | } |
- | if(lightsOn) { | + | |
+ | | ||
digitalWrite(LED, | digitalWrite(LED, | ||
- | | + | } |
else { | else { | ||
digitalWrite(LED, | digitalWrite(LED, | ||
- | | + | } |
} | } | ||
</ | </ | ||
- | + | Электрическая принципиальная схема | |
- | В соответствие инструкции дополним схему конденсатором **С1** и резистором **R3**.\\ | + | Аппаратный способ устранения дребезга рассмотрим в следующем эксперименте.\\ |
- | Программный код оставим без изменений. \\ | + | |
- | Запустим программу на выполнение, и на этот раз все работает как | + |