我对arduino这个话题相当陌生,并且尝试着让一些东西一起工作。
首先,我尝试设置一个直流电机,可以通过PWM控制,这是完美的工作时,使用独立。我可以启动/停止电机和改变速度取决于我发送到PWM引脚的数值。
其次,我尝试使用RF-5V无线接收器与远程开关电源插座的遥控器一起工作。对于这个问题,我遵循了如何构建433 how嗅探器上的说明。这一切本身也是有效的。我可以接收不同的代码,这取决于我正在按的遥控器上的键。
现在,有趣的部分开始了:我想把这两个项目集成到一个项目中,这样我就可以用遥控器启动/停止马达了。所以我想出了如下的电路:

(谢谢你们中的一些人指出,电路与草图不匹配。我在绘图时犯了一个错误,但是即使把电缆连接到正确的引脚上,它的工作原理也是如此)
以及以下代码(部分来源于上述指令):
#include <RCSwitch.h>
// init 433MHz lib
RCSwitch mySwitch = RCSwitch();
unsigned long lOldValue=0; // to check for consecutive reads on 433MHz
int motorPin = 5; // PWM-Pin to use for motor
void setup()
{
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
// set-up rf receiver
mySwitch.enableReceive(0); // 433MHz Receiver on interrupt 0 => that is pin #2
}
void loop()
{
if (mySwitch.available())
{
int value = mySwitch.getReceivedValue();
// only react, if at least two times same value received
if (value == lOldValue)
{
if (value == 0)
{
Serial.print("Unknown encoding");
}
else
{
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
// One of the keys on the remote
if (value == 274393) {
Serial.println("got start code, starting motor");
analogWrite(motorPin, 100); // start the motor
}
// another key on the remote
if (value == 270384) {
Serial.println("got stop code, stopping motor");
analogWrite(motorPin, 0); // stop the motor
}
}
}
lOldValue = value;
mySwitch.resetAvailable();
}
}当我运行代码并单击遥控器时,会根据我按的键得到不同的值。所以无线接收器就像预期的那样工作。
当我得到启动电机的正确值时,马达真的开始转动,所以这也同样有效。
在这里,有趣的部分开始了:一旦我使用analogWrite函数向电机连接的PWM端口发送数据,无线接收器就停止工作(或者至少当我按下遥控器上的键时不会得到任何值)。
我在网上发现了一些类似的帖子/问题描述,上面写着:
,所以问题是:有谁知道如何将这两件事组合在一起,这样a就可以使用无线接收器来获取命令,并打开/关闭马达?
发布于 2017-01-09 14:46:20
我过去也有同样的问题。问题是arduino是否有能力为他们两人提供服务。我建议使用外部电源的接收器或电机(最好这样做,但根据你的电路,这是不可能的),如545043 you,并提供另一个从arduino (我希望这不是你已经尝试过,如果是,我很抱歉)。
希望能帮上忙。
尤夫
https://stackoverflow.com/questions/41549267
复制相似问题