sailer

Member Since: May 7, 2012

Country: United States

  • This is certainly a good intro, but using a pin for every pwm signal is a bit of a waste. Most receivers offer an extra servo header used to program the receiver to accept a transmitter. What would normally be the signal pin here usually carries a PPM stream with all the PWM values smashed into one channel with slightly different timings. I wrote a (probably inefficient) interrupt driven decoder a few years ago for a few robotics competitions. It’s stable as is, but could really use some TLC to get it into a library. Here’s a link if anybody wants to use it: https://github.com/RetrieverRobotics/resources/blob/master/personal_RX.h

    Right now it needs to be used on an actual interrupt pin (in limited supply on boards like the UNO), but since it’s tracking a CHANGE interrupt, could probably be adapted to use one of the PinChangeInterrupt libraries.

    Usage:

    #include "whatever_you_name_the_file.h"
    OrangeRX instance_name(interrupt_pin);
    void a_unique_handler(void) {
       instance_name.isr();
    }
    
    void setup() {
       instance_name.begin(a_unique_handler);
    }
    
    void loop() {
       if(instance_name.packetAvailable()) {
          instance_name.channelValue( _channel_ );
       }
       //instance_name.debug() // assumes that Serial.begin() has been called
    }
    

    P.S. I have trouble writing short comments. Oh well. : p

  • The list of “supplies from Sparkfun” (the most important part : ) is blank/nonexistent.

  • There is a typo - “441 kHz” should be “44.1 kHz”

No public wish lists :(