Skip to content
sonyhome edited this page May 5, 2016 · 14 revisions

FAB_LED

Fast Arduino Bitbanging LED library

The goals of FAB_LED are

... to provide a super easy to use library, to control all types of addressable LEDs, on both ARM and AVR Arduino platforms, and possibly other ARM based systems such as Raspberry Pi, and maybe others. It lets the user manipulate arrays of pixels, and declare very simply what LEDs are on which port, and send the pixels in one command.

... to create a very efficient library that uses very little memory. In a comparison, FAB_LED implements in less than 800B of flash what FastLED or Adafruit's libraries do using over 3kB. The library will try to use zero or very little inline assembly to maximize readability and portability, relying on GCC compiler optimizations and the use of proper C++ constructs that will help the compiler do its job of compiling efficient code. Furthermore the library does not rely on pixel buffers saving precious RAM, allowing you to drive more pixels.

Status

May 05, 2016

Implemented

  • AVR CPUs
  • ws2812b ws28** apa-104 apa-106 and sk6812** LED protocols
    • 3 and 4 byte protocols RGB and RGBW,
    • supports any color orderings RGB, GRB, BGR.
    • supports predefined pixel types (rgb, grb, rgbw...) to help coding or raw uint8_t or uint32_t types.
    • automatically convert predefined pixel types to LED strip color order.
  • parallel update of LED strips for faster displays
    • two ports, either by splitting the array in 2 blocks or interleaving the pixels.
    • one to eight ports on AVR (same port letter), works up to 6 ports on Uno.
  • palette support
    • 1, 2, 4 and 8 bit palettes support
    • uint16_t r5g6b5 support with brightness control (must fix, support is r5g5b5)

Pending

  • APA-102 (SPI)
    • single port bitbanging
    • multi port bitbanging
    • test and debugging
  • ARM0
    • Port access somewhat solved
    • delay loop implementation
    • test and debugging
  • pixel mapping
  • 2D array support
    • Logical to physical remapping support
    • Sprite support
  • APA-102 / SPI LED protocol
    • support for 4B with brightness control or 3B for default max brightness
  • PWM and UART bit-banging
  • Interrupt handler & DMA based transfers