极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9696|回复: 3

【求助】加上红外模块后直流电机为何不转?

[复制链接]
发表于 2015-3-28 18:02:06 | 显示全部楼层 |阅读模式


问题是现在电机只有在输入信号为占空比100% (255)时才会转动,其他数值都不转。而如果把setup()中的 irrecv.enableIRIn();   注释掉,电机就可以按各种速度运转。求教问题出在那了呢?



#include <IRremote.h>


int IN1=7;
int IN2=6;
int IN3=5;
int IN4=4;

int EN1=10;//使能端口1
int EN2=3;//使能端口2


int RECV_PIN = 11;  
int LED = 9;     


int motorSpeed=255;
int tempSpeed=0;


IRrecv irrecv(RECV_PIN);   
decode_results results;   //解码结果

void setup()
{
  int i;


  for (i=4;i<=7;i++) //为Ardunio 电机驱动板
    pinMode(i,OUTPUT); //设置数字端口4,5,6,7为输出模式


  pinMode(LED,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();   


}

void loop()
{
  if (irrecv.decode(&results))  
  {
    //解码成功,收到一组红外线信号  
    irdisplay(results.value);   
    irrecv.resume();         
  }   


  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  analogWrite(EN2, 150);
  analogWrite(LED, motorSpeed);

}


void irdisplay(unsigned long value)  //  按下按键后,显示本遥控对应的按键
{
  switch(value){         //判定按下的是哪个按键,串口显示按钮名称
  case 0xFFA25D:
    Serial.println("POWER");
    {

      tempSpeed=motorSpeed;
      motorSpeed=0;
    }
    break;
  case 0xFF629D:
    Serial.println("Mode");
    break;
  case 0xFFE21D:
    Serial.println("MUTE");
    {

      motorSpeed=tempSpeed;
    }
    break;

    //其他按键
  case 0xFF22DD:
    Serial.println("PLAY/PAUSE");
    break;
  case 0xFF02FD:
    {
      changeSpeed(20);
      Serial.println("+");
      Serial.println(motorSpeed);
    }
    break;
  case 0XFFC23D:
    Serial.println("NEXT");
    break;
  case 0xFFE01F:
    Serial.println("EQ");
    break;
  case 0xFFA857:
    {

      Serial.println("eeee");

    }
    break;
  case 0xFF906F:
    {

      Serial.println("rrrr");

    }
    break;
  case 0xFF6897:
    Serial.println("0");
    break;
  case 0xFF9867:
    {
      changeSpeed(-20);
      Serial.println("-");
      Serial.println(motorSpeed);

    }
    break;
  case 0xFFB04F:
    Serial.println("U/SD");
    break;
  case 0xFF30CF:
    Serial.println("1");
    break;
  case 0xFF18E7:
    Serial.println("2");
    break;
  case 0xFF7A85:
    Serial.println("3");
    break;
  case 0xFF10EF:
    Serial.println("4");
    break;
  case 0xFF38C7:
    Serial.println("5");
    break;
  case 0xFF5AA5:
    Serial.println("6");
    break;
  case 0xFF42BD:
    Serial.println("7");
    break;
  case 0xFF4AB5:
    Serial.println("8");
    break;
  case 0xFF52AD:
    Serial.println("9");
    break;
  }
}

void changeSpeed(int add){
  motorSpeed+=add;
  if(motorSpeed>=255) motorSpeed=255;
  if(motorSpeed<=0) motorSpeed=0;
}


回复

使用道具 举报

 楼主| 发表于 2015-3-28 20:02:25 | 显示全部楼层
求助啊{:soso_e105:}{:soso_e109:}
回复 支持 反对

使用道具 举报

发表于 2015-3-28 21:36:18 | 显示全部楼层
我在贴吧回你了,应该是io口冲突,你的红外换个口试试。
回复 支持 反对

使用道具 举报

发表于 2015-4-7 01:09:27 | 显示全部楼层
红外接受的11脚和始能10有冲突吧,换个试试
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 02:19 , Processed in 0.035131 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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