【UGV】Mec 麦轮版小车驱动程序示例
生活随笔
收集整理的這篇文章主要介紹了
【UGV】Mec 麦轮版小车驱动程序示例
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 所用硬件
- 程序代碼
所用硬件
原理圖請(qǐng)參考:【UGV】小車一些圖片 麥輪版小車
控制原理請(qǐng)參考:【控制】麥輪小車動(dòng)力學(xué)模型分析
程序代碼
// Motor Controller Use Mecanum Kinematic // Author: Zhao-Jichao // Date: 2021-11-25#define IN1 6 // Lower left motor (4) rotates forward #define IN2 7 // Lower left motor (4) rotates backward #define IN3 4 // Upper left moter (3) rotates forward #define IN4 5 // Upper left motor (3) rotates backward #define IN7 10 // Upper right motor (2) rotates forward #define IN8 12 // Upper right motor (2) rotates backward #define IN5 8 // Lower right motor (1) rotates forward #define IN6 9 // Lower right motor (1) rotates backwardvoid setup() {pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(IN5, OUTPUT); pinMode(IN6, OUTPUT);pinMode(IN7, OUTPUT); pinMode(IN8, OUTPUT); }void loop() {setMovement(100,0,0); delay(3000); setMovement(0,0,0); delay(30);setMovement(0,100,0); delay(3000); setMovement(0,0,0); delay(30);setMovement(0,0,100); delay(3000); setMovement(0,0,0); delay(30); }void setMovement(float forwBackVel, float leftRightVel, float rotVel) {float len = 4.5;float wid = 11.5;Moto1(rotVel*(-len-wid) + forwBackVel - leftRightVel);Moto2(rotVel*(-len-wid) + forwBackVel + leftRightVel);Moto3(rotVel*( len+wid) + forwBackVel - leftRightVel);Moto4(rotVel*( len+wid) + forwBackVel + leftRightVel); }void Moto1(int velocity) {if (velocity > 0){analogWrite(IN5, velocity);analogWrite(IN6, 0);}else if (velocity < 0){analogWrite(IN5, 0);analogWrite(IN6, velocity);}else {digitalWrite(IN5, 1);digitalWrite(IN6, 1);} }void Moto2(int velocity) {if (velocity > 0){analogWrite(IN7, velocity);analogWrite(IN8, 0);}else if (velocity < 0){analogWrite(IN7, 0);analogWrite(IN8, velocity);}else {digitalWrite(IN7, 1);digitalWrite(IN8, 1);} }void Moto3(int velocity) {if (velocity > 0){analogWrite(IN3, velocity);analogWrite(IN4, 0);}else if (velocity < 0){analogWrite(IN3, 0);analogWrite(IN4, velocity);}else {digitalWrite(IN3, 1);digitalWrite(IN4, 1);} }void Moto4(int velocity) {if (velocity > 0){analogWrite(IN1, velocity);analogWrite(IN2, 0);}else if (velocity < 0){analogWrite(IN1, 0);analogWrite(IN2, velocity);}else {digitalWrite(IN1, 1);digitalWrite(IN2, 1);} }總結(jié)
以上是生活随笔為你收集整理的【UGV】Mec 麦轮版小车驱动程序示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【UGV】Arduino Mega256
- 下一篇: 【UGV】Mec 麦轮版小车结合角度传感