0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—车辆自动走迷宫

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-02 11:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

课程目标

  • 学习走迷宫的右手法则的应用
  • 根据算法逻辑实现走迷宫功能
  • 能根据场地实际要求进行车辆调试

相关知识

**机器人迷宫项目:**是常见的机器人竞赛项目,在一个搭建好的迷宫场景内,设计机器人,实现从入口顺利抵达出口,根据完成时间的长短来进行评分。

右手法则: 针对有墙壁的迷宫,只要顺着墙壁走,遇到可以转向的口子始终向右,转向失败再向右转到下一个可以走的方向,这种方法只对树形迷宫有效。对于有循环的迷宫就需要设计更加智能化的机器人才能实现。

**红外接近传感器:**红外接近传感器是一种集发射与接收于一体的光电开关传感器。当发出的红外光碰撞到范围内的目标时,它会反射到光电二极管上,从而实现监测判断。

1.jpg

电路搭建

所需材料

ArduinoUNO * 1
红外接近传感器 * 3
上节课的车辆结构 * 1
LED * 1
杜邦线若干

电路连接

图片

程序编写

练习一:红外接近传感器控制开关灯

手靠近传感器时,LED灯开,离开传感器时,LED灯关。

图形化方式:

读取9号管脚上的信号值为低电平,说明有障碍物靠近,这时候点亮2号管脚上的LED。

图片

代码方式:

/* 项目名称:红外控制开关灯
 * 项目时间:2022.04.07
 * 项目作者:MRX
 */
int SensorPin = 9;
int LedPin = 2;
void setup() {
  pinMode(SensorPin,INPUT);
  pinMode(LedPin,OUTPUT);
}


void loop() {
  if(digitalRead(SensorPin)){
    digitalWrite(LedPin,LOW);
  }
  else{
    digitalWrite(LedPin,HIGH);
  }
}

练习二:沿墙面前进的小车

使用一个传感器,让小车能够沿着墙面前行,效果如下:

图片

原理分析:

右手法则逻辑分析。

图片

电路接线:

图片

图形化方式:

图片

代码方式:

/* 项目名称:小车贴墙走
 * 项目时间:2022.04.07
 * 项目作者:MRX
 */
int IN1 = 2;   // IN1 connected to pin 4
int IN2 = 4;   
int ENA = 3; 
int IN3 = 6;   // IN3 connected to pin 6
int IN4 = 7;   
int ENB = 5;  
int value = 255;   // the duty cycle
const int SensorPin = 10;


void Forward() {
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,value);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,value);
}


void Back() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


void Right() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,0);
}


void Left() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


void Stop() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,0);
}


void setup(){
  Serial.begin(9600);
  for (int i = 2;i <= 7;i++){
    pinMode(i, OUTPUT);
    }
  pinMode(SensorPin,INPUT);
}

void loop(){
  if (digitalRead(SensorPin) == LOW) {
      Left();
    } else{
      Right();
    } 
}

练习三:走迷宫小车

编程控制小车沿着障碍物行走,效果如下:

图片

图形化方式:

图片

代码方式:

项目所涉及到的延时及电机正反转,都要根据自己的接线来进行调整。

/* 项目名称:走迷宫
 * 项目时间:2022.04.07
 * 项目作者:MRX
 */
int IN1 = 2;   // IN1 connected to pin 4
int IN2 = 4;   
int ENA = 3; 
int IN3 = 6;   // IN3 connected to pin 6
int IN4 = 7;   
int ENB = 5;  
int value = 255;   // the duty cycle


void Forward() {
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,value);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,value);
}


void Back() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


void Right() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,0);
}


void Left() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


void Stop() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,0);
}


void TurnLeft() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,100);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,100);
}


void setup(){
  for (int i = 2;i <= 7;i++){
    pinMode(i, OUTPUT);
    }
  for (int i = 8;i <= 10;i++){
    pinMode(i,INPUT);
  }

}

