Помогите дописать простенький код.

Тема в разделе "Arduino & Shields", создана пользователем SuperTesto, 18 июн 2016.

  1. SuperTesto

    SuperTesto Нуб

    Нужно сделать так, чтобы при первом нажатии на кнопку диод включался, а при повторном нажатии выключался. Много значений results.value потому что пульт по какой-то причине через раз скидывает разные значения.

    Код (C++):
    #include "IRremote.h"
    IRrecv irrecv(2); // указываем вывод, к которому подключен приемник
    decode_results results;

    #define r 11
    #define g 10
    #define b 9

    void setup() {
      irrecv.enableIRIn(); // запускаем прием
      Serial.begin(9600);
      pinMode(r, OUTPUT);
      pinMode(g, OUTPUT);
      pinMode(b, OUTPUT);
    }

    void loop() {

      if ( irrecv.decode( &results )) { // если данные пришли
        Serial.println( results.value, HEX );
     
        if (results.value == 0xDAEA83EC || results.value == 0xBF702887 || results.value == 0xB3A56E15 || results.value == 0x8E57DA3D || results.value == 0x324F8E29 || results.value == 0xA1063983 || results.value == 0x802F1877)
        {
          digitalWrite(r, HIGH);
        }
     
     
        irrecv.resume(); // принимаем следующую команду
      }
    }
     
     
  2. seregareal2

    seregareal2 Нерд

    ! (логическое отрицание)
    True, если операнд false, и наоборот, например:
    Код (C++):
    if (!x) {
    // ...
    }
    http://arduino.ru/Reference/Boolean

    не то что вам нужно?
     
  3. seregareal2

    seregareal2 Нерд

  4. fogary

    fogary Гик

    Код для включения светодиода есть, а для выключения где?

    У Вас, помимо кодов нажатия кнопки/кнопок, какие-то другие коды приходят? Если нет, то смысла проверять сами коды нет, достаточно самого факта получения кода (любого). Просто инвертируйте состояние выхода на светодиод:

    Код (C++):
    digitalWrite(r, !digitalRead(r));