Token导航 LogoToken导航TokenDH.com
basicmicro arduino logo
地图位置未说明官方级别未说明来源级核验

basicmicro arduino

MCP Server

Basicmicro Arduino库是一个用于控制Basicmicro电机控制器的完整接口,支持多种控制模式包括占空比控制、速度控制、位置控制和PID参数配置。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
C++位置天气搜索

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

basicmicro

提供方

basicmicro

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

基本微型Arduino库

![Arduino Library Manager](https://www.arduino.cc/reference/en/libraries/) ![License: MIT](https://opensource.org/licenses/MIT)

用于控制Basicmicro电机控制器的Arduino库,全面支持所有控制器功能,包括占空比控制、速度控制、位置控制、编码器反馈、PID参数配置等。

概述

该库提供了一个完整的接口,用于使用串行通信与Basicmicro电机控制器通信。它支持用于控制电机、读取传感器和配置控制器参数的完整命令集。

支持的硬件

此库与以下内容兼容:

  • 所有带串行接口的Basicmicro电机控制器
  • 具有硬件或软件串行功能的Arduino板
  • ESP8266、ESP32和其他Arduino兼容板

安装

使用Arduino库管理器(推荐)

  1. 在Arduino IDE中,转到 草图>包含库>管理库
  2. 搜索“Basicmicro”
  3. 点击“安装”

手动安装

  1. 从下载最新版本
  2. 在Arduino IDE中,转到 草图>包含库>添加。ZIP库
  3. 选择下载的zip文件

硬件连接

使用以下连接将Arduino连接到Basicmicro控制器:

  • Arduino TX引脚→ 控制器RX引脚
  • Arduino RX引脚→ 控制器TX引脚
  • Arduino和控制器之间的公共接地

对于硬件串行:

#include 
Basicmicro roboclaw(&Serial1, 10000); // Using Serial1, 10ms timeout

对于软件串行(仅基于AVR的板):

#include 
#include 
SoftwareSerial serial(10, 11); // RX, TX
Basicmicro roboclaw(&serial, 10000); // Using SoftwareSerial, 10ms timeout

基本用法

初始化控制器

#include 

#define ADDRESS 0x80 // Default address of the controller

Basicmicro roboclaw(&Serial1, 10000);

void setup() {
  Serial.begin(115200);
  roboclaw.begin(38400); // Set the baud rate for communication with the controller
}

电机控制方法

// Basic duty cycle control (-32768 to +32767)
roboclaw.DutyM1(ADDRESS, 16384);      // 50% duty cycle forward
roboclaw.DutyM2(ADDRESS, -16384);     // 50% duty cycle backward
roboclaw.DutyM1M2(ADDRESS, 8192, 8192); // Both motors at 25% forward

// Speed control using encoders
roboclaw.SpeedM1(ADDRESS, 1000);      // Run at 1000 encoder counts per second
roboclaw.SpeedAccelM1(ADDRESS, 500, 1000); // Accelerate to 1000 counts/sec at 500 counts/sec²

// Position control
roboclaw.SpeedAccelDeccelPositionM1(ADDRESS, 500, 1000, 500, 10000, 0); // Move to position 10000

// Stop motors
roboclaw.DutyM1(ADDRESS, 0);
roboclaw.DutyM2(ADDRESS, 0);

读取编码器和状态信息

// Read encoder values
uint32_t enc1 = roboclaw.ReadEncM1(ADDRESS);
uint32_t enc2 = roboclaw.ReadEncM2(ADDRESS);

// Read speed values
uint8_t status;
bool valid;
uint32_t speed1 = roboclaw.ReadSpeedM1(ADDRESS, &status, &valid);
if (valid) {
  Serial.print("Motor 1 Speed: ");
  Serial.println(speed1);
}

// Read current values
int16_t current1, current2;
if (roboclaw.ReadCurrents(ADDRESS, current1, current2)) {
  Serial.print("Motor 1 Current: ");
  Serial.print(current1);
  Serial.print("mA, Motor 2 Current: ");
  Serial.print(current2);
  Serial.println("mA");
}

// Read battery voltage
uint16_t voltage = roboclaw.ReadMainBatteryVoltage(ADDRESS, &valid);
if (valid) {
  float volts = voltage / 10.0; // Convert to volts
  Serial.print("Battery Voltage: ");
  Serial.print(volts);
  Serial.println("V");
}

配置设置

// Set PID parameters for velocity control
roboclaw.SetM1VelocityPID(ADDRESS, 1.0, 0.5, 0.25, 12000);

// Set current limits
roboclaw.SetM1MaxCurrent(ADDRESS, 5000, 2500); // 5A max, 2.5A min

// Save settings to non-volatile memory
roboclaw.WriteNVM(ADDRESS);

高级示例

以下是一个更完整的示例,显示了编码器反馈的运动:

#include 

#define ADDRESS 0x80
Basicmicro roboclaw(&Serial1, 10000);

void setup() {
  Serial.begin(115200);
  Serial1.begin(38400);
  
  // Set PID parameters for velocity control
  roboclaw.SetM1VelocityPID(ADDRESS, 1.0, 0.5, 0.25, 12000);
  
  // Reset encoder counters
  roboclaw.ResetEncoders(ADDRESS);
}

void loop() {
  // Move forward for 5 seconds
  roboclaw.SpeedAccelM1(ADDRESS, 500, 2000);
  delay(5000);
  
  // Read encoder position
  uint8_t status;
  bool valid;
  uint32_t position = roboclaw.ReadEncM1(ADDRESS, &status, &valid);
  if (valid) {
    Serial.print("Encoder position: ");
    Serial.println(position);
  }
  
  // Stop motor
  roboclaw.SpeedAccelM1(ADDRESS, 500, 0);
  delay(1000);
  
  // Return to start position
  roboclaw.SpeedAccelDeccelPositionM1(ADDRESS, 500, 2000, 500, 0, 0);
  delay(5000);
}

完整的文件

该库为高级控制和配置提供了更多功能。有关特定功能的更多详细信息,请参阅头文件或参考示例文件夹。

有关所有命令和协议的完整文档,请参阅 官方Basicmicro文档.

故障排除

  • 与控制器无通信:验证接线,检查波特率设置,并确保电源已连接
  • 电机不动:检查错误代码 ReadError(),用以下方式验证电压 ReadMainBatteryVoltage()
  • 运动不稳定:调整PID参数以实现更平稳的控制

贡献

欢迎为改善图书馆做出贡献。请在GitHub存储库上提交问题和拉取请求。

许可证

此库根据MIT许可证发布。看 许可证 文件以获取详细信息。

______________________________________________________________________

支持的硬件

此库适用于所有当前的Basicmicro电机控制器:

资源

目录标签

目录标签

C++位置天气搜索本地部署电机控制Arduino库位置控制速度控制PID控制

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP