极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9925|回复: 1

求助2驱避障小车程序问题

[复制链接]
发表于 2015-2-15 14:41:20 | 显示全部楼层 |阅读模式
本人新手,做机械设计的,想趁假期做个避障小车,以后可能的话改成自动拖地机。
无奈编程出现问题,求大神赐教。(详细点)

我是用L298板子驱动两个直流电机,再用两个光电位移传感器避障,编写下列程序,结果小车
一直一个方向运动(光电开关感触到障碍啦,但是就是马达不反向),猜测问题可能出现在程序
最后一段吧。
int E1=5;      //电机1调速
int M1=4;     //电机1方向
int E2=6;     //电机2调速
int M2=7;     //电机2方向
int X=10;     //左前方光电开关信号线接在10号口
int Y=11;     //右前方光电开关信号线接在11号口
unsigned char A;  //想用A来计数,控制转弯时马达转动的时间
void setup()
{
  pinMode(M1,OUTPUT);
  pinMode(M2,OUTPUT);
  pinMode(X,INPUT);   //光电开关信号输入10口
  pinMode(Y,INPUT);   //光电开关信号输入11口
}
void foward()
{
  digitalWrite(M1,LOW);
  analogWrite(E1,150);
  digitalWrite(M2,HIGH);
  analogWrite(E2,150);
}
void backward()
{
   digitalWrite(M1,HIGH);
  analogWrite(E1,150);
  digitalWrite(M2,LOW);
  analogWrite(E2,150);
  
}
void left()
{
   digitalWrite(M1,LOW);
  analogWrite(E1,200);
  digitalWrite(M2,LOW);
  analogWrite(E2,200);
  for(A=0;A<2000;A++);

}
void right()
{
   digitalWrite(M1,HIGH);
  analogWrite(E1,200);
  digitalWrite(M2,HIGH);
  analogWrite(E2,200);
  for(A=0;A<2000;A++);
  
}
void loop()
{
  if(X==1&&Y==1)          //两个传感器都没感触到障碍,
  {
    foward();                    //小车前进
  delay(50);
  }
  else if (X==1&&Y==0)   //只有左传感器感触到障碍
  {
  right();                         //小车右转
  delay(100);
  }
  else if(X==0&&Y==1)    //只有右传感器感触到障碍

  {
  left();
  delay(100);
  }
  else
  {
    backward();
    delay(100);
  }
}
现在的结果是小车不管光电开关有没有信号,小车只后退……问题出在哪里?
回复

使用道具 举报

 楼主| 发表于 2015-2-15 15:55:38 | 显示全部楼层
这次自己找到问题啦,是最后一段应该digitalRead(X),而不是X,不过还是谢谢论坛,每次有问题都有一大批人热心帮助。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 10:14 , Processed in 0.036953 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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