闲来无事,自己做了一个arduino履带超声波避障小车

栏目: 服务器 · 发布时间: 7年前

内容简介:闲来无事,自己做了一个arduino履带超声波避障小车

这我看到网上有很多小伙伴做的超声波壁障小车都是用减速电机来作为动力输出,我觉得自己再做一个这样的意义也不怎么大,正好手头也没有电机驱动板。于是我就想能不能用连续旋转舵机舵机来作为动力输出,实验室也有很多这样的的舵机,我就不用在某宝上花钱买了O(∩_∩)O,利用一周多的课余时间终于把这个小玩意儿搞好了,本着开源共享的理念,下面就让我细细道来

材料:

  • 小车底盘、履带
  • 两个连续旋转舵机、一个标准小舵机(用来旋转超声波模块)
  • 一个HC-SR04超声波模块、一个超声波模块旋转云台(支架)
  • Arduino UNO、Arduino V5 拓展板(这个很好用)
  • 一个4.8V电池盒【舵机需要单独供电】、一块12V电池
  • 杜邦线若干、小螺钉螺母若干。

程序:

啥话不说,先上程序

/*
	Date:2017-05-25
	Name:超声波避障小车
	Writer: mengzhe
	Arduino IDE 1.5.6
	*/
	#include <Servo.h>               //调用舵机库
	Servo left;
	Servo right;
	Servo head;                     //定义左右和头部舵机名称
	const int TrigPin = 3;
	const int EchoPin = 2;          //定义HC-SR04引脚
	float da;
	float dl;
	float dr;                       //将距离存储为单精度浮点数 前左右三组数据
	void setup()
	{
	  Serial.begin(9600);// 初始化串口通信及连接SR04的引脚
	  left.attach(10);
	  right.attach(11);
	  head.attach(12);
	  pinMode(TrigPin, OUTPUT);
	  pinMode(EchoPin, INPUT); //要检测引脚上输入的脉冲宽度,需要先设置为输入状态   
	  Serial.println("Ultrasonic Car  By Mengzhe");
	  left.write(90);
	  right.write(90);
	  head.write(105);             //小车初始化 停止 头朝前看
	  Serial.println("System start complete");
	  delay(1000);
	}

	void loop()
	{
	  digitalWrite(TrigPin, LOW);
	  delayMicroseconds(2);
	  digitalWrite(TrigPin, HIGH);
	  delayMicroseconds(10);
	  digitalWrite(TrigPin, LOW);//产生一个10us的高脉冲触发TrigPin 
	  da = pulseIn(EchoPin, HIGH) / 58.00;//读取接收到反射时长 计算出距离并换算成cm
	  if (da >= 20)
	  {
	    left.write(45);
	    right.write(111);
	    Serial.print("Distance = ");
	    Serial.print(da);
	    Serial.print("cm");
	    Serial.print("  ");
	    Serial.println("Moving advance");
	    delay(500);          //如果距离大于20cm则前进并输出"正在前进"
	  }
	  else if (da <= 20)
	  {
	    left.write(90);
	    right.write(90);
	    Serial.print("Distance = ");
	    Serial.print(da);
	    Serial.print("    ");
	    Serial.println("Stopped"); //如果距离小于20cm则小车停止并输出"停止"
	    head.write(180);
	    delay(1000);
	    digitalWrite(TrigPin, LOW);
	    delayMicroseconds(2);
	    digitalWrite(TrigPin, HIGH);
	    delayMicroseconds(10);
	    digitalWrite(TrigPin, LOW);
	    dl = pulseIn(EchoPin, HIGH) / 58.00;
	    Serial.print("Left distance = ");
	    Serial.print(dl);
	    Serial.print("  ");//头部舵机左转测量左边距离并输出
	    head.write(25);
	    delay(1000);
	    digitalWrite(TrigPin, LOW);
	    delayMicroseconds(2);
	    digitalWrite(TrigPin, HIGH);
	    delayMicroseconds(10);
	    digitalWrite(TrigPin, LOW);
	    dr = pulseIn(EchoPin, HIGH) / 58.00;
	    Serial.print("Right distance = ");
	    Serial.print(dr);
	    Serial.print("  ");
	    Serial.println();//头部舵机右转测量右边距离并输出
	    head.write(105);     //头部舵机回中
	    if (dl >= 20 && dl <= 1000 && dl > dr)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println("Turning left");
	      delay(900);      //判断左右距离 若左边大则左转
	    }
	    else if (dl >= 1000)
	    {
	      left.write(0);
	      right.write(0);
	      Serial.println("Turning right");
	      delay(900);
	      //特殊情况 若左边返回距离大于1000则说明探头被遮挡 此时右转
	    }
	    else if (dr >= 20 && dr <= 1000 && dr > dl)
	    {
	      left.write(0);
	      right.write(0);
	      Serial.println("Turning right");
	      delay(900);      //判断左右距离 若右边大则右转
	    }
	    else if (dr >= 1000)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println("Turning left");
	      delay(900);
	      //特殊情况 若右边返回距离大于1000则说明探头被遮挡 此时左转
	    }
	    else if (dr <= 20 && dl <= 20)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println("Turning around");//若左右两边距离均小于20cm 则掉头
	      delay(1500);
	    }
	  }
	}

正文:

1.首先得把小车的底盘部分给搞好,在这里我得感谢一位我们机器人团队里的一位大神和我在实验室里拼了几个小时的底盘部分,我们装了拆,拆了装,直到诞生了我们都比较满意的这个底盘,因为这些零件都是我从学院库房的某个角落里翻出来,东拼西凑的. 闲来无事,自己做了一个arduino履带超声波避障小车

闲来无事,自己做了一个arduino履带超声波避障小车

2.接下来,就是接线,接电池啥的。在这里我再次强调一下(舵机必须得单独供电),在这里,我向大家推介一本书《Arduino机器人制作指南》,我从本书中获得了很大的帮助。也可以仿照我画的这张图接线(画的不是很好,大家能看懂就行O(∩_∩)O):

闲来无事,自己做了一个arduino履带超声波避障小车

3.安装好控制超声波模块的舵机。

闲来无事,自己做了一个arduino履带超声波避障小车

4.安装好的整体效果图,简单的固定好,不是很美观,对于大神搞这些来说这都是小意思

闲来无事,自己做了一个arduino履带超声波避障小车

5.经过我不断的调试,终于搞定了(这个程序也是参考了很多人的,在此表示感谢),有不足之处,望共同探讨,以求进步。 总:经过运行,小车的效果还是嘿棒滴,履带的可玩性也比较大。后期我会不断地往上加新的功能,欢迎共同探讨O(∩_∩)O~

我在极客工坊的原帖地址:http://www.geek-workshop.com/thread-26377-1-1.html


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

引爆点

引爆点

[美] 马尔科姆·格拉德威尔 / 钱清、覃爱冬 / 中信出版社 / 2006-1 / 29.80元

这本书是《纽约客》杂志专职作家马尔科姆·格拉德威尔的一部才华横溢之作。他以社会上突如其来的流行风潮研究为切入点,从一个全新的角度探索了控制科学和营销模式。他认为,思想、行为、信息以及产品常常会像传染病爆发一样,迅速传播蔓延。正如一个病人就能引起一场全城流感;如果个别工作人员对顾客大打出手,或几位涂鸦爱好者管不住自己,也能在地铁里掀起一场犯罪浪潮;一位满意而归的顾客还能让新开张的餐馆座无虚席。这些现......一起来看看 《引爆点》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具