用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

该用户从未签到

最近在捣鼓一个巡线小车,卡在了两个地方。一个是不能转向,另一个是在循线中要避障,然后再回去。有超声波和红外传感器,走的路线是个矩形。这个项目挺急的。希望大神们帮帮忙
[mw_shl_code=c,true]int Left_motor_back=9;     //左电机后退(IN1)
int Left_motor_go=6;     //左电机前进(IN2)

int Right_motor_go=5;    // 右电机前进(IN3)
int Right_motor_back=3;    // 右电机后退(IN4)


const int SensorRight1 = 11;     
const int SensorRight = 10;     
const int SensorLeft = 9;
const int SensorLeft1 = 8;

int SL; //左循迹红外传感器状态
int SR;//右循迹红外传感器状态
int SvL;//最左循迹红外传感器状态
int SvR;//最右循迹红外传感器状态


void setup()
{
  pinMode(Left_motor_go,OUTPUT);
  pinMode(Left_motor_back,OUTPUT);
  pinMode(Right_motor_go,OUTPUT);
  pinMode(Right_motor_back,OUTPUT);
  pinMode(SensorRight, INPUT);
  pinMode(SensorLeft, INPUT);
  pinMode(SensorRight1, INPUT);
  pinMode(SensorLeft1, INPUT);
}

//=======================智能小车的基本动作=========================
void run()     // 前进
{
  analogWrite(Right_motor_go,200);//右电机前进,PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back,0);
  analogWrite(Left_motor_go,200);// 左电机前进,PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back,0);
}

void brake()         //刹车,停车
{
  digitalWrite(Right_motor_go,LOW);
  digitalWrite(Right_motor_back,LOW);
  digitalWrite(Left_motor_go,LOW);
  digitalWrite(Left_motor_back,LOW);
}

void left()         //左转(左轮不动,右轮前进)
{
  analogWrite(Right_motor_go,200); //右电机前进,PWM比例0~255调速
  analogWrite(Right_motor_back,0);
  digitalWrite(Left_motor_go,LOW);   //左轮不动
  digitalWrite(Left_motor_back,LOW);
}

void spin_left()         //左转(左轮后退,右轮前进)
{
  analogWrite(Right_motor_go,200); //右电机前进,PWM比例0~255调速
  analogWrite(Right_motor_back,0);

  analogWrite(Left_motor_go,0);
  analogWrite(Left_motor_back,200);//左轮后退PWM比例0~255调速
}

void right()        //右转(右轮不动,左轮前进)
{
  digitalWrite(Right_motor_go,LOW);   //右电机不动
  digitalWrite(Right_motor_back,LOW);

  analogWrite(Left_motor_go,200);
  analogWrite(Left_motor_back,0);//左电机前进,PWM比例0~255调速
  }


void spin_right()        //右转(右轮后退,左轮前进)
{
  analogWrite(Right_motor_go,0);
  analogWrite(Right_motor_back,200);//右电机后退,PWM比例0~255调速

  analogWrite(Left_motor_go,200); //左电机前进,PWM比例0~255调速
  analogWrite(Left_motor_back,0);
}

void back()          //后退
{
  analogWrite(Right_motor_go,0);
  analogWrite(Right_motor_back,150);//右轮后退,PWM比例0~255调速

  analogWrite(Left_motor_go,0);
  analogWrite(Left_motor_back,150);//左轮后退,PWM比例0~255调速
}

void loop()
{
  
  //有信号为LOW  没有信号为HIGH
  SR = digitalRead(SensorRight);
  SL = digitalRead(SensorLeft);
  SvR = digitalRead(SensorRight1);
  SvL = digitalRead(SensorLeft1);
  if (SL == LOW&&SR==LOW)
   {
    if(SvL==HIGH&&SvR==HIGH)
    run();
    else if(SvL==HIGH&&SvR==LOW)
    spin_right();
    else if(SvL==LOW&&SvR==HIGH)
    spin_right();
    }
  else if (SL == HIGH & SR == LOW)
    left();
  else if (SL ==LOW && SR ==HIGH )  
    right();
  else
  brake();
}
本人小白 发表于 2018-3-13 22:35
[mw_shl_code=c,true]int Left_motor_back=9;     //左电机后退(IN1)
int Left_motor_go=6;     //左电机前 ...

这是已编代码
发新帖
发表评论
高级模式  
您需要登录后才可以回帖 登录 | 立即注册  
关闭

推荐主题 上一条 /2 下一条