搜尋程式碼

第30/31課:SunFounder Arduino套件嘅智能車進行Car-8線追蹤 | Robojax

第30/31課:SunFounder Arduino套件嘅智能車進行Car-8線追蹤 | Robojax

呢個指南會帶你逐步了解點樣用SunFounder 3合1 Arduino套件整一部跟線智能車。

lesson30-line-tracking-line-1

 呢個項目喺影片入面示範咗,用紅外線循線模組偵測白色表面上嘅黑線,再控制兩個摩打令架車保持喺軌道上。呢個係一個基礎機械人項目,教你點樣讀取感應器、條件邏輯同摩打控制。喺現實世界嘅價值好大——佢係倉庫入面自動導引車(AGV)、跟住房間邊緣行嘅機械人吸塵機,同埋用嚟學習自動導航嘅教育平台嘅基礎。除咗基本組裝之外,你可以將呢個概念用喺以下方面:

  • 整一部可以喺迷宮或者軌道上沿預設路徑行嘅簡單機械人。
  • 為小型辦公室或者實驗室整一部自動送貨車。
  • 為學校科學項目或者比賽開發一部跟線機械人。
  • 為工業輸送帶整一個根據位置分類物品嘅原型系統。

硬件同零件

呢個項目嘅核心係循線模組,佢用一對紅外線(IR)發射器同接收器。以下係主要零件嘅詳細介紹:

  • 循線模組(TCRT5000):呢個感應器會發出紅外線光,然後量度反射嘅強度。模組入面有個LM393比較器,將模擬信號轉換成數碼HIGH或者LOW輸出。
  • 智能車底盤連摩打:SunFounder套件包括一個車架,上面有兩個齒輪摩打,由Arduino控制嚟轉向架車。
  • Arduino板:成個操作嘅「大腦」,負責讀取感應器同向摩打發送指令。
  • 摩打驅動器(喺車嘅擴展板上):呢個電路令Arduino嘅低功率引腳可以控制電流較大嘅摩打。
lesson30-line-tracking-wiring

接線指南

循線模組嘅接線好簡單。影片入面示範咗以下嘅連接方式(喺影片04:04):

  • 循線模組VCC(中間引腳):連接到Arduino嘅5V引腳。
  • 循線模組GND(左邊引腳):連接到Arduino嘅GND引腳。
  • 循線模組OUT(右邊引腳):連接到Arduino嘅數碼引腳2

摩打就連接去車嘅擴展板上嘅摩打驅動器。喺程式入面,右摩打由引腳5同6控制,左摩打由引腳9同10控制,好似影片示範咁(喺影片12:28)。

lesson30-line-tracking-how-line

程式碼解釋

程式碼嘅設計係讀取循線模組嘅數碼信號,然後相應咁控制摩打。以下係主要可以俾用家設定嘅部分:

const int in1 = 5; // in1、2用嚟控制右摩打
const int in2 = 6;

const int in3 = 9; // in3、4用嚟控制左摩打
const int in4 = 10;

const int lineTrack = 2;
  • 摩打引腳(in1、in2、in3、in4):呢啲常數定義咗邊啲Arduino引腳連接去摩打驅動器。如果你嘅接線唔同,就要改呢啲數值嚟配合你嘅設定。
  • 循線模組引腳(lineTrack):呢個定義咗連接去感應器信號輸出嘅數碼引腳。程式碼會讀取呢個引腳嚟判斷感應器係咪喺黑色或者白色表面上。

喺主循環入面,你可以調整speed變數嚟控制架車嘅轉彎速度。數值範圍由0到255,數值越高架車轉彎越快。

int speed = 150;//0到255

邏輯好簡單:如果感應器讀到HIGH(黑線),架車就向左轉;否則就向右轉。自訂函數moveLeft()moveRight()控制摩打嚟實現呢個效果。例如,要向左轉,右摩打轉動而左摩打停止,令架車原地轉向。呢個行為喺影片入面有詳細解釋(喺影片10:39)。

lesson30-line-tracking-sensor-on-line
將循線模組放喺黑線上。同時調整靈敏度。 

現場項目示範

影片最後有跟線車嘅現場示範(喺影片13:13)。架車放喺一條黑色軌道上,感應器直接放喺線上面。當架車移動時,感應器偵測到黑線同白色背景,向摩打發送信號嚟調整方向。示範顯示架車成功行完一個完整圓圈,證明咗簡單嘅左右修正邏輯好有效。

章節

  • [00:00] 線追蹤簡介
  • [01:09] 線追蹤模組嘅運作原理
  • [04:04] 接駁線追蹤模組
  • [04:23] 用序列監視器測試感應器
  • [07:27] 理解循線邏輯
  • [09:08] 循線車嘅程式碼
  • [11:37] 循線車示範
  • [13:13] 喺黑色賽道上面嘅實地測試

圖片

Lesson 30 line tracking wiring
Lesson 30 line tracking wiring
Lesson 30 line tracking line 1
Lesson 30 line tracking line 1
Lesson 30 line tracking how line
Lesson 30 line tracking how line
Lesson 30 line tracking sensor on line
Lesson 30 line tracking sensor on line
889-Lesson 30/31: Car-8 Line Tracking by Smart Car from SunFounder Arduino Kit
語言: C++

/*
this is code for the tutorial: Lesson 30/31: Car-8 Line Tracking by Smart Car from SunFounder Arduino Kit
YouTube video: https://www.youtube.com/watch?v=Cp2rD5RkYug
Get the code from: 📚⬇️ Download and resource page https://robojax.com/RJT613
www.robojax.com

*/
const int in1 = 5; // in1,2 for right motor
const int in2 = 6;

const int in3 = 9; // in3,4 for left motor
const int in4 = 10;

const int lineTrack = 2;

void setup() {
  Serial.begin(9600);

  //motor
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  //line track
  pinMode(lineTrack, INPUT);
}

void loop() {

  int speed = 150;//0 to 255

  int lineColor = digitalRead(lineTrack); // 0:white  1:black
  // Serial.println(lineColor); //print on the serial monitor
  if (lineColor) {
    Serial.print("Black ");
    moveLeft(speed);
  } else {
    Serial.print("White ");
    moveRight(speed);
  }
}
void moveLeft(int speed) {
  Serial.println("LEFT");
  analogWrite(in1, 0);
  analogWrite(in2, speed);
  
  analogWrite(in3, 0);
  analogWrite(in4, 0);
}

void moveRight(int speed) {
  Serial.println("RIGHT");
  analogWrite(in1, 0);
  analogWrite(in2, 0);
  
  analogWrite(in3, speed);
  analogWrite(in4, 0);
}

資源與參考資料

暫時冇資源。

文件📁

冇文件可用。