0 голосов
Я попробовал сделать так -

#define LED_PIN     12
#define BUTTONA_PIN 11
#define BUTTONB_PIN 10
boolean aUp = true;
boolean bUp = true;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTONA_PIN, INPUT_PULLUP);
pinMode(BUTTONB_PIN, INPUT_PULLUP);
}

void loop() {
       if (bUp && !digitalRead(BUTTONB_PIN)) {
    delay(10);
    if (!digitalRead(BUTTONB_PIN)) {
       if (aUp && !digitalRead(BUTTONA_PIN)) {
    delay(10);
    if (!digitalRead(BUTTONA_PIN)) {   
      digitalWrite(LED_PIN, HIGH);
  }
    }
    }
}
 bUp = digitalRead(BUTTONB_PIN);
  aUp = digitalRead(BUTTONA_PIN);
}

Но набрав нужную комбинацию светодиод не загорался. В чем ошибка?
(12 баллов) 1 4

1 Ответ

0 голосов
Ошибка в непонимании того, как МК исполняет программу. Инструкции в цикле loop() выполняются несколько десятков тысяч раз в секунду.

Отслеживание последовательности нажатий проще всего реализовать на конечном автомате (машине состояний). Что это, я рассказываю здесь:

http://forum.amperka.ru/threads/%D0%9E%D0%B4%D0%BD%D0%B0-%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B0-%D0%BE%D0%B4%D0%B8%D0%BD-%D0%B4%D0%B8%D0%BC%D0%BC%D0%B5%D1%80.21207/

http://forum.amperka.ru/threads/%D0%9E%D1%81%D1%80%D0%B2-quarkts-attiny817-%D0%B1%D1%83%D0%B4%D0%B5%D0%BC-%D0%BF%D0%BE%D0%BC%D0%BE%D1%80%D0%B3%D0%B0%D1%82%D1%8C.21192/
(2.7 тыс. баллов) 5 24 55
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. parovoZZ

    16 балл(ов)

  2. lyay

    14 балл(ов)

  3. Aromik

    8 балл(ов)

  4. AlexUno111

    6 балл(ов)

  5. Анатоле

    2 балл(ов)

  6. mrgrbt

    2 балл(ов)

...