首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有PWM驱动电机和433 don无线接收器的arduino uno不工作

带有PWM驱动电机和433 don无线接收器的arduino uno不工作
EN

Stack Overflow用户
提问于 2017-01-09 13:34:47
回答 1查看 1.8K关注 0票数 0

我对arduino这个话题相当陌生,并且尝试着让一些东西一起工作。

首先,我尝试设置一个直流电机,可以通过PWM控制,这是完美的工作时,使用独立。我可以启动/停止电机和改变速度取决于我发送到PWM引脚的数值。

其次,我尝试使用RF-5V无线接收器与远程开关电源插座的遥控器一起工作。对于这个问题,我遵循了如何构建433 how嗅探器上的说明。这一切本身也是有效的。我可以接收不同的代码,这取决于我正在按的遥控器上的键。

现在,有趣的部分开始了:我想把这两个项目集成到一个项目中,这样我就可以用遥控器启动/停止马达了。所以我想出了如下的电路:

(谢谢你们中的一些人指出,电路与草图不匹配。我在绘图时犯了一个错误,但是即使把电缆连接到正确的引脚上,它的工作原理也是如此)

以及以下代码(部分来源于上述指令):

代码语言:javascript
复制
#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端口发送数据,无线接收器就停止工作(或者至少当我按下遥控器上的键时不会得到任何值)。

我在网上发现了一些类似的帖子/问题描述,上面写着:

  • 为PWM使用另一个引脚(由于可能的中断冲突)。我也试过了,同样的行为
  • 使用外部电源代替USB电缆,这有助于解决这一问题.这里不行。也不起作用

,所以问题是:有谁知道如何将这两件事组合在一起,这样a就可以使用无线接收器来获取命令,并打开/关闭马达?

EN

回答 1

Stack Overflow用户

发布于 2017-01-09 14:46:20

我过去也有同样的问题。问题是arduino是否有能力为他们两人提供服务。我建议使用外部电源的接收器或电机(最好这样做,但根据你的电路,这是不可能的),如545043 you,并提供另一个从arduino (我希望这不是你已经尝试过,如果是,我很抱歉)。

希望能帮上忙。

尤夫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41549267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档