0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino篇—車輛自動(dòng)走迷宮

冬至子 ? 來源:X的創(chuàng)客課堂 ? 作者:MRXY ? 2023-11-02 11:31 ? 次閱讀

課程目標(biāo)

  • 學(xué)習(xí)走迷宮的右手法則的應(yīng)用
  • 根據(jù)算法邏輯實(shí)現(xiàn)走迷宮功能
  • 能根據(jù)場(chǎng)地實(shí)際要求進(jìn)行車輛調(diào)試

相關(guān)知識(shí)

**機(jī)器人迷宮項(xiàng)目:**是常見的機(jī)器人競(jìng)賽項(xiàng)目,在一個(gè)搭建好的迷宮場(chǎng)景內(nèi),設(shè)計(jì)機(jī)器人,實(shí)現(xiàn)從入口順利抵達(dá)出口,根據(jù)完成時(shí)間的長(zhǎng)短來進(jìn)行評(píng)分。

右手法則: 針對(duì)有墻壁的迷宮,只要順著墻壁走,遇到可以轉(zhuǎn)向的口子始終向右,轉(zhuǎn)向失敗再向右轉(zhuǎn)到下一個(gè)可以走的方向,這種方法只對(duì)樹形迷宮有效。對(duì)于有循環(huán)的迷宮就需要設(shè)計(jì)更加智能化的機(jī)器人才能實(shí)現(xiàn)。

**紅外接近傳感器:**紅外接近傳感器是一種集發(fā)射與接收于一體的光電開關(guān)傳感器。當(dāng)發(fā)出的紅外光碰撞到范圍內(nèi)的目標(biāo)時(shí),它會(huì)反射到光電二極管上,從而實(shí)現(xiàn)監(jiān)測(cè)判斷。

1.jpg

電路搭建

所需材料

ArduinoUNO * 1
紅外接近傳感器 * 3
上節(jié)課的車輛結(jié)構(gòu) * 1
LED * 1
杜邦線若干

電路連接

圖片

程序編寫

練習(xí)一:紅外接近傳感器控制開關(guān)燈

手靠近傳感器時(shí),LED燈開,離開傳感器時(shí),LED燈關(guān)。

圖形化方式:

讀取9號(hào)管腳上的信號(hào)值為低電平,說明有障礙物靠近,這時(shí)候點(diǎn)亮2號(hào)管腳上的LED。

圖片

代碼方式:

