Arduino - 播放音乐和发送红外信号冲突

问题描述 投票:0回答:0

我正在尝试创建一个程序,从 sd 播放音乐,然后通过红外控制器控制房间的灯光。我需要能够在播放音乐时向灯泡发送红外信号。 然后我会添加一个操纵杆来选择音乐和颜色或灯光,但这是下一步(目前是婴儿步骤,我还在学习,这是我的第一个项目)。

我写了下面的草图。我已将所有内容都放在设置部分,因为我只是在进一步测试之前测试不同的功能。

IR let 连接到引脚 3,sd CS 连接到引脚 4

#include "PinDefinitionsAndMore.h"  // Define macros for input and output pin etc. for IR remote librairy
#include <IRremote.hpp>
#include <SD.h> // need to include the SD library
#define SD_ChipSelectPin 4 //connect pin 4 of arduino to cs pin of sd card
#include <TMRpcm.h> //Arduino library for asynchronous playback of PCM/WAV files
#include <SPI.h> //  need to include the SPI library


TMRpcm tmrpcm;

void setup() {
 tmrpcm.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
 Serial.begin(9600);
 
 Serial.println("Light on");
 IrSender.sendNEC(0x0, 0x45, 10);

 if (!SD.begin(SD_ChipSelectPin)) // returns 1 if the card is present
 {
  Serial.println("SD fail");
  return;
 }
 tmrpcm.setVolume(3); //
 Serial.println("Music Start");
 tmrpcm.play("Forest.wav");
 delay(2000);
//  tmrpcm.disable();
 IrSender.sendNEC(0x0, 0x47, 10);
 Serial.println("Light Off");
 delay(5000);
 tmrpcm.disable();
 Serial.println("Music Off");

}

void loop() {
  // put your main code here, to run repeatedly:


}

上传代码时,灯亮,音乐开始,但音乐开始后灯不会熄灭。如果我取消注释“// tmrpcm.disable();”灯熄灭了,但我停止了音乐,这不是我想要的。

看论坛,好像是两个库之间的冲突。我已经尝试将 tmrpcm 配置为仅使用计时器 2(通过取消注释配置文件中的命令(“#define USE_TIMER2”),然后将扬声器连接到引脚 3,但它不起作用。

我已经设法为 IR LED 使用了一个非 pwd 引脚(例如引脚 7)它确实打开了灯,但在关闭它时也出现了同样的问题。这很奇怪,因为我虽然通过使用引脚 7 我没有使用定时器 2,所以应该没有任何问题。

我也尝试过使用我发现的一些代码,据说可以在没有定时器的情况下发送红外信号,但从未设法让它们工作。

我的想法已经用完了,理想情况下我不想使用另一块板(然后我可以向第二块板发出信号来播放音乐),因为我需要降低成本。我想我想要实现的目标在 Arduino 中是可行的。

感谢您的帮助。

米歇尔

arduino audio-player infrared conflicting-libraries
© www.soinside.com 2019 - 2024. All rights reserved.