Ruslan_nig

debounceWithoutDebounce

Mar 17th, 2024 (edited)
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //в этом коде дребезг в общем-то не обрабатывается
  2. //а используется обходной приём
  3. const byte ledPin = 9;
  4. const byte buttonPin = 8;
  5. volatile bool toggleState = false;
  6.  
  7. void checkSwitch(){
  8.   if(digitalRead(buttonPin) == LOW){
  9.     delay(200);
  10. //тут нет как таковой защиты от дребезга, просто после мгновенного выполнения if в течение delay ниакие процессы не работают
  11. //в том числе и дребезг во время delay "не работает", то есть игнорируется как и всё остальное
  12. //переключение toggleState наступает после delay, но к этому времени все действия с кнопкой уже завершены
  13. //поэтому важна длительность данного delay, если она будет менее 150 мс,
  14. //то возможно кнопка ещё будет в "физическом процессе"
  15. //если будет занчительно больше 200 мс, например 1 сек, то переключение toggleState будет происходить с этой задержкой
  16.     toggleState = !toggleState;
  17.     digitalWrite(ledPin, toggleState);
  18.   }
  19. }
  20.  
  21. void setup() {
  22. pinMode(buttonPin,INPUT_PULLUP);
  23. pinMode(ledPin,OUTPUT);
  24. }
  25.  
  26. void loop() {
  27.   checkSwitch();
  28. }
  29.  
Advertisement
Add Comment
Please, Sign In to add comment