极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14902|回复: 5

求助一个小车遥控程序不能控制293模块

[复制链接]
发表于 2014-12-26 14:40:32 | 显示全部楼层 |阅读模式

#include <IRremote.h>
int pin11=4;//定义I1接口
int pin12=5;//定义I2接口
int speedpin1=9;//定义EA(PWM调速)接口
int pin21=2;//定义I3接口
int pin22=3;//定义I4接口
int speedpin2=10;//定义EB(PWM调速)接口
int linepin=11;//定义传感器输入引脚
int RECV_PIN = 7;     //红外接收信号引脚
int val=LOW;

//红外遥控逻辑代码
#define ADVAN 0x40FF18E7  //我的遥控器2键
#define LEF 0x40BF08F7    //我的遥控器4键
#define BAC 0x40FF4AB5   //我的遥控器8键
#define RIG 0x40FF5AA5    //我的遥控器6键
#define STO 0x40FF38C7   //我的遥控器5键
#define INC 0x40FF30CF  //我的遥控器1键
#define DECR 0x40FF7A85   //我的遥控器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(600);
    }
    irrecv.resume(); // Receive the next value
  }
  delay(600);
  
}

void advance(int a)//前进
{     
  analogWrite(speedpin1,a);//输入模拟值进行设定速度     
  analogWrite(speedpin2,a);  
  digitalWrite(pin11,LOW);//使直流电机(左)顺时针转     
  digitalWrite(pin12,HIGH);  
  digitalWrite(pin22,LOW);//使直流电机(右)逆时针转     
  digitalWrite(pin21,HIGH);     
}
void backup(int b)//后退
{     
  analogWrite(speedpin1,b);//输入模拟值进行设定速度
  analogWrite(speedpin2,b);   
  digitalWrite(pin11,HIGH);//使直流电机(左)逆时针转
  digitalWrite(pin12,LOW);  
  digitalWrite(pin22,HIGH);//使直流电机(右)顺时针转     
  digitalWrite(pin21,LOW);     
  delay(600);
}

void turnleft(int c)//左转
{     
  analogWrite(speedpin1,c);//输入模拟值进行设定速度     
  analogWrite(speedpin2,c);
  digitalWrite(pin11,HIGH);//使直流电机(左)逆时针转     
  digitalWrite(pin12,LOW);  
  digitalWrite(pin22,LOW);//使直流电机(右)逆时针转   
  digitalWrite(pin21,HIGH);   
  delay(600);
}
void turnright(int d)//右转
{     
  analogWrite(speedpin1,d);//输入模拟值进行设定速度     
  analogWrite(speedpin2,d);  
  digitalWrite(pin11,LOW);//使直流电机(左)顺时针转     
  digitalWrite(pin12,HIGH);  
  digitalWrite(pin22,HIGH);//使直流电机(右)顺时针转     
  digitalWrite(pin21,LOW);     
  delay(600);
}
void stopa()//停止
{   
   digitalWrite(pin11,HIGH);//使直流电机(左)制动  
  digitalWrite(pin12,HIGH);
  digitalWrite(pin22,HIGH);//使直流电机(右)制动
  digitalWrite(pin21,HIGH);   
  delay(600);
}
void increase(int e)//加速
{
  if(e<=225) //最大速度为225
  {
    e=e+10;
    analogWrite(speedpin1,e); //将a 的值赋给speedin1
    analogWrite(speedpin2,e); //将a 的值赋给speedin2
    delay(1000); //延时1 秒
  }
  else {
    analogWrite(speedpin1,225); //将a 的值赋给speedin1
    analogWrite(speedpin2,225); //将a 的值赋给speedin2
    delay(1000);  
  }
}
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,0); //将a 的值赋给speedin1
    analogWrite(speedpin2,0); //将a 的值赋给speedin2   
    delay(1000);
  }
}
回复

使用道具 举报

 楼主| 发表于 2014-12-26 14:49:49 | 显示全部楼层
按遥控器驱动模块没有任何反应
回复 支持 反对

使用道具 举报

发表于 2014-12-26 22:50:17 | 显示全部楼层
#define ADVAN 0x40FF18E7  //我的遥控器2键
这些不用“=”吗?
回复 支持 反对

使用道具 举报

发表于 2014-12-27 10:28:10 | 显示全部楼层
你的硬件连接你测试过么
一般是先测试硬件
然后是通讯 做最简单的代码 比如直接发送  前后左右代码  看反应 有反应了继续做后面的模块
模块式开发。
还有就是一般来说便与调试 都会添加一些DEBUG代码 比如把一些计算过程输出到串口 这样通过IDE的串口软件查看软件逻辑问题。

逻辑问题是最后解决的  打个比方 不能100层的大楼建起来 才发现地基不牢靠 那是要全部推倒重来的。
回复 支持 反对

使用道具 举报

发表于 2014-12-27 10:30:25 | 显示全部楼层
先测试下  最简单的逻辑:
初始化IR传感器
然后检测收到的数据 回传到电脑上 如果通过了
那么就是后面的问题。
没通过 先考虑接收部分以及硬件故障。
回复 支持 反对

使用道具 举报

发表于 2014-12-27 10:58:12 | 显示全部楼层
switch是不是只能取一個整數
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 06:20 , Processed in 0.090768 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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