Странное поведение ИК-приемника

Тема в разделе "Arduino & Shields", создана пользователем Кирилл56, 9 фев 2017.

  1. Предыстория: купил я ик приёмник (tsop 1783), подключил по даташиту и все работало, но позже, запутавшись в схеме я перепутал пины (реле воткнул в пин с ик-приемником, а ик-приемник в реле).
    После этого приемник отказывался работать, до некоторого времени... При включении ардуино [мега] и нажатии на кнопку пульта- команда, прописанная для данной кнопки выполняется, однако при этом и происходит та самая ошибка: на другие команды приемник (или ардуино) не откликаются, а serial показывает "столб" повторяющегося кода кнопки пульта.
    Код (C++):

    #include <IRremote.h>
    int RECV_PIN = 11; //Пин с ИК приемником
    IRrecv irrecv(RECV_PIN);
    decode_results results;

    void setup()
    {
      Serial.begin(9600);
      irrecv.enableIRIn();
      pinMode(8, OUTPUT); //Светодиод
      pinMode(9, OUTPUT); //Светодиод
      pinMode(10, OUTPUT); //Светодиод
      pinMode(21, OUTPUT); //Реле
    }

    void loop() {
      if (irrecv.decode(&results)) {
        Serial.println(results.value);

        switch (results.value) {
          case 16736925:
            digitalWrite(10, HIGH);
            break;
          case 16753245:
            digitalWrite(10, LOW);
            break;


          case 16712445:
            digitalWrite(9, HIGH);
            break;
          case 16720605:
            digitalWrite(9, LOW);
            break;


          case 16754775:
            digitalWrite(8, HIGH);
            break;
          case 16769055:
            digitalWrite(8, LOW);
            break;


          case 16761405:
            digitalWrite(21, HIGH);
            break;
          case 16748655:
            digitalWrite(21, LOW);
            break;
            irrecv.resume();
        }
      }
    }
    Скрин Serial'а:
    На нем я пытался включить реле, как видно код кнопки пульта для выполнения команды реле постоянно дублируется, тем самым (?)загружая канал
    [​IMG]
    Хотелось бы узнать, программная ли ошибка, или же действительно поломался приемник. Ведь он принимает первый сигнал
     
    Последнее редактирование: 10 фев 2017
  2. P.s. C приемником скорее всего все впорядке, т.к. остальные выдают ту же ошибку
     
  3. Проблему решил:
    Вместо
    Код (C++):
    break;
    irrecv.resume();
    }
    Надо
    Код (C++):
    break;
    }
    irrecv.resume();