# TRACE - ライントレースユニット {docsify-ignore-all}

***
:memo:**[概要](#概要)** :octocat:**[サンプルコード](#サンプルコード)** :electric_plug:**[回路図](#回路図)** 🛒**[購入リンク](https://www.aliexpress.com/item/M5Stack-New-TRACE-Board-for-Lidar-Bot-Mini-Car-M5BALA-Balance-Car-with-MEGA328-4-IR/32974626338.html)** :clapper:**[関連動画](#関連動画)**
## 概要
**TRACE**は4つのIRセンサとATmega328pが組み込まれたライントレースユニットです。白地に黒線または黒地に白線のライントレースが可能です。
M5CoreとはGROVE Aで接続し、I2Cで通信を行います。I2Cアドレスは**0x5A**です。
## 特徴
- 動作範囲: 対象とセンサ-反射面の距離が11mm以内
- GROVE インターフェース, [UIFlow](http://flow.m5stack.com) と [Arduino](http://www.arduino.cc)をサポート
## パッケージ内容
- 1x TRACE ユニット
- 1x Grove ケーブル
## 応用例
- ライントレーサーロボット
## 関連リンク
- **[公式ビデオ](https://www.youtube.com/channel/UCozgFVglWYQXbvTmGyS739w)**
- **[フォーラム](http://forum.m5stack.com/)**
- **[ATmega328pのファームウェア](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Unit/TRACE/firmware_328p)**
## サンプルコード
### 1. Arduino IDE
*完全なソースコードは[こちら](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Unit/TRACE/Arduino)。*
```arduino
#include
#include "Wire.h"
#define TRACE_ADDR 0x5a
// 宣言部
#define VALUE_SPLIT
uint8_t value;
int SensorArray[4] = {0};
// 初期化
m5.begin();
Serial.begin(115200);
Wire.begin();
// データ読み取り
Wire.beginTransmission(TRACE_ADDR);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(TRACE_ADDR,1);
while(Wire.available()){
value = Wire.read();
}
SensorArray[3] = (value&0x08)>>3;
SensorArray[2] = (value&0x04)>>2;
SensorArray[1] = (value&0x02)>>1;
SensorArray[0] = (value&0x01)>>0;
```
### 2. UIFlow
*完全なソースコードは[こちら](https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Unit/TRACE/UIFlow)。*
## 回路図
### ピンマップ
| M5Core(GROVE A) | GPIO22 | GPIO21 | 5V | GND |
| TRACE Unit | SCL | SDA | 5V | GND |
## 関連動画
**TRACE Case**