请教ppm解码端口数据怎么映射到ardnio PWM接口来控制舵机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8131|回复: 1

请教ppm解码端口数据怎么映射到ardnio PWM接口来控制舵机

[复制链接]
发表于 2019-3-24 17:56 | 显示全部楼层 |阅读模式
这两个数据是接口2的ppm解析数据,请教ppm解码端口数据怎么映射到ardnio PWM接口来控制舵机。在此先谢谢

arduino程序:
unsigned long int a,b,c;
int x[15],ch1[15],ch[7],i;
//specifing arrays and variables to store values

void setup() {
Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), read_me, FALLING);
  // enabling interrupt at pin 2

}

void loop() {
read_rc();

Serial.print(ch[1]);Serial.print("\t");
Serial.print(ch[2]);Serial.print("\t");
Serial.print(ch[3]);Serial.print("\t");
Serial.print(ch[4]);Serial.print("\t");
Serial.print(ch[5]);Serial.print("\t");
Serial.print(ch[6]);Serial.print("\n");


}


void read_me()  {
//this code reads value from RC reciever from PPM pin (Pin 2 or 3)
//this code gives channel values from 0-1000 values
//    -: ABHILASH :-    //
a=micros(); //store time value a when pin value falling
c=a-b;      //calculating time inbetween two peaks
b=a;        //
x=c;     //storing 15 value in array
i=i+1;       if(i==15){for(int j=0;j<15;j++) {ch1[j]=x[j];}
             i=0;}}//copy store all values from temporary array another array after 15 reading  
void read_rc(){
int i,j,k=0;
  for(k=14;k>-1;k--){if(ch1[k]>10000){j=k;}}  //detecting separation space 10000us in that another array                     
  for(i=1;i<=6;i++){ch=(ch1[i+j]-1000);}}     //assign 6 channel values after separation space

QQ图片20190324113421.png
QQ图片20190324174711.png
发表于 2020-3-12 14:27 | 显示全部楼层
我觉得你想要解析信号必须先了解什么是PPM信号,什么是PWM信号,这些数字代表的是什么?控制舵机信号的频率是多少,arduino的PWM输出接口的pwm信号频率是多少,能不能控制。
这么说吧,从你采集的这些数据看(也不知道你是怎么采集的)是有问题的。一般来说采集的通常是pwm信号的脉宽值,但是你这些数据如果是脉宽值的话,那根本就不能驱动舵机,也就是说你的PPM解析代码是有问题的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 05:02 , Processed in 0.104072 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表