nimphea/dev/neopixel

Source   Edit  

NeoPixel RGB LED Module

Nim wrapper for libDaisy NeoPixel support (WS2812B). This module uses the Adafruit Seesaw I2C bridge (e.g. NeoTrellis).

Note: This is NOT for direct GPIO control of WS2812B LEDs. For direct control, you would need a different driver (currently not in libDaisy).

Usage Example:

import nimphea
import nimphea/dev/neopixel

var neopixel: NeoPixelI2C
var config: NeoPixelI2CConfig

# Configure defaults (I2C1, 400kHz, 16 LEDs)
config.transport_config.periph = I2C_1
config.transport_config.speed = I2C_400KHZ
config.transport_config.scl = D11()
config.transport_config.sda = D12()
config.numLEDs = 16

neopixel.init(config)

# Set first pixel to red
neopixel.setPixelColor(0, 255, 0, 0)
neopixel.show()

Types

NeoPixelI2C {.importcpp: "daisy::NeoPixelI2C", byref.} = object
Source   Edit  
NeoPixelI2CConfig {.importcpp: "daisy::NeoPixel<daisy::NeoPixelI2CTransport>::Config",
                    bycopy.} = object
  transport_config* {.importcpp: "transport_config".}: NeoPixelI2CTransportConfig
  type_flags* {.importcpp: "type".}: uint16
  numLEDs* {.importcpp: "numLEDs".}: uint16
  output_pin* {.importcpp: "output_pin".}: int8
Source   Edit  
NeoPixelI2CTransportConfig {.importcpp: "daisy::NeoPixelI2CTransport::Config",
                             bycopy.} = object
  periph* {.importcpp: "periph".}: I2CPeripheral
  speed* {.importcpp: "speed".}: I2CSpeed
  scl* {.importcpp: "scl".}: Pin
  sda* {.importcpp: "sda".}: Pin
  address* {.importcpp: "address".}: uint8
Source   Edit  
NeoPixelResult {.importcpp: "daisy::NeoPixel<daisy::NeoPixelI2CTransport>::Result",
                 size: 4.} = enum
  NEO_OK = 0, NEO_ERR = 1
Source   Edit  

Consts

NEO_GRB = 82'u16
Source   Edit  
NEO_KHZ400 = 0x0100'u16
Source   Edit  
NEO_KHZ800 = 0x0000'u16
Source   Edit  
NEO_RGB = 6'u16
Source   Edit  
NEO_RGBW = 198'u16
Source   Edit  

Procs

proc clear(this: var NeoPixelI2C) {.importcpp: "#.Clear()",
                                    header: "dev/neopixel.h", ...raises: [],
                                    tags: [], forbids: [].}
Source   Edit  
proc color(r, g, b, w: uint8): uint32 {.importcpp: "daisy::NeoPixel<daisy::NeoPixelI2CTransport>::Color(@)",
                                        header: "dev/neopixel.h", ...raises: [],
                                        tags: [], forbids: [].}
Source   Edit  
proc color(r, g, b: uint8): uint32 {.importcpp: "daisy::NeoPixel<daisy::NeoPixelI2CTransport>::Color(@)",
                                     header: "dev/neopixel.h", ...raises: [],
                                     tags: [], forbids: [].}
Source   Edit  
proc defaultConfig(): NeoPixelI2CConfig {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc getPixelColor(this: var NeoPixelI2C; n: uint16): uint32 {.
    importcpp: "#.GetPixelColor(@)", header: "dev/neopixel.h", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc init(this: var NeoPixelI2C; config: NeoPixelI2CConfig): NeoPixelResult {.
    importcpp: "#.Init(@)", header: "dev/neopixel.h", ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc newNeoPixelI2CConfig(): NeoPixelI2CConfig {.
    importcpp: "daisy::NeoPixel<daisy::NeoPixelI2CTransport>::Config()",
    constructor, header: "dev/neopixel.h", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc newNeoPixelI2CTransportConfig(): NeoPixelI2CTransportConfig {.
    importcpp: "daisy::NeoPixelI2CTransport::Config()", constructor,
    header: "dev/neopixel.h", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc numPixels(this: var NeoPixelI2C): uint16 {.importcpp: "#.NumPixels()",
    header: "dev/neopixel.h", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc setBrightness(this: var NeoPixelI2C; b: uint8) {.
    importcpp: "#.SetBrightness(@)", header: "dev/neopixel.h", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc setPixelColor(this: var NeoPixelI2C; n: uint16; color: uint32) {.
    importcpp: "#.SetPixelColor(@)", header: "dev/neopixel.h", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc setPixelColor(this: var NeoPixelI2C; n: uint16; r, g, b, w: uint8) {.
    importcpp: "#.SetPixelColor(@)", header: "dev/neopixel.h", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc setPixelColor(this: var NeoPixelI2C; n: uint16; r, g, b: uint8) {.
    importcpp: "#.SetPixelColor(@)", header: "dev/neopixel.h", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc show(this: var NeoPixelI2C) {.importcpp: "#.Show()",
                                   header: "dev/neopixel.h", ...raises: [],
                                   tags: [], forbids: [].}
Source   Edit