极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22736|回复: 9

Arduino uno R3+双H桥驱动板+红外遥控小车编程问题

[复制链接]
发表于 2014-8-15 16:23:41 | 显示全部楼层 |阅读模式
#include <IRremote.h>
int receiverpin = 11;//红外接收信号引脚
int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin1=10;//定义EA(PWM调速)接口
int pinI3=4;//定义I3接口
int pinI4=5;//定义I4接口
int speedpin2=6;//定义EB(PWM调速)接口

//红外遥控逻辑代码
#define ADVAN 0x1081F   //遥控器>>键
#define BAC   0xFF      //遥控器<<键
#define STO   0x147DF   //遥控器>|键
IRrecv irrecv(receiverpin);//初始化
decode_results results;//定义结构体类型

void setup()
{
   pinMode(pinI1,OUTPUT);//定义该接口为输出接口
   pinMode(pinI2,OUTPUT);
   pinMode(speedpin1,OUTPUT);
   pinMode(pinI3,OUTPUT);//定义该接口为输出接口
   pinMode(pinI4,OUTPUT);
   pinMode(speedpin2,OUTPUT);
   pinMode(receiverpin,INPUT);
   Serial,begin(9600);
   irrecv.enableIRIn();// 开始接收
}

void loop()
{
    if (irrecv.decode(&results))
    {
       Serial.println(results.value, HEX);
      switch(results.value)
      {
      case ADVAN://>>键前进
        goForward(100);
        break;
      case BAC://<<键后退
        goBackward(100);
        break;
      case STO://>|键停止
        stopa();
        break;         
     default:
        delay(600);
      }
      irrecv.resume(); // 接收下一个值
    }
    delay(600);
}

void goForward(int a)//前进
{
analogWrite(speedpin1,a);//输入模拟值进行设定速度  
analogWrite(speedpin2,a);
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI4,HIGH);
delay(2000);
}

void goBackward(int b)//后退
{
analogWrite(speedpin1,b);//输入模拟值进行设定速度  
analogWrite(speedpin2,b);
digitalWrite(pinI1,HIGH);//使直流电机(左)逆顺时针转
digitalWrite(pinI2,LOW);
digitalWrite(pinI3,HIGH);//使直流电机(右)顺时针转
digitalWrite(pinI4,LOW);
delay(2000);
}

void stopa()//停止
{   
digitalWrite(pinI1,HIGH);//使直流电机(左)制动  
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3,HIGH);//使直流电机(右)制动
digitalWrite(pinI4,HIGH);   
delay(2000);
}

这是我的红外遥控小车(前进、后退和停止)的完整程序,不知道为什么Verify的时候出现
sketch_control_vehicle.ino: In function 'void setup()':
sketch_control_vehicle.ino:27:20: error: 'begin' was not declared in this scope
求大师指教,编程菜鸟,求详细回答,谢谢啦!
回复

使用道具 举报

发表于 2014-8-15 23:05:29 | 显示全部楼层
Serial,begin(9600);

语法错误,应为:

Serial.begin(9600);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 09:25:20 | 显示全部楼层
xiaoesky 发表于 2014-8-15 23:05
Serial,begin(9600);

语法错误,应为:

不好意思,现在才回复,我已将逗号改过了,但又出现以下问题:
C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
                 ^
不知是不是编译软件版本问题,还是红外库的原因,亦或是程序上的错误,还望指点一二。多谢!
回复 支持 反对

使用道具 举报

发表于 2014-8-20 12:35:59 | 显示全部楼层
1、没有用过红外库,建议你把IRrecv irrecv(receiverpin);//初始化放在SETUP里面试试,感觉你定义的pin,库没有收到。
2、可以考虑用蓝牙,现在模块也很便宜,论坛里面BOXZ的控制库非常便利。
希望对你有所帮助。
回复 支持 反对

使用道具 举报

发表于 2014-8-28 12:35:15 | 显示全部楼层
cpmoving 发表于 2014-8-20 09:25
不好意思,现在才回复,我已将逗号改过了,但又出现以下问题:
C:\Program Files (x86)\Arduino\librar ...

TKD2这个变量没声明。
回复 支持 反对

使用道具 举报

发表于 2014-8-28 12:37:33 | 显示全部楼层
cpmoving 发表于 2014-8-20 09:25
不好意思,现在才回复,我已将逗号改过了,但又出现以下问题:
C:\Program Files (x86)\Arduino\librar ...

TKD2这个地方 ,你指定具体的接收针脚也可以。
回复 支持 反对

使用道具 举报

发表于 2014-10-7 21:20:47 | 显示全部楼层
这个应该不行吧??
回复 支持 反对

使用道具 举报

发表于 2015-4-16 19:18:12 | 显示全部楼层
换1.0.5版本就可以了
回复 支持 反对

使用道具 举报

发表于 2015-7-22 14:00:03 | 显示全部楼层
解决方法:将arduino-1.5.7-windows\arduino-1.5.7\libraries文件夹下的RobotIRemote文件夹删除就可以了,主要原因是这个文件夹中也有IRremoteTools.cpp,导到两者发生冲突。
回复 支持 反对

使用道具 举报

发表于 2015-11-5 00:15:48 | 显示全部楼层
yhy630 发表于 2015-7-22 14:00
解决方法:将arduino-1.5.7-windows\arduino-1.5.7\libraries文件夹下的RobotIRemote文件夹删除就可以了,主 ...

你的办法不错,果然顺利通过
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 18:52 , Processed in 0.040086 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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