Выдает 0, после 1 включения динамика с ИК-пульта

AndrewNovikov
Offline
Зарегистрирован: 09.05.2017

Делаю включение динамика через ИК-пульт.

После нажатия кнопки, активируется динамик.

Но второй раз уже не получается, в консоли выдает 0. Помогает только перезагрузка Arduino.

Если убрать включение динамика, все проходит нормально, нажимай сколько хочешь.

Подскажите, в чем может быть проблема ?

 

Araris
Offline
Зарегистрирован: 09.11.2012

Обычно здесь в таких случаях пишут "проблема в 12-й строке скетча", или "зелёный провод неправильно подключен", догадываетесь, о чём я ?

AndrewNovikov
Offline
Зарегистрирован: 09.05.2017
#include <IRremote.h>
#include "pitches.h"
const int dinamic = 11;
int res = 0;
int notes [] ={
NOTE_A4, NOTE_E3, NOTE_A4, 0,
NOTE_A4, NOTE_E3, NOTE_A4, 0,
NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_C4, NOTE_D4,
NOTE_E4, NOTE_E3, NOTE_A4, 0
};
int times [20] = {
250, 250, 250, 250,
250, 250, 250, 250,
125, 125, 125, 125, 125, 125, 125, 125,
250, 250, 250, 250
};
void audio() 
{
  // put your setup code here, to run once:
  for(int i = 0; i < 20; i++)
  {
   tone(dinamic, notes[i], times[i]);
   delay(times[i]); 
  }
  noTone(dinamic);
}

IRrecv irrecv(5); // Указываем пин, к которому подключен приемник
decode_results results;
//Audio myAudio;
void setup()
{
  Serial.begin(9600); // Выставляем скорость COM порта
  pinMode(dinamic, OUTPUT);
  pinMode(11, INPUT);
  irrecv.enableIRIn(); // Запускаем прием
}
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли 
  {
    Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
    if(results.value == 0xFFC23D)
    {
      audio();
      delay(100);
    }
    irrecv.resume(); // Принимаем следующую команду
  }
}

 

 

T.Rook
Offline
Зарегистрирован: 05.03.2016

Попробуйте перенести IR  приемник на другой пин, скажем на 9 или  10 (не на 11,3).

UPD. блин. он же только что висел на 11 пине, а теперь на 5 (апдейтнули пост с кодом). Теперь работает? 

AndrewNovikov
Offline
Зарегистрирован: 09.05.2017

К сожалению, не помогло

UPD: нет, попробовал несколько пинов, все равно не работает

AndrewNovikov
Offline
Зарегистрирован: 09.05.2017

Смог решить проблемму запуская прием с ИК-приемника заного после каждого проигрывания музыки

#include <IRremote.h>
#include "pitches.h"
const int dinamic = 11;
int res = 0;
int notes [] ={
NOTE_A4, NOTE_E3, NOTE_A4, 0,
NOTE_A4, NOTE_E3, NOTE_A4, 0,
NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_C4, NOTE_D4,
NOTE_E4, NOTE_E3, NOTE_A4, 0
};
int times [20] = {
250, 250, 250, 250,
250, 250, 250, 250,
125, 125, 125, 125, 125, 125, 125, 125,
250, 250, 250, 250
};
void audio() 
{
  // put your setup code here, to run once:
  for(int i = 0; i < 20; i++)
  {
   tone(dinamic, notes[i], times[i]);
   delay(times[i]); 
  }
  noTone(dinamic);
}

IRrecv irrecv(10); // Указываем пин, к которому подключен приемник
decode_results results;
//Audio myAudio;
void setup()
{
  Serial.begin(9600); // Выставляем скорость COM порта
  pinMode(dinamic, OUTPUT);
  pinMode(11, INPUT);
  irrecv.enableIRIn(); // Запускаем прием
}
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли 
  {
    Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
    if(results.value == 0xFFC23D)
    {
      audio();
      delay(100);
      irrecv.enableIRIn(); // Запускаем прием заного
    }
    irrecv.resume(); // Принимаем следующую команду
  }
}

 

 

T.Rook
Offline
Зарегистрирован: 05.03.2016

AndrewNovikov пишет:

Смог решить проблемму запуская прием с ИК-приемника заного после каждого проигрывания музыки

Если Вас устраивает , что приема нет во время audio(), то и ладно :)

 

AndrewNovikov
Offline
Зарегистрирован: 09.05.2017

Во время audio() приема нет, но после завершения, прием есть, но выдает 0.