Arduino 超声波避障循迹小车,四轮智能小车

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Arduino 超声波避障循迹小车,智能小车


前言

所用到的元器件有:arduino uno1块,L298直流电机驱动板2块,lcd1602带iic1块,HC-05超声波模1块,led灯,直流电机2个,循迹模块4个,有源蜂鸣器1个

一、仿真原理图

请添加图片描述

二、使用步骤

当智能小车离障碍物只有20cm时,小车左转,然后前进,当第2和第3个循迹模块遇到黑线时小车前进,第1个和第2个循迹模块遇到黑线时小车左转,第3个和第4个循迹模块遇到黑线时小车右转。
请添加图片描述

1.引入库

代码如下(示例):

#include <Wire.h>   
#include <LiquidCrystal_I2C.h> 
 lcd.print("如有不懂的地方加作者Q:2188263281"); 

2.程序

代码如下(示例):

#include <Wire.h>   
#include <LiquidCrystal_I2C.h> //引用lcd1602I2C库  
  
//设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册  
LiquidCrystal_I2C lcd(0x27,20,4); 
const int Pin1 =  2;    
const int Pin2 =  3;    
const int Pin3 =  4;     
const int Pin4 =  5;     
const int Pin5 =  6;      
const int Pin6 =  7;      
const int Pin7 =  8;      
const int Pin8 =  9;     
const int TrigPin = 10; 
const int EchoPin = 11; 
const int fmq = 12;
const int gd1= A0;
const int gd2= A1;
const int gd3= A2;
const int gd4= A3;
int cm;
int sensor[5];
void setup() {
lcd.init();                  // 初始化LCD  
lcd.backlight();             //设置LCD背景等亮
for(int a = 2; a < 11;a++)
{
  pinMode(a, OUTPUT);
}
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  Serial.begin(9600);
  pinMode(EchoPin, INPUT);
  pinMode(fmq, OUTPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
    digitalWrite(TrigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW); 
    cm = pulseIn(EchoPin, HIGH) / 58.0;
    //算成厘米 
    cm = (int(cm * 100.0)) / 100.0;
    //保留两位小数 
    lcd.setCursor(0,0);             
    lcd.print(cm + 1);    
    lcd.setCursor(3,0);          
    lcd.print("cm");   
    sensor[0]=digitalRead(A0);
    sensor[1]=digitalRead(A1);
    sensor[2]=digitalRead(A2);
    sensor[3]=digitalRead(A3);
    if(sensor[0] == 0&& sensor[1] == 0&& sensor[2] == 1&&sensor[3] == 0)  //0010
      {
       moto_run4(); //右转
      }
    else if(sensor[0] == 0&& sensor[1] == 0&& sensor[2] == 0&&sensor[3] == 1)  //0001
     {
        moto_run4() ;//右转
     }else if(sensor[0] == 0&& sensor[1] == 1&& sensor[2] == 0&&sensor[3] == 0)  //0100
      {
        moto_run3(); //左转
      }else if(sensor[0] == 1&& sensor[1] == 0&& sensor[2] == 0&&sensor[3] == 0)  //1000
      {
        moto_run3(); //左转
       }else if(sensor[0] == 0&& sensor[1] == 1&& sensor[2] == 1&&sensor[3] == 0)  //0110
       {
        moto_run1(); //直行
       }else if(cm < 20)
    {
      digitalWrite(fmq, 1);
      
        moto_run3(); //左转
      delay(3000);
    }else if(sensor[0] == 0&& sensor[1] == 0&& sensor[2] == 0&&sensor[3] == 0)
    {
      moto_run1(); //向前
      
      digitalWrite(fmq, 0);
    }
}

  void moto_run1()//向前
{

      digitalWrite(Pin1, 1);
      digitalWrite(Pin2, 0);
      digitalWrite(Pin3, 1);
      digitalWrite(Pin4, 0);
      
      digitalWrite(Pin5, 1);
      digitalWrite(Pin6, 0);
      digitalWrite(Pin7, 1);
      digitalWrite(Pin8, 0);
}
  void moto_run2()//向后
   {
      digitalWrite(Pin1, 0);
      digitalWrite(Pin2, 1);
      digitalWrite(Pin3, 0);
      digitalWrite(Pin4, 1);
      
      digitalWrite(Pin5, 0);
      digitalWrite(Pin6, 1);
      digitalWrite(Pin7, 0);
      digitalWrite(Pin8, 1);
}
  void moto_run3()//向左
   { 
      digitalWrite(Pin1, 0);
      digitalWrite(Pin2, 1);
      digitalWrite(Pin3, 0);
      digitalWrite(Pin4, 1);
      
      digitalWrite(Pin5, 1);
      digitalWrite(Pin6, 0);
      digitalWrite(Pin7, 1);
      digitalWrite(Pin8, 0);
   }  
void moto_run4()//向右
   {
       digitalWrite(Pin1,1);
      digitalWrite(Pin2, 0);
      digitalWrite(Pin3, 1);
      digitalWrite(Pin4, 0);
      
      digitalWrite(Pin5, 0);
      digitalWrite(Pin6, 1);
      digitalWrite(Pin7, 0);
      digitalWrite(Pin8, 1);
   } 
void moto_run5()//停止
   {
      digitalWrite(Pin1,0);
      digitalWrite(Pin2, 0);
      digitalWrite(Pin3, 0);
      digitalWrite(Pin4, 0);
      
      digitalWrite(Pin5, 0);
      digitalWrite(Pin6, 0);
      digitalWrite(Pin7, 0);
      digitalWrite(Pin8, 0);
   }

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了智能小车的使用。

  • 8
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
基于Arduino leonardo主控器4轮驱动智能小车概述: Arduino四轮驱动智能小车是一款面向教育的集成机器人,将Arduino leonardo主控器、优质电机动力系统、电机驱动和传感器集成到109*122mm的空间之上。让玩家不用耗费精力在繁琐的组装和调试上,从而集中精力发挥自己的想象。 另外,小车利用Arduino IDE编程,是目前世界上最普及的硬件入门编程软件。即使没有任何技术背景,也能快速入门,掌控小车的操控。 下面的文档中具备8节课程,让玩家循序渐进的学习。教程和代码包下载见附件内容。 课程1:小车入门 课程2:控制蜂鸣器 课程3:蜂鸣器播报光线方向 课程 4:小车巡线程序 :小车巡线程序 课程 5:RGBRGB 灯的使用 课程 6:小车程序 :小车程序 课程 7:编码器的使用 :编码器的使用 课程8:红外遥控小车 4WD mini型集成了以下功能: 红外发射管:发射红外信号,用于物体探测等 光敏二极管:用于检测是否有光照,使小车进行巡光运动等 红外接收管:接收红外发射管发射出的红外信号 按键:用于输入信号给小车,以控制小车 全彩LED灯:可以使用程序使其发出不同颜色的光,可用于装饰或者程序调试等 USB程序下载与通讯接口:下载程序会使用到,在调试时可以和电脑通讯观察程序运行状况 蜂鸣器(无源):发出报警声或音乐等 控制器:运行编写程序的芯片 电机:通过控制电机的不同动作,使小车前进后退或转弯 重启按键;使小车的程序重新运行 电源开关按键:开关小车电源 电源接口:给整个小车供电 电池充电接口:如果使用的是充电电池,可以直接用这个口给电池充电。 红外巡线传感器 四轮智能小车参数如下: 重量: 350g 工作电压: 4.5--6V Bootloader: Arduino Leonardo 巡线传感器x5 光敏二极管 x2 硅胶软质按键 WS2812 RGB LED 通信端口IIC,Micro USB 尺寸: 109*122mm N20电机规格 工作电压:3V或6V 6V空载转速:15000 rpm 齿轮箱减速比:30:1 6V负载转速:500 rpm6V 电流:40mA@6V 堵转电流:100mA@6V 力矩:1.2kg/cm@6V 类似设计资料共享:https://www.cirmall.com/circuit/4202/(A4WD四轮驱动机器人,基于Arduino设计) 实物购买链接:https://item.taobao.com/item.htm?spm=2013.1.w10035...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代坐电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值