找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1362|回复: 0
收起左侧

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

[复制链接]
ID:490994 发表于 2019-3-24 22:54 | 显示全部楼层 |阅读模式
1.png 2.png
已经解析好接收机的ppm数据,但是不知道怎么添加到程序中用arduino来控制舵机。有知道的朋友帮添加程序到数据源中
或指教。谢谢

  1. unsigned long int a,b,c;
  2. int x[15],ch1[15],ch[7],i;
  3. //specifing arrays and variables to store values

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

  9. }

  10. void loop() {
  11. read_rc();

  12. Serial.print(ch[1]);Serial.print("\t");
  13. Serial.print(ch[2]);Serial.print("\t");
  14. Serial.print(ch[3]);Serial.print("\t");
  15. Serial.print(ch[4]);Serial.print("\t");
  16. Serial.print(ch[5]);Serial.print("\t");
  17. Serial.print(ch[6]);Serial.print("\n");


  18. }


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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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