Giter Site home page Giter Site logo

arduinomazecar's Introduction

Arduino 摇头舵机超声波迷宫小车

概要

通过调用Arduino舵机以及SR04库,控制舵机带动超声波转向,测量不同方向的距离,从而规划走迷宫路径,进行壁障。

需要注意:与之前的单文件工程不同,此工程采用了多个文件的方式开发,这样增强了代码的可读性。 该项目的文件结构如下:

  • ..\servoUltraSonic.ino
  • ..\common.ino
  • ..\setting.h

下载后,打开..\servoUltraSonic.ino文件即可打开工程。

接线表

电机左A 电机左B 电机右A 电机右B ECHO TRIG 舵机信号
D6 D11 D5 D3 D7 D4 D9

程序讲解

将问题简化,是编程中应有的思维方式。

首先应默认小车在赛道中的行驶方式为直线行驶,直角转弯。这样,在宽度一定的赛道上,只测量车体右侧(或左侧)的距离就可以得到车体的位置信息。 因此我们只需获得车体前方距离,以及右侧(或左侧)的距离,就可以对车的运行状态做出规划,实现走迷宫的功能。 针对这两个距离,我们可以设置一个阈值,列出表格。 经过思考,我们可以针对几种简单的情况做出如下决策:

前方小于25cm 右方小于25cm 决策
直走
直走
右转
左转

总结情况,并转换为Arduino程序语言,可以写为:

void loop() {
  long forwardDistance = 0;
  long rightDistance = 0;
      //声明两个长整形变量,用于存储前方、右方的测距结果。
  forwardDistance = controlServoAndGetDistance(FORWARD);  
      //调用函数测量前方距离
  if(forwardDistance >= 25){
    forward();
      //如果前方距离大于25cm,继续向前走。
  }else{
    brake();
    rightDistance = controlServoAndGetDistance(RIGHT);
      //如果前方距离小于25cm,停车,测量右方距离。
    if(rightDistance >= 25){
      turn(RIGHT);
      //如果右方距离大于25cm,向右转。
    }else{
      turn(LEFT);
      //如果右方距离小于25cm,向左转。
    }
  }  
}

经过验证,该控制逻辑符合要求,能适应一般的赛道。

迷宫小车程序的主要精华在于控制逻辑,这个简单的实例,仅作为抛砖引玉。希望可以激发你的想象,思考出更加完善的控制逻辑。

其他

工程已经上传到项目中,可以打包下载,其中有更详细的注释。

arduinomazecar's People

Contributors

wsslsy avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.