void loop(){
  if (digitalRead(8) == LOW) {
    TurnLeft();
    delay(500);


  } else if (digitalRead(9) == LOW) {
    TurnLeft();
    delay(200);
  } else if (digitalRead(10) == LOW) {
    Left();
  } else {
    Right();
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    213

    文章

    30580

    浏览量

    219573
  • led灯
    +关注

    关注

    22

    文章

    1604

    浏览量

    111121
  • 红外传感器
    +关注

    关注

    9

    文章

    560

    浏览量

    49127
  • 光电二极管
    +关注

    关注

    10

    文章

    431

    浏览量

    37373
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195966
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于ARM的电脑鼠迷宫设计方案

    本文从分析“IEEE标准电脑鼠”迷宫比赛规则入手,介绍了电脑鼠硬件系统和软件系统设计过程和流程。基于电脑鼠的产品具有广泛的应用场合,譬如自动盲人导引小车、足球机器人、
    发表于 05-26 11:46 7162次阅读
    基于ARM的电脑鼠<b class='flag-5'>走</b><b class='flag-5'>迷宫</b>设计方案

    关于迷宫小车。。。

    各位大神,求较简单的迷宫小车,原理图和迷宫程序。现在我真的是毫无头绪啊。。。求救啊。。。
    发表于 05-05 23:14

    Labview写的迷宫

    基于队列的迷宫解决方案
    发表于 11-01 11:13

    基于arduino超声波红外【迷宫】小车设计

    最近到手基于arduino uno Rev3 智能小车。闲暇时间制作了这个迷宫的小车。这个小车通过4个红外模块循迹迷宫地面的黑线。通过超声波传感器检测两侧和前方的距离来进行转向。在制
    发表于 05-06 23:31

    3种C语言编写迷宫的方法

    曾经听说过一个迷宫的诀窍:顺着墙沿一侧。 (一直沿左侧或一直沿右侧)。本程序实现了这一 思想,小人一直沿左侧迷宫是随机生成的
    发表于 08-19 14:46 54次下载

    基于ARM的机器人迷宫控制系统与算法设计

    基于ARM的机器人迷宫控制系统与算法设计
    发表于 12-23 15:00 27次下载

    基于51单片机小车迷宫电路及代码

    基于51单片机小车迷宫电路及代码,包含原理图及PCB,代码及相关资料
    发表于 12-16 17:23 64次下载

    51单片机迷宫程序

    51单片机迷宫程序
    发表于 12-08 14:14 26次下载

    三个超声波迷宫

    51小车迷宫
    发表于 11-25 17:57 1次下载

    Arduino迷宫游戏

    电子发烧友网站提供《Arduino迷宫游戏.zip》资料免费下载
    发表于 11-04 10:22 1次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>迷宫</b>游戏

    Arduino Uno平衡迷宫

    电子发烧友网站提供《用Arduino Uno平衡迷宫.zip》资料免费下载
    发表于 12-12 11:58 0次下载
    用<b class='flag-5'>Arduino</b> Uno平衡<b class='flag-5'>迷宫</b>

    Arduino和加速度传感器制作数字滚球迷宫【后篇】

    :用Arduino和加速度传感器制作数字滚球迷宫 这次将为大家介绍一个使用Arduino制作的独特电子作品项目,将会分【前】和【后篇】
    的头像 发表于 02-20 11:54 2566次阅读
    用<b class='flag-5'>Arduino</b>和加速度传感器制作数字滚球<b class='flag-5'>迷宫</b>【后篇】

    Arduino迷宫游戏开源分享

    电子发烧友网站提供《Arduino迷宫游戏开源分享.zip》资料免费下载
    发表于 06-09 15:19 1次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>迷宫</b>游戏开源分享

    DIY安卓+Arduino控制迷宫游戏

    电子发烧友网站提供《DIY安卓+Arduino控制迷宫游戏.zip》资料免费下载
    发表于 06-29 14:53 0次下载
    DIY安卓+<b class='flag-5'>Arduino</b>控制<b class='flag-5'>迷宫</b>游戏

    Arduino 3D迷宫

    电子发烧友网站提供《Arduino 3D迷宫.zip》资料免费下载
    发表于 07-10 09:44 0次下载
    <b class='flag-5'>Arduino</b> 3D<b class='flag-5'>迷宫</b>