433模块-无线遥控小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6487|回复: 2

[已解决] 433模块-无线遥控小车

[复制链接]
发表于 2014-2-13 22:50 | 显示全部楼层 |阅读模式
我用433MHz无线模块做了无线遥控小车,可是遥控的数据传输却出现了问题,遥控器发送数据后,另一块板子总是过一会才会接收导数据,导致了车子不好控制,我把代码列出来,希望大神们帮我。

这是遥控器的代码:
[mw_shl_code=cpp,true]#include <RCSwitch.h>
int X=0;
int Y=1;

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);  
  mySwitch.enableTransmit(11);

}

void loop() {
  X=analogRead(0);
  Y=analogRead(1)/2;
  Serial.print( "X:" );
  Serial.print( X );
  Serial.println();
  Serial.print( "Y:" );
  Serial.println( Y );  
  int K=X+Y;
  Serial.print("K");
  Serial.println(K);
  mySwitch.send(K,24);
}
[/mw_shl_code]






这是接收板即车子上的代码:
[mw_shl_code=cpp,true]#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void stop();
void forward();
void back();
void left();
void right();
void forward()
{
        analogWrite(4 , HIGH);
        analogWrite(5 , HIGH);
        digitalWrite( 6 , HIGH );
        digitalWrite( 7 , LOW );
        digitalWrite( 8 , HIGH );
        digitalWrite( 9 , LOW );
}

void right()
{
        digitalWrite( 4 , HIGH );
        digitalWrite( 5 ,HIGH );
        digitalWrite( 6 , HIGH );
        digitalWrite( 7 , LOW );
        digitalWrite( 9 , HIGH );
        digitalWrite( 8 , LOW );
}

void stop()
{
        digitalWrite( 6 , LOW );
        digitalWrite( 7 , LOW );
        digitalWrite( 8 , LOW );
        digitalWrite( 9 , LOW );
}

void back()
{
        analogWrite(4 , HIGH);
        analogWrite(5 , HIGH);
        digitalWrite( 7 , HIGH );
        digitalWrite( 6 , LOW );
        digitalWrite( 9 , HIGH );
        digitalWrite( 8 , LOW );
}

void left()
{
        digitalWrite( 5 , HIGH );
        digitalWrite( 4 , HIGH );
        digitalWrite( 8 , HIGH );
        digitalWrite( 9 , LOW );
        digitalWrite( 7 , HIGH );
        digitalWrite( 6 , LOW );
}



void setup()
{      
        Serial.begin(9600);
        mySwitch.enableReceive(0);  
        pinMode( 4 , OUTPUT);
        pinMode( 5 , OUTPUT);
        pinMode( 6 , OUTPUT);
        pinMode( 7 , OUTPUT);
        pinMode( 8 , OUTPUT);
        pinMode( 9 , OUTPUT);
}

void loop()
{
   if (mySwitch.available()) {
     int J = mySwitch.getReceivedValue();
     Serial.println(J);   
        if (( ( J ) > ( 1250) ))
        {
                forward();
        }
        else
        {      stop();
                if (( ( J ) ==( 526 ) ))
        {
                left();
        }
        else
        {
                stop();
                if (( ( J ) == ( 1037) ))
        {
                right();
        }
        else
        {
                stop();
                if (( (J ) <( 270 ) ))
        {
                back();
        }
        else
        {                       
                stop();
        }
        }
        }
        }
      mySwitch.resetAvailable();
       
}}
[/mw_shl_code]






请求大神们给建议,看看代码。。
发表于 2014-2-14 14:55 | 显示全部楼层
。这个是无线传输不够实时,有一定的延时。你可以用串口工具看看有延时有多大。我测的有10-30ms的延时,
 楼主| 发表于 2014-2-14 14:55 | 显示全部楼层
lz1135 发表于 2014-2-14 14:55
。这个是无线传输不够实时,有一定的延时。你可以用串口工具看看有延时有多大。我测的有10-30ms的延时, ...

这个延时可以调的吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 18:01 , Processed in 0.071582 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表