赞
踩
注:最近在玩模型的静改动,需要使用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信号大致有三种方式:
先来说说最简单的 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);//检测高电平<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。