首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用射频模块控制Arduino电机

用射频模块控制Arduino电机
EN

Stack Overflow用户
提问于 2022-03-15 10:35:16
回答 1查看 111关注 0票数 0

我正在进行一个项目,其中2个Arduino被用来使用无线通信与射频模块的帮助。通讯的目的是以无线方式驱动马达。

到目前为止,我已经根据本页上的示例代码:https://randomnerdtutorials.com/rf-433mhz-transmitter-receiver-module-with-arduino/为发射机和接收器编写了代码。

下面的代码用于驱动发射机模块。此代码类似于具有修改输出的示例代码。

代码语言:javascript
复制
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600);    // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}

void loop()
{
    const char *msg = "U";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(1000);
}

此代码用于接收消息并驱动电机。

代码语言:javascript
复制
#include <RH_ASK.h>
#include <SPI.h>

const int motorPin1 = 2;
const int motorPin2 = 3;
RH_ASK driver(2000, 7, 6, 5);

const char *Up = "U";
const char *Down = "D";

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  Serial.begin(9600);
  if (!driver.init())
    Serial.println("init failed");
}

void loop() {
    uint8_t buf[1];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
    {
      int i;
      // Message with a good checksum received, dump it.
      if ((char*)buf == Up){
        digitalWrite(motorPin1, HIGH);
        digitalWrite(motorPin2, LOW);
      }
      else if ((char*)buf == Down){
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, HIGH);
      }
        else{
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);
      }
      Serial.println((char*)buf);
    }
}

接收端代码中的最后一行用于通过串行接口检查是否接收到任何消息。情况就是这样。但是由于某种原因,接收到的消息与提供的控制文本不一样。从本质上说,发送"U“与字符"U”是不一样的。

我想这些变量的数据类型有问题。有人知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-15 11:32:34

此代码是比较指针:

代码语言:javascript
复制
 if ((char*)buf == Up){

else if ((char*)buf == Down){

您可以更改它以比较所指向的字符,例如:

代码语言:javascript
复制
if (buf[0] == Up[0]){

代码语言:javascript
复制
if( buf[0] == 'U' )

代码语言:javascript
复制
if( memcmp( buf, Up, 1 ) == 0 )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71480747

复制
相关文章

相似问题

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