![PROJECT_PHOTO](https://github.com/VICLER/PPMDecoder/blob/master/ppm_img.PNG)
PPM Decoder
Arduino library for decoding PPM receiver signal
## Features
* Small size and easy to use
* Non-Blocking operation using interrupts
* Precise resolution of signal measuring (+- 0.5us)
* Fast PPM to PWM (0-255) and Servo (544-2400us) conversion
* Compatible with all ATMega328 16Mhz or 8Mhz Arduino boards
## How to use
```C++
#include // include library
```
```C++
void begin(PPM_PIN, MAX_CHANNELS); // init in void setup() // works only with pin 2(PD2) or pin 3(PD3)
```
```C++
bool available(); // returns 0 if there is no valid pulses from receiver
```
```C++
uint16_t get(CHANNEL_NUMBER); // get channel value in us
```
```C++
uint8_t getPWM(CHANNEL_NUMBER); // get pwm (0-255) channel value
```
```C++
uint16_t getServo_us(CHANNEL_NUMBER); // get Servo value (0-180)deg for using with Servo.writeMicroseconds() in range (544-2400)us
```
## Example
```C++
#include
#define CHANNELS 8 // max ppm channels
#define PPM_PIN 2 // receiver ppm pin
void setup() {
ppm.begin(PPM_PIN, CHANNELS);
Serial.begin(115200);
}
void loop() {
for (uint8_t i = 1; i <= CHANNELS; i++) // print all channel values
{
Serial.print(ppm.get(i));
Serial.print('\t');
}
Serial.println();
delay(10);
}
```