当前位置:   article > 正文

使用Arduino读取RC接收机PWM信号的三种方式_arduino读取pwm信号

arduino读取pwm信号

使用Arduino读取RC接收机PWM信号的三种方式

注:最近在玩模型的静改动,需要使用2.4Ghz的RC控制器来控制arduino。
在网上搜到一片使用Arduino处理PWM信号的文章,觉得不错,翻译过来,希望能帮到同好。
(翻译、总结自 https://www.benripley.com/diy/arduino/three-ways-to-read-a-pwm-signal-with-arduino/)

PWM信号通过控制脉冲的宽度实现信息的传递,常用于RC模型的舵机操控等。(注:PWM是数字信号,只有低电平和高电平,高电平持续的时间即为脉冲的宽度)
使用Arduino来处理来自RC接收机的PWM信号大致有三种方式:

  1. pulseIn() 函数
  2. 外部中断 External Interrupts
  3. 针脚电平变化中断 Pin Change Interrupts

使用pulseIn()函数

先来说说最简单的 pulseIn()函数,该函数会等待输入信号变为高电平(在value设置为HIGH的情况下,反之LOW等待低电平),并启动定时器,当输入信号再次转为低电平时结束定时器,返回高电平的持续时间,单位为毫秒(ms)。
需要补充的是,arduino可处理的脉冲时长的范围为10微秒到3分钟。
pulseIn(pin, value, timeout) 可以手动设置timeout,超过该值返回0。

byte PWM_PIN = 3; //将PWM的信号线输入到3号引脚
 
int pwm_value;
 
void setup() {
   
  pinMode(PWM_PIN, INPUT);//将该引脚设置为输入模式
  Serial.begin(115200);
}
 
void loop() {
   
  pwm_value = pulseIn(PWM_PIN, HIGH);//检测高电平<
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/1013059
推荐阅读
相关标签
  

闽ICP备14008679号