Arduino CAN Bus サンプルコード
UIROBOT CAN Bus 製品の Arduino 開発サンプルコード。MCP2515 ドライバ、モータ制御、センサー読み取りの完全な例を含みます。
# Arduino CAN Bus サンプルコード
このページでは、Arduino プラットフォームを使用して UIROBOT CAN bus モーションコントローラと通信するためのサンプルコードを提供します。
---
## Quick Selection
| 接続方法 | 対応製品 | ドキュメント |
|---------|---------|-------------|
| **SPI-CAN (MCP2515)** | UIM342, UIM342A, UIM1616 | [AN001] |
| **シリアル-CAN (UIM2513)** | UIM342, UIM342A, UIM1616 | [AN002] |
---
## セクション 1: SPI-CAN (MCP2515)
### 背景
MCP2515 CAN コントローラと TJA1050 トランシーバを使用して、Arduino を CAN bus に接続します。
### 必要なハードウェア
| 項目 | 数量 | 説明 |
|------|:----:|------|
| Arduino Uno | 1 | マイクロコントローラボード |
| UI-MCP2515 | 1 | SPI-CAN モジュール |
| UIM342 モータ | 1 | CAN bus スマートモータ |
| 電源 | 1 | 24V 電源 |
### 配線
```
Arduino MCP2515
Pin 10 ---> CS
Pin 11 ---> SI
Pin 12 <--- SO
Pin 13 ---> SCK
5V ---> VCC
GND ---> GND
MCP2515 CAN Bus
CANH ---> CAN_H
CANL ---> CAN_L
```
### サンプルコード
```cpp
#include <SPI.h>
#include <mcp2515.h>
MCP2515 mcp2515(10);
void setup() {
Serial.begin(115200);
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS);
mcp2515.setNormalMode();
}
void loop() {
// モータ速度を設定(500 RPM)
uint8_t data[] = {0x01, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
struct can_frame frame;
frame.can_id = 0x01;
frame.can_dlc = 8;
memcpy(frame.data, data, 8);
mcp2515.sendMessage(&frame);
delay(1000);
}
```
---
## セクション 2: Ethernet-CAN (UIM2523)
### 背景
Arduino Ethernet シールドと UIM2523 ゲートウェイを使用して CAN bus モータを制御します。
### 必要なハードウェア
| 項目 | 数量 | 説明 |
|------|:----:|------|
| Arduino Uno + Ethernet シールド | 1 | マイクロコントローラ + ネットワーク |
| UIM2523 | 1 | Ethernet-CAN ゲートウェイ |
| UIM342 モータ | 1 | CAN bus スマートモータ |
---
## セクション 3: パルス/ディレクション制御(UIM344)
### 背景
Arduino のデジタル出力ピンを使用して UIM344 モータをパルス/ディレクション制御します。
### 配線
```
Arduino UIM344
Pin 3 ---> PULSE
Pin 4 ---> DIR
Pin 5 ---> ENABLE
GND ---> GND
```
### サンプルコード
```cpp
#define PULSE_PIN 3
#define DIR_PIN 4
#define ENA_PIN 5
void setup() {
pinMode(PULSE_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(ENA_PIN, OUTPUT);
digitalWrite(ENA_PIN, HIGH); // モータ有効化
digitalWrite(DIR_PIN, HIGH); // 正転
}
void loop() {
for (int i = 0; i < 1600; i++) {
digitalWrite(PULSE_PIN, HIGH);
delayMicroseconds(500);
digitalWrite(PULSE_PIN, LOW);
delayMicroseconds(500);
}
delay(1000);
}
```
---
## ダウンロード
| アプリケーションノート | 説明 | ダウンロードリンク |
|---------------------|------|-----------------|
| AN001 | MCP2515 モータ制御 | [Download ZIP](https://www.uirobot.com) |
| AN002 | UIM2513 シリアル制御 | [Download ZIP](https://www.uirobot.com) |
---
## 関連ドキュメント
- [UI-MCP2515 ゲートウェイ](/docs/ui-mcp2515-gateway)
- [UIM342 CAN Bus モーションコントローラ](/docs/uim342)
- [Python CAN Bus サンプルコード](/docs/python-examples)
- [C++ Windows サンプルコード](/docs/cpp-windows-examples)
---
*最終更新: 2026-07-03*