查看: 817|回复: 9

[未解决] 红外遥控车接受一个指令后无法继续接受指令

[复制链接]

该用户从未签到

发表于 2019-7-26 16:31 | 显示全部楼层 |阅读模式
用ARDUINO    R3制作红外遥控车,程序传完硬件接好后可以接收信号并执行相应的指令,但是arduino就一直在执行这个指令,再按遥控器按键对它发射信号也没有反应。
比如说我按下前进键,小车就一直前进,我再按其他键也没用了。。
(我给小车加了一个发射激光器,用的是8引脚,按遥控器上相应的键就可以正常亮,灭,操控完激光再控制电机也可以
但是我一旦操控了电机,arduino就不再接受其他指令了,是为什么呢?)
是不是我的代码有问题?还是产生某种冲突了?
红外数据口是11,电机驱动用了4,5,6,7,激光用了8
(由于使用引脚8不会影响ARDUINO接收信号,我在想是不是使用4,5,6,7引脚和接受的11引脚有冲突?)
代码如下,我看了一下和网上的代码没啥区别啊,有问题吗?
希望有大佬可以回复答疑啊,万分感谢!


//红外接受设置
#include <IRremote.h>
int RECV_PIN = 11;              
IRrecv irrecv(RECV_PIN);
decode_results results;

//设置电机控制引脚
int PWM1 = 5;   
int DIR1 = 4;
int PWM2 = 6;                        
int DIR2 = 7;


//设置激光控制引脚
int laser=8;

boolean laserstate=LOW; /激光的状态
void setup()
{
    //红外接受启动
    Serial.begin(9600);
    irrecv.enableIRIn();

    //LED引脚启动
    pinMode(LED1,OUTPUT);
    pinMode(LED2,OUTPUT);

    //激光引脚启动
    pinMode(laser,OUTPUT);
}

void loop()
{
    if (irrecv.decode(&results))
    {     
        Serial.println(results.value, HEX);

        //前进指令
        n, if(results.value == 0xFF10EF)
        {
            //方向设置
            digitalWrite(DIR1,LOW);
            digitalWrite(DIR2,LOW);
            //速度设置
            analogWrite(PWM1,a);
            analogWrite(PWM2,a);
            delay(2500);

        }

        //后退指令
        else if(results.value == 0xFF42BD)
        {
            //方向设置
            digitalWrite(DIR1,HIGH);
            digitalWrite(DIR2,HIGH);
            //速度设置
            analogWrite(PWM1,a);
            analogWrite(PWM2,a);
            delay(2500);


        }

        //顺时针旋转指令
        else if(results.value == 0xFF18E7)
        {
            //方向设置
            digitalWrite(DIR1,LOW);
            digitalWrite(DIR2,HIGH);
            //速度设置
            analogWrite(PWM1,a);
            analogWrite(PWM2,a);
            delay(1000);


        }

        //逆时针旋转指令
        else if(results.value == 0xFF7A85)
        {
            //方向设置
            digitalWrite(DIR1,HIGH);
            digitalWrite(DIR2,LOW);
            //速度设置
            analogWrite(PWM1,a);
            analogWrite(PWM2,a);
            delay(1000);


        }

        //激光指令
        else if(results.value == 0xFF30CF)
        {
           laserstate=!laserstate;
           digitalWrite(laser,laserstate);


        }


        //继续等待接受指令
        irrecv.resume();
    }
}


  • TA的每日心情
    慵懒
    2020-1-22 11:40
  • 签到天数: 122 天

    [LV.7]常住居民III

    发表于 2019-7-26 16:51 | 显示全部楼层
    你程序里面有延时,当然没反应了。。。
  • TA的每日心情
    开心
    2019-7-26 08:02
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2019-7-26 17:29 | 显示全部楼层
    “ n, if(results.value == 0xFF10EF)”这句是不是有问题?
  • TA的每日心情
    开心
    2019-7-26 08:02
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2019-7-26 17:35 | 显示全部楼层
    速度“a"未赋值,你可考虑在延时后加一段关电机的语句试试。

    该用户从未签到

     楼主| 发表于 2019-7-26 17:44 | 显示全部楼层
    Creeper666 发表于 2019-7-26 16:51
    你程序里面有延时,当然没反应了。。。

    可是只有2s啊。。
  • TA的每日心情
    慵懒
    2020-1-22 11:40
  • 签到天数: 122 天

    [LV.7]常住居民III

    发表于 2019-7-26 17:56 | 显示全部楼层
    abcd2019 发表于 2019-7-26 17:44
    可是只有2s啊。。

    先说下你这个程序,延时之后都不带暂停的,当然一直走了
    红外的问题有可能是因为供电不足导致的,建议电机的电源单独提供
  • TA的每日心情
    开心
    2019-12-11 10:34
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-7-26 20:05 来自手机 | 显示全部楼层
    Creeper666 发表于 2019-7-26 17:56
    先说下你这个程序,延时之后都不带暂停的,当然一直走了
    红外的问题有可能是因为供电不足导致的,建议电 ...

    楼上正解,之前也是,偷懒电机用扳子供电,导致红外只接受一次指令…

    该用户从未签到

     楼主| 发表于 2019-7-28 13:42 | 显示全部楼层
    已经解决谢谢了,(这个咋弄成已经解决状态啊)
  • TA的每日心情
    慵懒
    2020-1-22 11:40
  • 签到天数: 122 天

    [LV.7]常住居民III

    发表于 2019-8-7 16:44 | 显示全部楼层
    abcd2019 发表于 2019-7-28 13:42
    已经解决谢谢了,(这个咋弄成已经解决状态啊)

    编辑帖子,左上角选择已解决
  • TA的每日心情
    开心
    2019-11-27 16:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2019-12-8 14:32 | 显示全部楼层
    您好,请问是怎么解决的呢?我也遇到了类似的问题,但我是分开供电的。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Arduino使用电阻分压测量电池电压问题
    Arduino使用电阻分压测量
    请教,下图中的连接有什么问题,如何调整? 让只有一块电池的条件下,解决测量电压不
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表