Избавление от дребезга кнопки

при создании проектов, где используются кнопки, иногда возникает необходимость избавиться от так называемого дребезга. Дребезг возникает в силу физических причин об этом можно много где почитать, например тут Дребезг контактов

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

int main(void){
  unsigned char butcount=0;

  while (1) 
    {		
	if (!(PINB & 0b00000001))
	{
		if (butcount<5){
			butcount++;	
		}
		else {
			PORTD = 0b00000001;
		}
		
	} 
	else
	{
		if (butcount>0){
			butcount--;
		} else {
			PORTD = 0b00000000;
		}
	}
}

При нажатии кнопки собирается количество срабатываний контакта, как только количество становится больше 5, диод загорается, butcount перестает увеличиваться. Как только кнопку отпустили, butcount резко начинается уменьшаться, пока не станет равно 0, в этом случае диод затухает.

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.