久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2439|回復: 1
打印 上一主題 下一主題
收起左側

循跡蔽障定點停車Arduino程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:490217 發(fā)表于 2019-3-13 20:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <Servo.h>  //servo library
Servo myservo;      // create servo object to control servo

int Echo = A4;  
int Trig = A5;

#define LT_R !digitalRead(10)
#define LT_M !digitalRead(4)
#define LT_L !digitalRead(2)
#define ENA 5
#define ENB 6
#define IN1 7
#define IN2 8
#define IN3 9
#define IN4 11
#define carSpeed 150
int rightDistance = 0, leftDistance = 0, middleDistance = 0;

void forward(){
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Forward");
}

void back() {
  analogWrite(ENA, carSpeed);
  analogWrite(ENB, carSpeed);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  Serial.println("Back");
}

void left() {
  digitalWrite(ENA,HIGH);
  digitalWrite(ENB,HIGH);
  //analogWrite(ENA, 300);
  //analogWrite(ENB, 300);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Left");
}

void right() {
  digitalWrite(ENA,HIGH);
  digitalWrite(ENB,HIGH);
  //analogWrite(ENA, 300);
// analogWrite(ENB, 300);
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  Serial.println("Right");
}

void stop() {
  digitalWrite(ENA, LOW);
  digitalWrite(ENB, LOW);
  Serial.println("Stop!");
}
void sright(){
  analogWrite(ENA, 250);
  analogWrite(ENB, 250);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  Serial.println("go right!");
}
void sleft(){
  analogWrite(ENA, 250);
  analogWrite(ENB, 250);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("go right!");
}

//Ultrasonic distance measurement Sub function
int Distance_test() {
  digitalWrite(Trig, LOW);   
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH);  
  delayMicroseconds(20);
  digitalWrite(Trig, LOW);   
  float Fdistance = pulseIn(Echo, HIGH);  
  Fdistance= Fdistance / 58;      
  return (int)Fdistance;
}  



void longtracking()
{
            for(int i=0;i<125;i++)
  {
    forward();
    delay(5);
    if(LT_L)
    {
      sleft();
      while(LT_L);
    }
    else if(LT_R)
    {
       sright();
      while(LT_R);
    }
    if(LT_L&<_R&<_M)
    {
      forward();
      delay(40);
      break;
    }

  }
}
void turnleft()
{

}

void longtracking2()
{
            for(int i=0;i<130;i++)
  {
    forward();
    delay(5);
    if(LT_L)
    {
      sleft();
      while(LT_L);
    }
    else if(LT_R)
    {
       sright();
      while(LT_R);
    }
    if(LT_L&<_R&<_M)
    {
      forward();
      delay(40);
      break;
    }
  }
}

void shorttracking()
{
  for(int i=0;i<83;i++)
  {
    forward();
    delay(5);
    if(LT_L)
    {
      sleft();
      while(LT_L);
    }
    else if(LT_R)
    {
       sright();
      while(LT_R);
    }
    if(LT_R&<_L&<_M)
    {
      forward();
      delay(40);
      break;
    }
  }
}


void setup() {
  myservo.attach(3);  // attach servo on pin 3 to servo object
  Serial.begin(9600);     
  pinMode(Echo, INPUT);   
  pinMode(Trig, OUTPUT);  
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  stop();
}


int x=2;
int y=0;
int dx=1;
int dy=3;
int fuck=0;


