TY桃園智造感測器教學庫
感測器教學庫/距離感測器/光達(SEN0628 8×8 矩陣 ToF)
BATCH 01 · 已發布

SENSOR / LIDAR

8×8 矩陣 ToF 光達(SEN0628)一次取得 64 個方向的距離資料

SEN0628 將 ToF 距離量測排列成 8×8 矩陣,可取得 64 個位置的毫米距離。它適合做距離熱點、手勢方向與空間分布的入門活動。

入門45 分鐘Arduino UNO(I2C)
READYDATA
SIGNAL STABLE
8×8 矩陣 ToF 光達(SE
VCC / 依模組規格GND / GND
01 / PREPARE

課前準備

先確認這一課要學會什麼,以及桌面上需要哪些材料。

學習目標

  1. 理解一維距離與二維距離矩陣的差異。
  2. 設定矩陣 ToF 的 I2C 位址並更新 64 筆資料。
  3. 讀取指定座標與中心點,做出簡單空間判斷。

材料清單

1 個DFRobot SEN0628 8×8 矩陣 ToF本篇示範預設 I2C 位址 0x33。
1 組Arduino UNO 與 USB 線UNO 使用 A4/A5 作為 I2C。
數個平面目標物與紙箱用來在不同區域放置目標。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(I2C)
02 / HOW IT WORKS

64 個小視窗組成一張距離圖

矩陣 ToF 感測器會在 8×8 的座標上回傳距離;資料陣列需要先更新,之後讀取的 X、Y 值才代表最新狀態。

01

設定 I2C 位址

以積木選擇 0x30–0x33 其中一個位址。

02

更新全部資料

呼叫 getAllData 取得 64 個距離值。

03

讀取座標

X 與 Y 都限制在 0–7,可檢查中心點或自訂位置。

DISTANCE FORMULAindex = y × 8 + x

桃園版積木會將 X、Y 限制在 0–7,資料單位為毫米。

03 / WIRING

接線配置

SEN0628 使用 I2C 與多個距離區域資料;若同一條 I2C 上有其他裝置,請確認位址不要衝突。

MODULE8×8 矩陣 ToF 光達(SEVCCGNDSDASCL
CONTROLArduino UNO(I2C)依模組規格GNDA4 / SDAA5 / SCL
模組腳位接到控制板訊號方向檢查重點
VCC依模組規格電源使用有穩壓與電平轉換的模組版本。
GNDGND地線與 Arduino 共地。
SDAA4 / SDAI2C 資料UNO 的 SDA 腳位。
SCLA5 / SCLI2C 時脈UNO 的 SCL 腳位。
✓ WIRING ROWS ALIGNED

已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。

04 / BLOCK GUIDE

本課會用到的積木

積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。

8×8 矩陣 ToF 初始化I2C_ADDR 0x33
BLOCK 01playrobot_matrix_tof_setup

8×8 矩陣 ToF 初始化

設定 I2C 位址並啟動矩陣感測器

位置:感測器 → 距離感測器 → 光達(SEN0628)
I2C_ADDR
0x33要與模組硬體位址一致。
更新 8×8 矩陣資料
BLOCK 02playrobot_matrix_tof_update

更新 8×8 矩陣資料

讀取全部 64 個距離值

位置:感測器 → 距離感測器 → 光達(SEN0628)
讀取指定座標距離(mm)X/Y 0–7
BLOCK 03playrobot_matrix_tof_point

讀取指定座標距離(mm)

讀取 X、Y 位置的距離

位置:感測器 → 距離感測器 → 光達(SEN0628)
X/Y
0–7左上角可視為 (0,0),實際方向依模組安裝而定。
讀取中心點距離(mm)
BLOCK 04playrobot_matrix_tof_center

讀取中心點距離(mm)

快速讀取中心區域距離

位置:感測器 → 距離感測器 → 光達(SEN0628)
05 / BLOCK EXAMPLE

判斷中心前方是否有物體

每次更新 8×8 資料後,讀取中心點並在小於門檻時亮燈。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
8×8 矩陣 ToF 初始化(0x33)playrobot_matrix_tof_setup
重複執行arduino_delay
更新 8×8 矩陣資料playrobot_matrix_tof_update
讀取中心點距離(mm)playrobot_matrix_tof_center
小於 300 mm 時點亮 LEDarduino_serial_print
重複執行
8×8 矩陣 ToF 初始化(0x33)playrobot_matrix_tof_setup
重複執行arduino_delay
更新 8×8 矩陣資料playrobot_matrix_tof_update
讀取中心點距離(mm)playrobot_matrix_tof_center
小於 300 mm 時點亮 LEDarduino_serial_print
X / 010Y / 024

組合步驟

01
先固定方向

在紙上標出感測器的 X/Y 方向。

為什麼:矩陣座標方向會隨安裝方向改變。
02
更新再讀取

把更新積木放在任何 point 或 center 積木之前。

為什麼:否則讀到的是上一輪資料。
03
從中心延伸

改讀四個角落,觀察物體在不同區域的距離。

為什麼:把單點感測延伸成空間分布問題。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_matrix_tof_setup設定 I2C 位址並啟動矩陣感測器

預期觀察結果

測試情境可能讀值判讀
手放在中心前方中心點距離變小該區域的 ToF 回波變近。
手移到左側左側座標的距離先變化64 點資料可以辨識位置變化。
06 / CODE EXPLAINED

範例程式逐段解說

這段程式把「8×8 矩陣 ToF 光達(SEN0628)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。

GENERATED LOGIC / EXCERPT積木背後的程式碼收合程式碼 −
TAOYUAN BLOCKLY / ARDUINO C++READ ONLY
#include <DFRobot_MatrixLidar.h>

DFRobot_MatrixLidar_I2C lidar(0x33);
uint16_t data[64] = {0};

void setup() {
  Serial.begin(115200);
  while (lidar.begin() != 0) delay(500);
  while (lidar.setRangingMode(eMatrix_8x8) != 0) delay(500);
}

void loop() {
  lidar.getAllData(data);
  Serial.println(data[3 * 8 + 3]);
  delay(200);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <DFRobot_MatrixLidar.h>

函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_matrix_tof_setup 就算接線正確也無法使用。

02
把程式腳位對回接線表// VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL

本頁接線是 VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

03
在 setup 只做一次初始化void setup() {

啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。

04
在 loop 更新並取得資料uint16_t data[64] = {0};

重複執行區先讓感測器更新,再讀取 8×8 矩陣 ToF 初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。

05
輸出結果並控制取樣速度while (lidar.begin() != 0) delay(500);

先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。

自學檢查
  • 實體接線:VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。
  • 主要積木:playrobot_matrix_tof_setup;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO(I2C);更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。

ERR 01

初始化失敗

先檢查:確認 I2C 位址、供電與 SDA/SCL。

處理方式:將積木位址改成模組實際設定,並移除衝突的 I2C 裝置。

ERR 02

讀值都是 0

先檢查:確認是否先放更新資料積木。

處理方式:在讀取 point/center 前每輪呼叫更新積木。

ERR 03

座標方向與預期相反

先檢查:檢查模組安裝方向。

處理方式:在學習單畫出實際 X/Y 方向,必要時在程式中交換座標。

08 / NEXT MISSION

延伸挑戰

從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。

L1

顯示中心距離

題目:用序列埠連續列印中心點距離。

解題方向

這題要延伸「8×8 矩陣 ToF 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_matrix_tof_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「用序列埠連續列印中心點距離。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L2

找出最近區域

題目:讀取四個角落與中心,找出距離最小的位置。

解題方向

這題要延伸「8×8 矩陣 ToF 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_matrix_tof_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「讀取四個角落與中心,找出距離最小的位置。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L3

做距離熱點圖

題目:將 8×8 距離資料分成近、中、遠三種顏色顯示。

解題方向

這題要延伸「8×8 矩陣 ToF 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_matrix_tof_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「將 8×8 距離資料分成近、中、遠三種顏色顯示。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能說明矩陣資料需要先更新再讀取。
  • 能正確設定 I2C 位址與座標範圍。
  • 能利用多個座標資料判斷物體位置。
09 / EVIDENCE資料來源與版本展開查看 +
LAST REVIEWED / 2026-08-13

本頁使用零件圖鑑標準範本,內容可由網站編輯模式持續維護。

返回教學庫 →