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*