===== Эксперимент 5_3. Эмуляция кнопки с фиксацией ===== Аппаратный способ устранения эффекта дребезга заключается в следующем: \\ параллельно кнопке включают конденсатор, сглаживающий скачки напряжения и делающий процесс переключения более плавным. Обычно номинал конденсатора делают не слишком большим, порядка 0.1 мкФ (микрофарад), иначе он будет заряжаться слишком долго и время переключения кнопки станет заметно больше.\\ Сглаживающий конденсатор заряжается до уровня HIGH почти мгновенно, а во время дребезга контактов разряжается, повышая уровень напряжения в цепи. Таким образом скачки напряжения значительно уменьшаются.\\ Теперь кнопка будет работать правильно, но схема все еще нуждается в доработке. Предположим, что во время написания программы, мы ошиблись и случайно определили вывод контроллера не как INPUT, а как OUTPUT. В этом случае через ножку контроллера потечет ток короткого замыкания, превышающий предельно допустимый и контроллер выйдет из строя.\\ Чтобы защитить контроллер, последовательно с кнопкой добавим токоограничительный резистор 1 кОм. ==== Схема эксперимента ==== {{ :products:ardu:exp5_2_sch.png?nolink&400 |}} //Рисунок 1. Электрическая принципиальная схема эксперимента// Соберем эту схему: {{ :products:ardu:exp5_2.png?direct&600 |}} //Рисунок 2. Монтажная схема эксперимента// ==== Программный код эксперимента ==== // инициализация констант #define LED 2 //определение константы LED с номером пина 2 #define BUTTON 12 //определение константы BUTTON с номером пина 12 // инициализация переменных int switchState = 0; // актуальный статус кнопки int oldSwitchState = 0; // статус последней проверки кнопки boolean lightsOn = false; // статус светодиода on = true или off = false void setup() { pinMode(BUTTON, INPUT); pinMode(LED, OUTPUT); } void loop() { switchState = digitalRead(BUTTON); if (switchState != oldSwitchState) { oldSwitchState = switchState; if (switchState == HIGH) { lightsOn = !lightsOn; } } if(lightsOn) { digitalWrite(LED, HIGH); // зажигаем светодиод } else { digitalWrite(LED, LOW); // гасим светодиод } } В соответствие инструкции, дополним схему конденсатором **С1** и резистором **R3**.\\ Программный код остается без изменений. \\ Запустим программу на выполнение, и на этот раз все работает как и задумано.\\