piaozhiling 发表于 2012-4-17 21:07:29

受左岸右岸(371546169)朋友托付把他的红外遥控的Arduino小车发上来

红外遥控的Arduino小车

名称:图片: 数量:单价: 总价:
减速电机+轮子 28.5 17
主芯片 170 70
直流电机驱动模块 130 30
锂电池 1 25 25
红外遥控 1 3 3
红外遥控传感器 1 1 1
万向轮 1 4 4
内六角螺丝 1
杜邦线 1
跳线 1



特此证明:

以下是程序:
用的是arduino-0022的编译软件,但还有点问题,就等一直按着哪个按钮是,小车是没有放映的。
我的结构是这样的
请高手给指教指教
////重复码的部分没处理好,我按着不放,它就动一下就不动了
#include <IRremote.h>
#include <IRremoteInt.h>

#define mechine_a1 4//左电机引脚
#define mechine_a2 5
#define mechine_EA 9

#define mechine_b1 2//右电机引脚
#define mechine_b2 3
#define mechine_EB 10

//红外遥控逻辑代码自己通过串口监视器可以找出
#define ADVAN 0xFF18E7   //我的遥控器2键
#define LEF 0xFF10EF    //我的遥控器4键
#define RIG 0xFF5AA5    //我的遥控器8键
#define RET 0xFF4AB5    //我的遥控器6键
#define STO 0xFF38C7    //我的遥控器5键

int RECV_PIN = 11;   //红外接收信号引脚

IRrecv irrecv(RECV_PIN);//初始化

decode_results results;//定义结构体类型

void setup()
{
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键左转
            left_handed(100);
            break;
            case RET://8键后退
            retreat(100);
            break;
            case RIG://6键右转
            right_handed(100);
            break;
            case STO://5键前进
            stop_m();
            break;
            default:
            delay(100);
      }
      irrecv.resume(); // Receive the next value
}
      stop_m();//松开按钮停止
}


void foreward_mechine_a()//左电机正转
{
    analogWrite(mechine_EA,255);
    digitalWrite(mechine_a1,HIGH);
    digitalWrite(mechine_a2,LOW);
}
void inversion_mechine_a()//左电机反转
{
    analogWrite(mechine_EA,255);
    digitalWrite(mechine_a1,LOW);
    digitalWrite(mechine_a2,HIGH);

}

void stop_a(void)//左电机停止
{
      digitalWrite(mechine_a1,LOW);
      digitalWrite(mechine_a2,LOW);
}

void stop_b(void)//右电机停止
{
      digitalWrite(mechine_b1,LOW);
      digitalWrite(mechine_b2,LOW);
}

void foreward_mechine_b()//右电机正转
{
    analogWrite(mechine_EB,255);
    digitalWrite(mechine_b1,HIGH);
    digitalWrite(mechine_b2,LOW);   
}
void inversion_mechine_b()//右电机反转
{
    analogWrite(mechine_EB,255);
    digitalWrite(mechine_b1,LOW);
    digitalWrite(mechine_b2,HIGH);   
}
void advance(int time)//小车前进
{
   foreward_mechine_a();
   inversion_mechine_b();
    delay(time);
}
void retreat(int time)//小车后退
{
      inversion_mechine_a();
      foreward_mechine_b();
      delay(time);
}

void left_handed(int time)//小车左转
{
    inversion_mechine_a();
    inversion_mechine_b();
    delay(time);
   
}
void right_handed(int time)//小车右转
{
    inversion_mechine_b();
    inversion_mechine_a();
    delay(time);
}
void stop_m(void)//小车停止
{
      stop_a();
      stop_b();
}
下载包:

迷你强 发表于 2012-4-19 21:59:01

:funk:,看起来是个高端货。。。

windowspp 发表于 2012-5-23 07:53:32

好像我也买了这些个东西.还没有装好.

Randy 发表于 2012-5-23 08:43:45

我的都已经组装完过了,支持一下!
页: [1]
查看完整版本: 受左岸右岸(371546169)朋友托付把他的红外遥控的Arduino小车发上来