![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <TimerOne.h> #define PPMPIN 7 byte ppm=1; //0-9 byte count=0; void setup() { // put your setup code here, to run once: pinMode(PPMPIN,OUTPUT); Serial.begin(9600); Timer1.initialize(100);// 设置定时器中断时间,单位微秒,此处为1秒 Timer1.attachInterrupt( timerIsr ); // 打开定时器中断 } void loop() { // put your main code here, to run repeatedly: while(Serial.available()){ char c= Serial.read(); if(c>='0' && c<='9'){ ppm=((byte)c) - 38; Serial.println(ppm); } } } //定时器中断处理函数 void timerIsr() { if(count>200)count=0; if(count<=ppm){ digitalWrite(PPMPIN,HIGH); }else{ digitalWrite(PPMPIN,LOW); } count++; }
采用TimeOne组件,这个通过T/C定时触发中断处理, 设置100微秒,每次中断累加1,直到200,这样产生的50HZ的PWM,控制比较参数ppm可以调节脉款
电调低油门是0.7ms高油门是1.7ms
可以设置ppm1,ppm2,ppm3等多个输出,