使用Arduino读取RC接收机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是数字信号,只
摘要由CSDN通过智能技术生成

使用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);//检测高电平<
  • 12
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值