极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17600|回复: 4

arduino编程求助

[复制链接]
发表于 2013-1-12 13:28:18 | 显示全部楼层 |阅读模式
#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:}
回复

使用道具 举报

发表于 2013-1-12 18:15:32 | 显示全部楼层
问题出在这两个:
#include <IRremote.h>
#include <IRremoteInt.h>
相信你能找到问题的
回复 支持 反对

使用道具 举报

发表于 2013-1-12 23:10:58 | 显示全部楼层
这样的故障我遇见过,去掉:#include <IRremoteInt.h>
就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-13 10:21:32 | 显示全部楼层
szmszm 发表于 2013-1-12 23:10
这样的故障我遇见过,去掉:#include
就可以了。

好使了,多谢大神!
现在还有一个问题:遥控器的逻辑怎么确定?我是这么定义的
#define ADVAN 40BFB04F   //我的遥控器2键
#define LEF 40BF08F7    //我的遥控器4键
#define BAC 40BFA857   //我的遥控器8键
#define RIG 40BF48B7    //我的遥控器6键
#define STO 40BF8877    //我的遥控器5键
#define INC 40BF30CF   //我的遥控器1键
#define DECR 40BF708F   //我的遥控器3键
后面的值是我把遥控器的接收模块连到arduino上,再用USB连到电脑上,通过串口监视器看到的值,但是编译时有错误,不知该怎么解决?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-13 10:22:52 | 显示全部楼层
DeathFat 发表于 2013-1-12 18:15
问题出在这两个:
#include
#include

问题已经解决,去掉了#include <IRremoteInt.h>就好使了,灰常感谢
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-22 07:12 , Processed in 0.039623 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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