const int LED=9;//светодиод к контакту 9
const int BUTTON=2;//кнопку к контакту 2
boolean lastButton=LOW;//переменная для хранения предыдущего
                       //состояния кнопки
boolean currentButton=LOW;//переменная для хранения текущего
                         //состояния кнопки
boolean ledOn=false;//текущее состояние контакта светодиода(вкл/выкл)
void setup()
{
  pinMode(LED,OUTPUT);//задаем для контакта LED режим вывода
  pinMode (BUTTON,INPUT);//задаем для кнопки режим ввода(не обязательно)
  
}
/*функция устранения дребезга контактов. Передаем ей значение предыдущего состояния кнопки и получаем от нее текущее значение состояния кнопки с устраненным дребезгом */
boolean debounce(boolean last)
{
  boolean current=digitalRead(BUTTON);//считываем текущее состояние кнопки
  if (last !=current)//если оно иное чем предыдущее
{
delay(5);//ждем 5мс
current=digitalRead(BUTTON);//считываем снова
}
return current;//возвращаем текущее состояние кнопки
}

void loop()
{
  currentButton=debounce(lastButton);//считываем состояние кнопки
                                     //с устраненным дребезгом
  if(lastButton==LOW && currentButton==HIGH)//если кнопка была нажата
  {
    ledOn=!ledOn;//переключаем значение LED на обратное                                   
  }
  lastButton=currentButton;//обновляем текщее значение кнопки
  digitalWrite(LED,ledOn);//изменяем значение LED
}

