#define LED 8 #define BUT 12 boolean led_state = false; //Обозначим переменную нынешнего состояния лампы.True - лампа горит, False - нет. boolean but_state = false; // Эта переменная будет хранить значение кнопки.True - кнопка нажата, False - нет. void setup() { pinMode(8, OUTPUT); pinMode(12, INPUT_PULLUP); //Нужно вклчить подтягивающий резистор.Иначе, шумы испортят нам эксперимент. } void loop() { boolean but_now = digitalRead(12); // В эту переменную будет записываться нынешнее состояние кнопки. //True -кнопка НЕ зажата, False - зажата. if(but_now && !but_state) //В этом условном операторе прописано: //Если значение but - истина, а значение pos1 НЕ ложь //(Что означает этот "!" знак рассмотрим в пояснениях) { digitalWrite(8, HIGH); //Включаем светодиод. led_state = !led_state; //Изменяем состояние лампы. delay(10); //Ждем немного.Надо ждать из-за так называемого дребезга.(англ.bounce) } but_state = but_now; //Присваиваем нынешнее значение зажатой или не зажатой кнопки. digitalWrite(LED, led_state); //Подаем или не подаем напряжение на светодиод в зависимости от состояния лампы. }