极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11741|回复: 8

求助,红外和电机冲突

[复制链接]
发表于 2013-7-11 16:26:11 | 显示全部楼层 |阅读模式

本人尝试使用红外遥控控制小车,但启动红外解码,电机就不能动了,屏蔽红外解码,电机正常使用。求指教。是有什么冲突了吗?
  1. #include <IRremote.h>  // 使用IRRemote函数库
  2. #include <AFMotor.h>

  3. AF_DCMotor lrmotor(1, MOTOR12_64KHZ); //create motor #1, 2KHz pwm
  4. AF_DCMotor gbmotor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
  5. const int irReceiverPin = 3;    // 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
  6. IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
  7. decode_results results;    // 定义results变量为红外结果存放位置

  8. void setup() {
  9.   Serial.begin(9600);           // set up Serial library at 9600 bps
  10.   Serial.println("HM car GO!");
  11.   irrecv.enableIRIn();     // 启动红外解码
  12.   lrmotor.setSpeed(100);
  13.   gbmotor.setSpeed(200);     // set the speed to 200/255
  14. }
  15. void loop() {
  16.   if (irrecv.decode(&results)) {   // 解码成功,把数据放入results变量中
  17.      switch (results.value)
  18.     {
  19.         case 0xff30cf:  
  20.        {
  21.            Serial.print("FORWARD ");
  22.            gbmotor.run(FORWARD);
  23.            break;
  24.        }
  25.         case 0xff18e7:  
  26.        {           
  27.           Serial.println("BACKWARD");
  28.           gbmotor.run(BACKWARD);   
  29.           break;
  30.        }
  31.        case 0x000000:  
  32.        {
  33.           Serial.println("Turn Left");
  34.           lrmotor.run(FORWARD);
  35.           break;
  36.        }
  37.        case 0x111111:  
  38.        {
  39.           Serial.println("Turn Right");
  40.           lrmotor.run(BACKWARD);
  41.           break;
  42.        }
  43.     }
  44.     irrecv.resume();    // 继续等待接收下一组信号
  45.   }  
  46.   delay(10); //延时600毫秒,做一个简单的消抖
  47. }
复制代码

回复

使用道具 举报

发表于 2013-7-11 17:01:00 | 显示全部楼层
是否那个delay搞坏了.键盘周期600ms,驱动周期2Khz,64Khz是否这两个有冲突.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-11 23:27:15 | 显示全部楼层
林定祥 发表于 2013-7-11 17:01
是否那个delay搞坏了.键盘周期600ms,驱动周期2Khz,64Khz是否这两个有冲突.

不是哦,问题是有这句  irrecv.enableIRIn();     // 启动红外解码
电机就没有反应能接受红外信号。没有这句电机就能动的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 14:55:28 | 显示全部楼层
等高手指点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 12:34:16 | 显示全部楼层
没有人知道吗??????
回复 支持 反对

使用道具 举报

发表于 2013-9-17 19:59:07 | 显示全部楼层
我也遇到这个问题,不知道怎么回事
而且舵机的控制也是一样的问题
不知道为什么
回复 支持 反对

使用道具 举报

发表于 2013-9-17 22:52:42 | 显示全部楼层
先查一下电机的引脚是不是与红外的引脚在同一个引脚上。。。
回复 支持 反对

使用道具 举报

发表于 2013-9-18 02:22:37 来自手机 | 显示全部楼层
还有检查一下是否有外部供电。最好有。
回复 支持 反对

使用道具 举报

发表于 2013-10-27 15:52:36 | 显示全部楼层
红外发射接口默认要用第三个PIN,
* An IR LED must be connected to the output PWM pin 3.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 02:05 , Processed in 0.036988 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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