那曲檬骨新材料有限公司

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();
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28642

    瀏覽量

    208424
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    108417
  • 紅外傳感器
    +關注

    關注

    9

    文章

    522

    瀏覽量

    47693
  • 光電二極管
    +關注

    關注

    10

    文章

    405

    瀏覽量

    36053
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187825
收藏 人收藏

    評論

    相關推薦

    基于ARM的電腦鼠迷宮設計方案

    本文從分析“IEEE標準電腦鼠”迷宮比賽規則入手,介紹了電腦鼠硬件系統和軟件系統設計過程和流程。基于電腦鼠的產品具有廣泛的應用場合,譬如自動盲人導引小車、足球機器人、
    發表于 05-26 11:46 ?6803次閱讀
    基于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 ?1790次閱讀
    用<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>
    网上百家乐公| 利澳百家乐官网的玩法技巧和规则| 太阳城亚州| 大发888官方6222| 在线赌博平台| 百家乐官网算号软件| 百家乐赢多少该止赢| 威尼斯人娱乐备用622| 香港六合彩图库| 百家乐官网走势图研究| 百家乐官网赌博大赢家| 大都会百家乐官网的玩法技巧和规则 | 手游| 百家乐官网真人百家乐官网皇冠| 网上百家乐可靠| 百家乐稳赢技法| 聚宝盆百家乐的玩法技巧和规则| 足球竞猜网| 电脑版百家乐官网下注技巧| 百家乐娱乐城博彩| 大发888论坛| 百家乐官网概率计算过程| 火箭百家乐官网的玩法技巧和规则| 百家乐9点直赢| 大发888游戏平台寒怕| 哪个百家乐官网技巧平台信誉好| 解析百家乐投注法| 大发888游戏官方网站| 百家乐官网真钱牌九| 百家乐官网平注常赢玩法更| 博彩百家乐组选六六组| 安溪县| 希尔顿百家乐官网娱乐城 | 二八杠游戏平台| 百家乐官网赢的秘籍在哪| 百家乐游戏世界视频| 网络博彩公司| 百家乐官网官网7scs| 百博百家乐的玩法技巧和规则| 博白县| 百家乐三号的赢法|