Выдает 0, после 1 включения динамика с ИК-пульта
- Войдите на сайт для отправки комментариев
Втр, 09/05/2017 - 18:58
Делаю включение динамика через ИК-пульт.
После нажатия кнопки, активируется динамик.
Но второй раз уже не получается, в консоли выдает 0. Помогает только перезагрузка Arduino.
Если убрать включение динамика, все проходит нормально, нажимай сколько хочешь.
Подскажите, в чем может быть проблема ?
Обычно здесь в таких случаях пишут "проблема в 12-й строке скетча", или "зелёный провод неправильно подключен", догадываетесь, о чём я ?
#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(); // Принимаем следующую команду } }Попробуйте перенести IR приемник на другой пин, скажем на 9 или 10 (не на 11,3).
UPD. блин. он же только что висел на 11 пине, а теперь на 5 (апдейтнули пост с кодом). Теперь работает?
К сожалению, не помогло
UPD: нет, попробовал несколько пинов, все равно не работает
Смог решить проблемму запуская прием с ИК-приемника заного после каждого проигрывания музыки
#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(); // Принимаем следующую команду } }Смог решить проблемму запуская прием с ИК-приемника заного после каждого проигрывания музыки
Если Вас устраивает , что приема нет во время audio(), то и ладно :)
Во время audio() приема нет, но после завершения, прием есть, но выдает 0.