arduino 捕获遥控器信号,并输出GPIO控制电平与PWM控制电平

主要功能:

通过arduino捕获pwm信号,程序实现两个功能分别是:

1.将遥控器的输入的pwm值(占空比为5%~10%),转化输出0%~100%的pwm占空比

2.根据pwm的大小,判断输出GPIO的高低电平

主要(代码)思路:

1.定义必要的pwm最大值,最小值,中间值;定义两组IO用以确定pwm的方向和大小

2.初始化

3.主循环中读取direction_pin_in 引脚用以判断pwm的方向;pwm_pin_in 用以判断pwm的大小;再根据条件、公式输出即可。

 主要用到:

芯片引脚配置函数  pinMode(chx,IN_OUT),其中chx是要配置的引脚,IN_OUT的是要配置输出还是输入,INPUT是输入,OUTPUT是输出。

PWM信号捕获函数 pulseIn(chx,polar),其中chx是要捕获的通道,polar是检测电平的高低。一般pwm信号是检测高电平。

模拟信号输出函数 analogWrite(chx,value),其中chx是pwm的输出通道,value是pwm信号的占空比值(0~255),0是百分之零,255是百分之百。

数字信号输出函数 digitalWrite(chx,polar),其中chx是数字信号的输出通道,polar是输出的电平,HIGH是高电平,LOW是低电平。

Serial.println(variable),其中variable是要输出的变量,也可以直接加上双引号“”,在双引号中输出要输出的内容。

具体实现代码如下:

​
//遥控器的最大最小中间值定义
unsigned long pwm_min = 994;
unsigned long pwm_max = 1875;
unsigned long pwm_mid = (pwm_min + pwm_max) /2;
//PWM输出值,由pwm_ch3的值减去pwm_min的差,除以pwm_max -pwm_min得到
unsigned int pwm_pulse;

//PWM输入通道
unsigned long pwm_ch3;
unsigned long pwm_ch5;

/* arduino 板子引脚旁边的编号是可以直接写在代码中,代表该引脚的 (在云端IDE环境下) */

/*https://www.arduino.cc/en/Main/Software*/

/*需要翻墙*/
//方向控制pwm通道;
int direction_pin_in = 6;
//方向输出通道;
int direction_out = 2;

//pwm占空比输入控制通道;
int pwm_pin_in = 7;

//pwm占空比输出通道;
int pwm_pin_out = 3;

void setup() {
  // put your setup code here, to run once:
  //串口初始化,用来打印信息,方便调试
  Serial.begin(115200);
  //方向IO口初始化
  pinMode(direction_pin_in,INPUT);
  pinMode(direction_out,OUTPUT);
  //PWM占空比IO口初始化
  pinMode(pwm_pin_in,INPUT);
  pinMode(pwm_pin_out,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  pwm_ch5 = pulseIn(direction_pin_in,HIGH);
 
  if(pwm_ch5 > pwm_mid)
  {
      digitalWrite(direction_out,HIGH);
  }
   else
   {
    digitalWrite(direction_out,LOW);
   }

  pwm_ch3 = pulseIn(pwm_pin_in,HIGH);
  Serial.println(pwm_ch3);
  //占空比输出计算公式,将遥控器pwm占空比转化到0~255
  pwm_pulse = 255*((float)(pwm_ch3 - pwm_min)/(pwm_max-pwm_min));
  analogWrite(pwm_pin_out,pwm_pulse);
  delay(100);
}

​

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值