void loop()
{
  if(fuck==0)
  {
        forward();
        while(!LT_L||!LT_R||!LT_M)
        {
          if(LT_R&<_L&<_M)
          {
            break;
          }
        }
        delay(60);
        stop();
        fuck++;
  }


  if(x==1&&y!=3)                      //中間點
  {
    delay(100);
    middleDistance = Distance_test();


    if(middleDistance<25)
    {
          stop();
          delay(300);



          right();
          delay(100);
          while(!LT_R);
          stop();
          delay(300);




          if(y==0)
          {
shorttracking();
             stop();
          delay(300);


          left();
          delay(100);
          while(!LT_L);
          stop();
          delay(300);




          x++;
    delay(100);
    middleDistance = Distance_test();

          if(middleDistance<25)
          {

              left();
                        delay(100);
          while(!LT_L);
          stop();
          delay(300);

              stop();
              delay(200);
shorttracking();
              stop();


              delay(200);
shorttracking();
              stop();
              delay(200);


          right();
          delay(100);
          while(!LT_R);
          stop();
          delay(300);


              x--;
              x--;


          }
        /*  else
          {



            stop();
            delay(200);
            longtracking();
            stop();
            delay(200);


          }*/
          }
          else
          {
            shorttracking();            //此處短途迅即
             stop();
             delay(300);


             left();
             delay(100);
          while(!LT_L);
          stop();
          delay(300);




             x++;
    delay(100);
    middleDistance = Distance_test();
             if(middleDistance<25)
          {


              left();
              delay(100);
              while(!LT_L);
              stop();
              delay(200);
              shorttracking();
              stop();
              delay(200);
              shorttracking();
              stop();
              delay(200);
              x--;
              x--;

                        right();
          delay(100);
          while(!LT_R);
          stop();
          delay(300);


          }

          }
    }   
    else
    {
      stop();
      delay(200);
      longtracking2();
      stop();
      delay(300);
      y++;
    }
  }



  else if(x==0&&y!=3)
  {
    delay(100);
    middleDistance = Distance_test();


    if(middleDistance<25)
    {
          stop();
          delay(300);



          right();
          delay(100);
          while(!LT_R);
          stop();
          delay(300);



          if(y==0)
          {
            forward();
            delay(520);
             stop();
          delay(300);



          left();
          delay(100);
          while(!LT_L);
          stop();
          delay(300);



          x++;
          }
          else
          {
            shorttracking();            //此處短途迅即
             stop();
             delay(300);



          left();
          delay(100);
          while(!LT_L);
          stop();
          delay(300);


             stop();
             delay(300);
             x++;
          }
    }   
    else
    {
      stop();
      delay(200);
      longtracking();                  //zhongjianxunji
      stop();
      delay(300);
      y++;
    }  
  }




  else if(x==2&&y!=3)
  {


                delay(300);
            middleDistance = Distance_test();
            if(middleDistance<25)
            {
              stop();
              delay(300);


              if(y==0)
              {
              left();
              delay(100);
              while(!LT_L);
              stop();
              delay(300);



              forward();
              delay(520);


              right();
              delay(100);
              while(!LT_R);
              stop();
              delay(300);


              x--;              
              }
              else
              {
                              left();
              delay(100);
              while(!LT_L);
              stop();
              delay(300);


              shorttracking();
              right();
              delay(100);
              while(!LT_R);
              stop();
              delay(300);
              x--;
              }


            }
            else
            {



      stop();
      delay(200);
      longtracking();                 
      stop();
      delay(300);
      y++;



            }
  }


        if(y==3)
      {
        int d;
        d=dx-x;
        if(d==0)
        {
          stop();
          delay(300);
          forward();
          delay(400);
                    stop();
          delay(1000000);
        }
        else if(d<0)
        {
           stop();
          delay(300);
          left();
          delay(350);
          forward();
          delay(600);
           stop();
            delay(300);
           if(d==-2)
           {

          forward();
          delay(600);
           stop();
          delay(300);
           }

          right();
          delay(350);
          forward();
          delay(400);
          stop();
          delay(100000);
        }
        else if(d>0)
        {
           stop();
          delay(300);
          right();
          delay(353);
          forward();
          delay(600);
           stop();
          delay(300);

          if(d==2)
          {
                     forward();
          delay(600);
          stop();
          delay(300);
          }

          left();
          delay(350);
          stop();
          delay(300);
          forward();
          delay(400);
          stop();
          delay(10000000);
        }
      }
}






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-3-13 21:13 | 只看該作者
樓主能分享下原理圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠艹 | 高清不卡毛片 | 天天躁日日躁狠狠很躁 | 中文字幕av亚洲精品一部二部 | 在线一区视频 | 日韩av在线免费 | 国产美女在线精品免费 | 东方伊人免费在线观看 | 一区二区三区在线播放 | ww 255hh 在线观看| 欧美日韩亚洲一区 | 日本三级线观看 视频 | 亚洲国产偷 | 精品国产欧美一区二区 | 国产精品免费一区二区 | 亚洲欧洲中文日韩 | 午夜小电影 | 久久噜噜噜精品国产亚洲综合 | 99国内精品| 黄色精品 | 免费久久网站 | 久久这里只有精品首页 | 日韩电影中文字幕 | 91成人| 亚洲精品九九 | 色香婷婷| www.久久 | 91一区二区三区 | 一区二区三区欧美 | 日本欧美在线 | 欧美福利| 久综合| 福利视频一区二区 | 精品久久久久久亚洲综合网 | 亚洲精品视频二区 | 99国内精品久久久久久久 | 亚洲精品久久久一区二区三区 | 日本黄色大片免费看 | 欧美黄在线观看 | 国产精品观看 | 日韩免费视频一区二区 |