/* 項(xiàng)目名稱:紅外控制開關(guān)燈
 * 項(xiàng)目時(shí)間:2022.04.07
 * 項(xiàng)目作者: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);
  }
}

練習(xí)二:沿墻面前進(jìn)的小車

使用一個(gè)傳感器,讓小車能夠沿著墻面前行,效果如下:

圖片

原理分析:

右手法則邏輯分析。

圖片

電路接線:

圖片

圖形化方式:

圖片

代碼方式:

/* 項(xiàng)目名稱:小車貼墻走
 * 項(xiàng)目時(shí)間:2022.04.07
 * 項(xiàng)目作者: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();
    } 
}

練習(xí)三:走迷宮小車

編程控制小車沿著障礙物行走,效果如下:

圖片

圖形化方式:

圖片

代碼方式:

項(xiàng)目所涉及到的延時(shí)及電機(jī)正反轉(zhuǎn),都要根據(jù)自己的接線來進(jìn)行調(diào)整。

/* 項(xiàng)目名稱:走迷宮
 * 項(xiàng)目時(shí)間:2022.04.07
 * 項(xiàng)目作者: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();
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    28129

    瀏覽量

    205890
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107768
  • 紅外傳感器
    +關(guān)注

    關(guān)注

    9

    文章

    512

    瀏覽量

    47498
  • 光電二極管
    +關(guān)注

    關(guān)注

    10

    文章

    398

    瀏覽量

    35885
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6461

    瀏覽量

    186524
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于ARM的電腦鼠迷宮設(shè)計(jì)方案

    本文從分析“IEEE標(biāo)準(zhǔn)電腦鼠”迷宮比賽規(guī)則入手,介紹了電腦鼠硬件系統(tǒng)和軟件系統(tǒng)設(shè)計(jì)過程和流程?;陔娔X鼠的產(chǎn)品具有廣泛的應(yīng)用場(chǎng)合,譬如自動(dòng)盲人導(dǎo)引小車、足球機(jī)器人、
    發(fā)表于 05-26 11:46 ?6759次閱讀
    基于ARM的電腦鼠<b class='flag-5'>走</b><b class='flag-5'>迷宮</b>設(shè)計(jì)方案

    關(guān)于迷宮小車。。。

    各位大神,求較簡(jiǎn)單的迷宮小車,原理圖和迷宮程序?,F(xiàn)在我真的是毫無頭緒啊。。。求救啊。。。
    發(fā)表于 05-05 23:14

    Labview寫的迷宮

    基于隊(duì)列的迷宮解決方案
    發(fā)表于 11-01 11:13

    基于arduino超聲波紅外【迷宮】小車設(shè)計(jì)

    最近到手基于arduino uno Rev3 智能小車。閑暇時(shí)間制作了這個(gè)迷宮的小車。這個(gè)小車通過4個(gè)紅外模塊循跡迷宮地面的黑線。通過超聲波傳感器檢測(cè)兩側(cè)和前方的距離來進(jìn)行轉(zhuǎn)向。在制
    發(fā)表于 05-06 23:31

    3種C語言編寫迷宮的方法

    曾經(jīng)聽說過一個(gè)迷宮的訣竅:順著墻沿一側(cè)。 (一直沿左側(cè)或一直沿右側(cè))。本程序?qū)崿F(xiàn)了這一 思想,小人一直沿左側(cè)迷宮是隨機(jī)生成的
    發(fā)表于 08-19 14:46 ?54次下載

    基于ARM的機(jī)器人迷宮控制系統(tǒng)與算法設(shè)計(jì)

    基于ARM的機(jī)器人迷宮控制系統(tǒng)與算法設(shè)計(jì)
    發(fā)表于 12-23 15:00 ?27次下載

    基于51單片機(jī)小車迷宮電路及代碼

    基于51單片機(jī)小車迷宮電路及代碼,包含原理圖及PCB,代碼及相關(guān)資料
    發(fā)表于 12-16 17:23 ?64次下載

    51單片機(jī)迷宮程序

    51單片機(jī)迷宮程序
    發(fā)表于 12-08 14:14 ?26次下載

    三個(gè)超聲波迷宮

    51小車迷宮
    發(fā)表于 11-25 17:57 ?1次下載

    Arduino迷宮游戲

    電子發(fā)燒友網(wǎng)站提供《Arduino迷宮游戲.zip》資料免費(fèi)下載
    發(fā)表于 11-04 10:22 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>迷宮</b>游戲

    Arduino Uno平衡迷宮

    電子發(fā)燒友網(wǎng)站提供《用Arduino Uno平衡迷宮.zip》資料免費(fèi)下載
    發(fā)表于 12-12 11:58 ?0次下載
    用<b class='flag-5'>Arduino</b> Uno平衡<b class='flag-5'>迷宮</b>

    Arduino和加速度傳感器制作數(shù)字滾球迷宮【后篇】

    :用Arduino和加速度傳感器制作數(shù)字滾球迷宮?這次將為大家介紹一個(gè)使用Arduino制作的獨(dú)特電子作品項(xiàng)目,將會(huì)分【前】和【后篇】
    的頭像 發(fā)表于 02-20 11:54 ?1627次閱讀
    用<b class='flag-5'>Arduino</b>和加速度傳感器制作數(shù)字滾球<b class='flag-5'>迷宮</b>【后篇】

    Arduino迷宮游戲開源分享

    電子發(fā)燒友網(wǎng)站提供《Arduino迷宮游戲開源分享.zip》資料免費(fèi)下載
    發(fā)表于 06-09 15:19 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>迷宮</b>游戲開源分享

    DIY安卓+Arduino控制迷宮游戲

    電子發(fā)燒友網(wǎng)站提供《DIY安卓+Arduino控制迷宮游戲.zip》資料免費(fèi)下載
    發(fā)表于 06-29 14:53 ?0次下載
    DIY安卓+<b class='flag-5'>Arduino</b>控制<b class='flag-5'>迷宮</b>游戲

    Arduino 3D迷宮

    電子發(fā)燒友網(wǎng)站提供《Arduino 3D迷宮.zip》資料免費(fèi)下載
    發(fā)表于 07-10 09:44 ?0次下載
    <b class='flag-5'>Arduino</b> 3D<b class='flag-5'>迷宮</b>