# ArduinoTank **Repository Path**: beginnerdev/arduino-tank ## Basic Information - **Project Name**: ArduinoTank - **Description**: ArduinoTank - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ArduinoTank Arduino Uno 履带车,L298N 双电机、EC11 编码器、SH1106 OLED、HU-M40 遥控器 / NRF24L01+。 ## 模块 - ArduinoTank.ino:setup/loop 入口。 - Control:输入优先级、遥控回中启用、失联停车、编码器与按键。 - Radio:厂家协议对码、接收校验、主动应答及重新对码。只把左摇杆传给控制层。 - RemoteProtocol.h:16 字节数据验证和 0x83 应答构造。 - Joystick.h:左摇杆死区、速度映射及同向差速。 - Motor:PWM 输出及非阻塞 250ms 换向停顿。 - Display:左右实际下发档位、方向和 RADIO 指令;最多每100ms刷新。 - Config.h:引脚和参数。 - Bluetooth:保留旧代码供参考,主程序不初始化、不调用,不再接蓝牙。 - examples/NRF24Test:独立模块测试。 ## 编译与接线 Arduino IDE 选择 Uno;安装 U8g2 和 RF24(厂家 RF24 1.4.8 已编译验证)。 NRF24:VCC 3.3V,GND 共地,CE D8,CSN A0,MOSI D11,MISO D12,SCK D13,IRQ 不接。 拆除原蓝牙的 D12/D13 连线。模块需支持250kbps。电机A右侧D5/D6,B左侧D9/D10;D6/D10为前进PWM;ENA/ENB保持高电平。 编码器D2/D3、按键D4、返回D7;OLED A4/A5。 程序先初始化电机输出再启动SPI,D10始终为输出,避免SPI初始化影响电机。 ## 控制 先启动小车,再启动遥控器;连接和重连后必须左摇杆回中才启用运动。 左摇杆中心死区±12,前推为正档,后推为负档,范围-10~10。 按摇杆象限控制车身运动轨迹(非固定世界坐标): - 左上:左履带慢、右履带快,两侧前进,向左前方行驶。 - 右上:左履带快、右履带慢,两侧前进,向右前方行驶。 - 左下:左履带慢、右履带快,两侧后退,车尾向左后方移动。 - 右下:左履带快、右履带慢,两侧后退,车尾向右后方移动。 倒车时不交换内外侧;“左后”不表示车头向左旋转。 正上/正下为直行前进/后退;纯横推沿用向前差速转弯。 两履带不反向旋转,满横推时内侧约为外侧1/3。回中停止;右摇杆和遥控按键暂不控制车。 遥控在线时优先于编码器;离线时编码器仍能手动调速。按住编码器按键停车,松开后遥控必须回中再启动。 1500ms无有效包停车并取消待执行换向;2秒超时回到HXFB0重新对码。失联后不会自动恢复旧速度。 换向仍停顿250ms,但不阻塞主循环;等待期间可更新目标或取消。 ## 协议与显示 信道25、250kbps、CRC16、固定16字节、pipe0自动ACK、重试(8,8)。HXFB0对码,应答告知HXFB1。 接收后先按厂家格式发独立协议应答,再处理左摇杆。保留厂家的5ms收发切换间隔及RF24同步发送,因此不是硬实时循环。 串口115200,仅输出初始化和断联等事件。OLED显示下发档位,非实测转速。 新映射、失联和回中逻辑已模拟验证;首次实机测试应架空履带,核对左右电机对应及方向。