ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Arduino简易麦轮小车 使用航模遥控器控制

2021-10-06 17:02:12  阅读:235  来源: 互联网

标签:CH run 64KHZ Arduino AF MOTOR12 else 航模 麦轮


#include<Servo.h>//加载伺服器包
#include <AFMotor.h> //加载
//CH1升降,CH2副翼,CH3油门,CH4方向

int CH[7],AH[7],i,j;  
int R[5];                //1,2,3,4分别对应左前,右前,右后,左后
AF_DCMotor m1(3,MOTOR12_64KHZ);
AF_DCMotor m2(4,MOTOR12_64KHZ);
AF_DCMotor m3(1,MOTOR12_64KHZ);
AF_DCMotor m4(2,MOTOR12_64KHZ);
Servo A[9];              //定义脉冲输出接口

void setup() {
   //定义输入接口
   for(i=14;i<=16;i++){pinMode(i,INPUT);}
   Serial.begin(9600);
}

void loop() {
  //for(i=2;i<=4;i++){CH[i]= pulseIn(i,HIGH);}//获取脉冲接收机脉冲信号
  CH[2]= pulseIn(14,HIGH);
  CH[3]= pulseIn(15,HIGH);
  CH[4]= pulseIn(16,HIGH);
  mapCH();               //计算通道输出范围
  wheel();               //计算轮子速度
  wheelout();            //输出轮子方向和速度 
  
  Serial.print(R[3]);
  Serial.print(",");
  Serial.print(R[2]);
  Serial.print(",");
  Serial.print(R[3]);
  Serial.print(",");
  Serial.println(R[4]);
  delay(20);
}

void mapCH(){            //计算通道输出范围
  for(i=2;i<=4;i++){
    if(CH[i]>=1425 and CH[i]<=1575){
      AH[i]=0;
    }
    if(CH[i]>1575){
      //AH[i] = map(CH[i],1575,1910,10,85);
      AH[i] = map(CH[i],1575,1920,130,255);
    }
    if(CH[i]<1425){ 
      //AH[i] = map(CH[i],1100,1425,-85,-10);
      AH[i] = map(CH[i],1090,1425,-255,-130);
    }
  }
  return AH[2],AH[3],AH[4];
}
void wheel(){            //计算轮子速度 
  R[1]= AH[2]+AH[3]-AH[4];
  R[2]=-AH[2]+AH[3]-AH[4];
  R[3]= AH[2]+AH[3]+AH[4];
  R[4]=-AH[2]+AH[3]+AH[4];
  return R[1],R[2],R[3],R[4];
}
void wheelout(){         //输出轮子方向和速度 
  if(R[1]==0){
      m1.run(RELEASE);
    }else if(R[1]>0){
      m1.setSpeed(R[1]);
      m1.run(FORWARD);
    }else if(R[1]<0){
      m1.setSpeed(-R[1]);
      m1.run(BACKWARD);
    } 
  if(R[2]==0){
      m2.run(RELEASE);
    }else if(R[2]>0){
      m2.setSpeed(R[2]);
      m2.run(FORWARD);
    }else if(R[2]<0){
      m2.setSpeed(-R[2]);
      m2.run(BACKWARD);
    } 
  if(R[3]==0){
      m3.run(RELEASE);
    }else if(R[3]>0){
      m3.setSpeed(R[3]);
      m3.run(FORWARD);
    }else if(R[3]<0){
      m3.setSpeed(-R[3]);
      m3.run(BACKWARD);
    } 
  if(R[4]==0){
      m4.run(RELEASE);
    }else if(R[4]>0){
      m4.setSpeed(R[4]);
      m4.run(FORWARD);
    }else if(R[4]<0){
      m4.setSpeed(-R[4]);
      m4.run(BACKWARD);
    } 
}

标签:CH,run,64KHZ,Arduino,AF,MOTOR12,else,航模,麦轮
来源: https://blog.csdn.net/m0_59889595/article/details/120623356

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有