#define BUTTON_PIN 3 #define LED_PIN 5 #define BUTTON_PIN_1 4 #define LED_PIN_1 6 boolean buttonWasUp = true; // была ли кнопка отпущена? boolean ledEnabled = false; // включен ли свет? void setup() { pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN_1, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(BUTTON_PIN_1, INPUT_PULLUP); } void loop() { // определить момент «клика» несколько сложнее, чем факт того, // что кнопка сейчас просто нажата. Для определения клика мы // сначала понимаем, отпущена ли кнопка прямо сейчас... boolean buttonIsUp = digitalRead(BUTTON_PIN); // ...если «кнопка была отпущена и (&&) не отпущена сейчас»... if (buttonWasUp && !buttonIsUp) { // ...может это «клик», а может и ложный сигнал (дребезг), // возникающий в момент замыкания/размыкания пластин кнопки, // поэтому даём кнопке полностью «успокоиться»... delay(10); // ...и считываем сигнал снова buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { // если она всё ещё нажата... // ...это клик! Переворачиваем сигнал светодиода ledEnabled = !ledEnabled; digitalWrite(LED_PIN, ledEnabled); } } // запоминаем последнее состояние кнопки для новой итерации buttonWasUp = buttonIsUp; { boolean buttonIsUpIP = digitalRead(BUTTON_PIN_1); // ...если «кнопка была отпущена и (&&) не отпущена сейчас»... if (buttonWasUpIP && !buttonIsUpIP) { // ...может это «клик», а может и ложный сигнал (дребезг), // возникающий в момент замыкания/размыкания пластин кнопки, // поэтому даём кнопке полностью «успокоиться»... delay(10); // ...и считываем сигнал снова buttonIsUpIP = digitalRead(BUTTON_PIN_1); if (!buttonIsUpIP) { // если она всё ещё нажата... // ...это клик! Переворачиваем сигнал светодиода ledEnabledIP = !ledEnabledIP; digitalWrite(LED_PIN_1, ledEnabledIP); } } // запоминаем последнее состояние кнопки для новой итерации buttonWasUpIP = buttonIsUpIP;} } #define BUTTON_PIN 3 #define LED_PIN 5 #define BUTTON_PIN_1 4 #define LED_PIN_1 6 boolean buttonWasUp = true; // была ли кнопка отпущена? boolean ledEnabled = false; // включен ли свет? void setup() { pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN_1, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(BUTTON_PIN_1, INPUT_PULLUP); } void loop() { // определить момент «клика» несколько сложнее, чем факт того, // что кнопка сейчас просто нажата. Для определения клика мы // сначала понимаем, отпущена ли кнопка прямо сейчас... boolean buttonIsUp = digitalRead(BUTTON_PIN); // ...если «кнопка была отпущена и (&&) не отпущена сейчас»... if (buttonWasUp && !buttonIsUp) { // ...может это «клик», а может и ложный сигнал (дребезг), // возникающий в момент замыкания/размыкания пластин кнопки, // поэтому даём кнопке полностью «успокоиться»... delay(10); // ...и считываем сигнал снова buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { // если она всё ещё нажата... // ...это клик! Переворачиваем сигнал светодиода ledEnabled = !ledEnabled; digitalWrite(LED_PIN, ledEnabled); } } // запоминаем последнее состояние кнопки для новой итерации buttonWasUp = buttonIsUp; { boolean buttonIsUpIP = digitalRead(BUTTON_PIN_1); // ...если «кнопка была отпущена и (&&) не отпущена сейчас»... if (buttonWasUpIP && !buttonIsUpIP) { // ...может это «клик», а может и ложный сигнал (дребезг), // возникающий в момент замыкания/размыкания пластин кнопки, // поэтому даём кнопке полностью «успокоиться»... delay(10); // ...и считываем сигнал снова buttonIsUpIP = digitalRead(BUTTON_PIN_1); if (!buttonIsUpIP) { // если она всё ещё нажата... // ...это клик! Переворачиваем сигнал светодиода ledEnabledIP = !ledEnabledIP; digitalWrite(LED_PIN_1, ledEnabledIP); } } // запоминаем последнее состояние кнопки для новой итерации buttonWasUpIP = buttonIsUpIP;} }
уже все: #define BUTTON_PIN 3 #define LED_PIN 5 #define BUTTON_PINF 4 #define LED_PINF 6 boolean buttonWasUp = true; // была ли кнопка отпущена? boolean ledEnabled = false; // включен ли свет? void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(LED_PINF, OUTPUT); pinMode(BUTTON_PINF, INPUT_PULLUP); } void loop() { digitalWrite(LED_PINF, HIGH); boolean buttonUp = digitalRead(BUTTON_PINF); boolean buttonIsUp = digitalRead(BUTTON_PIN); if (buttonWasUp && !buttonIsUp) { delay(10); // ...и считываем сигнал снова buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(LED_PIN, ledEnabled); } } if (!buttonUp) { delay(10); buttonUp = digitalRead(BUTTON_PINF); if (!buttonUp) { digitalWrite(LED_PINF, LOW); delay(10000); digitalWrite(LED_PINF, HIGH); } } buttonWasUp = buttonIsUp; }
Не исправленный код!!!для чтения!! Код (C++): #define BUTTON_PIN 3 #define LED_PIN 5 #define BUTTON_PINF 4 #define LED_PINF 6 boolean buttonWasUp = true; // была ли кнопка отпущена? boolean ledEnabled = false; // включен ли свет? void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(LED_PINF, OUTPUT); pinMode(BUTTON_PINF, INPUT_PULLUP); } void loop() { digitalWrite(LED_PINF, HIGH); boolean buttonUp = digitalRead(BUTTON_PINF); boolean buttonIsUp = digitalRead(BUTTON_PIN); if (buttonWasUp && !buttonIsUp) { delay(10); // ...и считываем сигнал снова buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(LED_PIN, ledEnabled); } } if (!buttonUp) { delay(10); buttonUp = digitalRead(BUTTON_PINF); if (!buttonUp) { digitalWrite(LED_PINF, LOW); delay(10000); digitalWrite(LED_PINF, HIGH); } } buttonWasUp = buttonIsUp; }
Я так понял что здесь нет элемента для второй пары(кнопка светодиод)?! Типа Код (C++): ButtonWasUp = ButtonIsUp