How do I use the LED pin on an Omnibus F4 V3 for WS2812B?

I am trying to use the LED pin on my Omnibus F4V3 with some Neopixel LEDs, but I can’t figure out how to set up Ardupilot to output to them. I know I can’t use scripts, because it only has 1MB of flash, and I can’t use PWM 7 or 8 like the wiki says for PWM, because that is only on the Pro version. With the size of my plane, I also need to seperate the 64 total LEDs into 2 strips of 32, but where would I program them to show any patterns or colors?

The “LED” pin on these boards is assigned as a regular GPIO, so it is not for use with NeoPixel style LEDS.

You can use any PWM pin, by setting the SERVOx_FUNCTION for that pin to ‘NeoPixel’ as I have done for channel 1 here:
disabledChannelServos

But note that this will cause all PWM pins in the same timer group to be unavailable for other functions. For the omnibus f4 the groups are:
Pins 1,2,6
Pins 3,4,5
Pins 7,8

That is why in the above screenshot, even though I selected rudder for output 6, it shows zero and will not actually output rudder signal (I could use it for another NeoPixel though).

So with the omnibus f4, using a NeoPixel on any output will cost you 3 PWM outputs. In other words any kind of multirotor will not be possible, but you could fly a basic 3 channel plane.

As you mentioned, there is no way to have the colors programmable on this board so they can only show notification states, set like this:

That will give you the displays documented here:
https://ardupilot.org/copter/docs/common-leds-pixhawk.html

This will only light up the first LED in the string at first. There is a parameter called NTF_LED_LEN which can increase the number of LEDs to 32 (requires reboot), but they will all be the same color.

So to summarize, with that flight controller board you can’t program the colors and you wouldn’t be able to fly anything other than a very simple plane (or I guess rover would work too). Sorry to be the bearer of bad news :slight_smile:

1 Like