Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //в этом коде дребезг в общем-то не обрабатывается
- //а используется обходной приём
- const byte ledPin = 9;
- const byte buttonPin = 8;
- volatile bool toggleState = false;
- void checkSwitch(){
- if(digitalRead(buttonPin) == LOW){
- delay(200);
- //тут нет как таковой защиты от дребезга, просто после мгновенного выполнения if в течение delay ниакие процессы не работают
- //в том числе и дребезг во время delay "не работает", то есть игнорируется как и всё остальное
- //переключение toggleState наступает после delay, но к этому времени все действия с кнопкой уже завершены
- //поэтому важна длительность данного delay, если она будет менее 150 мс,
- //то возможно кнопка ещё будет в "физическом процессе"
- //если будет занчительно больше 200 мс, например 1 сек, то переключение toggleState будет происходить с этой задержкой
- toggleState = !toggleState;
- digitalWrite(ledPin, toggleState);
- }
- }
- void setup() {
- pinMode(buttonPin,INPUT_PULLUP);
- pinMode(ledPin,OUTPUT);
- }
- void loop() {
- checkSwitch();
- }
Advertisement
Add Comment
Please, Sign In to add comment