arduino останавливается посреди выполнения программы

Пытаюсь сделать пульт на arduino. Посреди программы ардуина останавливается (или останавливается вывод?). Было даже, что светодиод RX просто оставался включённым. Проблема проявлялась в нескольких вариантах:

  1. Ардуина останавливалась на выводе sending data, не выводя data sent (код ниже). Один раз было, что после этого светодиод, который у меня стоит вместо ИК, остался гореть, но очень неярко.
  2. Была остановка на found pult signal, причём что когда я снова нажимал на пульт, светодиод L, который у меня мониторит сигналы пульта, снова моргал.

Часто при прирывании программы выводится знак chr('16'). Reset кнопка на плате помогает.

Ещё есть две ошибки, которые больше похожи на программные, но ошибку я не смог найти.

  1. Сначала светодиод , который у меня стоит вместо ИК, вроде моргает при sending data, а потом перестаёт, хотя sending data пишется, как будто стирается переменная dt.
  2. Иногда бывает, что я не нажал кнопку записи, но видно что светодиод L моргает когда я нажимаю на пульт (т.е. оно всё ещё считывает ИК приёмник)
    #include <PCM.h>
    #include <IRremote.h>
    const int recPin = 2;
    const int playPin = 3;
    const int reciverPin = 9;
    bool recPushed, playPushed, recving;
    IRrecv irrecv(reciverPin);
    IRsend sender(10);
    //uint32_t res;
    decode_results results;
    IRData* dt;
    void setup()
    {
    Serial.begin(115200);
    pinMode(recPin,INPUT);
    pinMode(playPin,INPUT);
    sender.begin(10,1,LED_BUILTIN);
    irrecv.enableIRIn();
    }
    void loop() {
    recPushed=digitalRead(recPin);
    playPushed=digitalRead(playPin);
    Serial.println(1);
    if(recPushed && !recving)
    {
    irrecv.start();
    Serial.println("starting recv");
    recving=true;
    }
    Serial.println(2);
    delay(100);
    if(!recPushed && recving)
    {
    irrecv.stop();
    Serial.println("stopping recv");
    recving=false;
    }
    Serial.println(3);
    delay(100);
    if (recving && irrecv.decode()) {
    Serial.println("found pult signal");
    dt=irrecv.read();
    irrecv.resume();
    }
    Serial.println(4);
    delay(100);
    if(playPushed)
    {
    Serial.println("sending data");
    sender.write(dt,10);
    Serial.println("data sent");
    }
    delay(100);
    }

Ответы (0 шт):