#include <IRremote.h>
#include <IRremoteInt.h>
int pin11=8;//定义I1接口
int pin12=9;//定义I2接口
int speedpin1=11;//定义EA(PWM调速)接口
int pin21=6;//定义I3接口
int pin22=7;//定义I4接口
int speedpin2=10;//定义EB(PWM调速)接口
int RECV_PIN = 2; //红外接收信号引脚
int linepin=3;//定义传感器输入引脚
//红外遥控逻辑代码
#define ADVAN 4335 //我的遥控器2键
#define LEF 61495 //我的遥控器4键
#define BAC 2295 //我的遥控器8键
#define RIG 77815 //我的遥控器6键
#define STO 94135 //我的遥控器5键
#define INC 71695 //我的遥控器1键
#define DECR 88015 //我的遥控器3键
IRrecv irrecv(RECV_PIN);//初始化
decode_results results;//定义结构体类型
void setup()
{
pinMode(pin11,OUTPUT);//定义该接口为接口为输出接口
pinMode(pin12,OUTPUT);
pinMode(speedpin1,OUTPUT);
pinMode(pin21,OUTPUT);//定义该接口为接口为输出接口
pinMode(pin22,OUTPUT);
pinMode(speedpin2,OUTPUT);
pinMode(linepin,INPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // 开始接收
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
switch(results.value)
{
case ADVAN://2键前进
advance(100);
break;
case LEF://4键左转
turnleft(100);
break;
case BAC://8键后退
backup(100);
break;
case RIG://6键右转
turnright(100);
break;
case STO://5键前进
stopa();
break;
case INC://1键加速
increase(100);
break;
case DECR://3键减速
decrease(100);
break;
default:
delay(100);
}
irrecv.resume(); // Receive the next value
}
delay(600);
int r=digitalRead(linepin);
if(r==LOW )
{
backup(100);
turnright(100);
}
}
void advance(int a)//前进
{
analogWrite(speedpin1,a);//输入模拟值进行设定速度
analogWrite(speedpin2,a);
digitalWrite(pin22,LOW);//使直流电机(右)逆时针转
digitalWrite(pin21,HIGH);
digitalWrite(pin11,LOW);//使直流电机(左)顺时针转
digitalWrite(pin12,HIGH);
return;
}
void backup(int b)//后退
{
analogWrite(speedpin1,b);//输入模拟值进行设定速度
analogWrite(speedpin2,b);
digitalWrite(pin22,HIGH);//使直流电机(右)顺时针转
digitalWrite(pin21,LOW);
digitalWrite(pin11,HIGH);//使直流电机(左)逆时针转
digitalWrite(pin12,LOW);
delay(2000);
return;
}
void turnleft(int c)//左转
{
analogWrite(speedpin1,c);//输入模拟值进行设定速度
analogWrite(speedpin2,c);
digitalWrite(pin22,LOW);//使直流电机(右)逆时针转
digitalWrite(pin21,HIGH);
digitalWrite(pin11,HIGH);//使直流电机(左)逆时针转
digitalWrite(pin12,LOW);
delay(2000);
return;
}
void turnright(int d)//右转
{
analogWrite(speedpin1,d);//输入模拟值进行设定速度
analogWrite(speedpin2,d);
digitalWrite(pin22,HIGH);//使直流电机(右)顺时针转
digitalWrite(pin21,LOW);
digitalWrite(pin11,LOW);//使直流电机(左)顺时针转
digitalWrite(pin12,HIGH);
delay(2000);
return;
}
void stopa()//停止
{
digitalWrite(pin22,HIGH);//使直流电机(右)制动
digitalWrite(pin21,HIGH);
digitalWrite(pin11,HIGH);//使直流电机(左)制动
digitalWrite(pin12,HIGH);
delay(2000);
return;
}
void increase(int e)//加速
{
if(e<=300) //最大速度为300
{
e=e+10;
analogWrite(speedpin1,e); //将a 的值赋给speedin1
analogWrite(speedpin2,e); //将a 的值赋给speedin2
delay(1000); //延时1 秒
}
else {
analogWrite(speedpin1,e); //将a 的值赋给speedin1
analogWrite(speedpin2,e); //将a 的值赋给speedin2
delay(1000);
}
return;
}
void decrease(int f)//减速
{
if(f>=0) //最小速度为0
{
f=f-10;
analogWrite(speedpin1,f); //将a 的值赋给speedin1
analogWrite(speedpin2,f); //将a 的值赋给speedin2
delay(1000); //延时1 秒
}
else {
analogWrite(speedpin1,f); //将a 的值赋给speedin1
analogWrite(speedpin2,f); //将a 的值赋给speedin2
delay(1000);
}
return;
}
这是我编的一个红外遥控小车程序,编译时总会出现IRremotex\IRremote.cpp.o: In function `MATCH(int, int)':
/IRremoteInt.h:176: multiple definition of `MATCH(int, int)'
infrared_carchang.cpp.o:F:\科技创新资料\arduino-1.0.3\libraries\IRremotex/IRremoteInt.h:176: first defined here
IRremotex\IRremote.cpp.o: In function `MATCH_MARK(int, int)':
/IRremoteInt.h:177: multiple definition of `MATCH_MARK(int, int)'
infrared_carchang.cpp.o:F:\科技创新资料\arduino-1.0.3\libraries\IRremotex/IRremoteInt.h:177: first defined here
IRremotex\IRremote.cpp.o: In function `MATCH_SPACE(int, int)':
/IRremoteInt.h:178: multiple definition of `MATCH_SPACE(int, int)'
infrared_carchang.cpp.o:F:\科技创新资料\arduino-1.0.3\libraries\IRremotex/IRremoteInt.h:178: first defined here
Clipboard does not contain a string
这些错误,不知问题出在何方?恳请各路大神帮忙指教。{:soso_e183:} |