找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6961|回复: 0
打印 上一主题 下一主题
收起左侧

我的arduino控制小车巡线过路口程序

[复制链接]
跳转到指定楼层
楼主
ID:278324 发表于 2018-1-21 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bool cross;
void setup() {
  // put your setup code here, to run once:
  pinMode(12,INPUT);
  pinMode(13,INPUT);
  pinMode(8,INPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  Serial.begin(9600);
  cross=false;
  Serial.println("Initialization completion!");
}
#define LS 12
#define RS 13
#define MS 8
#define LMF 9
#define LMB 10
#define RMF 5
#define RMB 6
void loop() {
  // put your main code here, to run repeatedly:
  void TURNLEFT();
  void TURNRIGHT();
  void FORWARD();
  void STOP();
  static int i=0;
  if(digitalRead(LS)==0&&digitalRead(RS)==0&&cross==0)
  {
    Serial.println("001");
    FORWARD();
  }
  if(digitalRead(LS)==1&&digitalRead(RS)==1&&digitalRead(MS)==1)
  {
    Serial.println("111");
    cross=true;
    i++;
    switch(i%2)
    {
      case 1:
      FORWARD();
      delay(650);
      do
      {
        TURNRIGHT();
         Serial.print("cross1=");
         Serial.println(cross);
         if(digitalRead(LS)==0&&digitalRead(RS)==0&&digitalRead(MS)==1)
          break;
      }while(1);
      Serial.println("001");
      break;
      case 0:
      FORWARD();
      delay(650);
      do
      {
        TURNLEFT();
        Serial.print("cross1=");
         Serial.println(cross);
       if(digitalRead(LS)==0&&digitalRead(RS)==0&&digitalRead(MS)==1)
          break;
      }while(1);
      Serial.println("002");
      break;
      default :STOP();break;
    }
      Serial.print("i%2=");
      Serial.println(i%2);
      cross=false;
      Serial.print("cross2=");
      Serial.println(cross);
      }
  if(digitalRead(LS)==0&&digitalRead(RS)==1&&cross==0)
  {
    Serial.println("01");
    TURNRIGHT();
  }
  if(digitalRead(LS)==1&&digitalRead(RS)==0&&cross==0)
{
   Serial.println("10");
   TURNLEFT();
  }
}
void TURNLEFT()
{
  digitalWrite(LMF, LOW);
  analogWrite(LMB,100);
  analogWrite(RMF,200);
  digitalWrite(RMB,LOW);
}
void TURNRIGHT()
{
  analogWrite(LMF, 200);
  digitalWrite(LMB,LOW);
  digitalWrite(RMF,LOW);
  analogWrite(RMB,100);
}
void FORWARD()
{
  analogWrite(LMF,200);   
  digitalWrite(LMB,LOW);
  analogWrite(RMF,200);
  digitalWrite(RMB,LOW);
}
void STOP()
{
  digitalWrite(LMF, LOW);
  digitalWrite(LMB,LOW);
  digitalWrite(RMF,LOW);
  digitalWrite(RMB,LOW);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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