Pixelprojektor Firmware
=====================
## About
![](images/20170330_003119.jpg)

## Features
### LED 8x8 Field
|Topic    |Descriptions  |settable   |Values   |
|---------|--------------|:---------:|---------|
|`device_id`/strip/pixel/|Range property from 0 - (number of pixels - 1)|yes|Color as uint32_t see [Color](#color)|
|`device_id`/strip/color|Range property to set the effects colors 1 & 2 see: [effect colors](#effect-colors)|yes|Color as uint32_t see [Color](#color)|
|`device_id`/strip/brightness|Sets the brightness of the pixel strip|yes|possible values: 0 - 255|
|`device_id`/strip/effect|Set effect|yes|see: [effects](#effects)|
|`device_id`/strip/clear|Clears the pixels strip|yes|any value is possible|
|`device_id`/strip/length|Set the strip length|yes|Possible values: 0 - length|
|`device_id`/strip/icon|Show the icon represented by given letter|yes|Possible values: a - Z|

## Color
To convert RGB value use the following bash code:
```shell
function rgbToColor {   
  echo $(( $(($1<<16)) + $(($2<<8)) + $(($3))  ));
}

function colorToRGB {
  echo "Red:    $(($1>>16&0xff))"
  echo "Green:  $(($1>>8&0xff))"
  echo "Blue:   $(($1&0xff))"
}

```
#### Example
RGB Value to color uint32_t
```shell
  bash$ rgbToColor 155 230 32
  10216992
  bash$
```
uint32_t to RGB values
```shell
  bash$ colorToRGB 10216992
  Red:    155
  Green:  230
  Blue:   32
  bash$
```

## Effects
* **larsonspiral**
Shows the moving larson scanner eye known form *Battlestar Galactica* and *Knight Rider*. The used effect color can be specified by *color_0*
* **randomscanner**
This is the same scanner then the scanner above but uses an alternating color pattern
* **larsonspiral**
This is the same scanner then the randomscanner above but uses a spiral pattern
* **rainbowcycle**
Shows a cycling rainbown on the LED strip
* **theaterchase**
Shows an color chasing LED strip.
You can specify the color by set *color_0* and *color_1*  
* **fade**
Fades from effect color_0 to effect_color_1
* **randomfade**
Fades thru an alternating color pattern on all pixels with the same color.
* **randomfade|40**
Fades thru an alternating color pattern on all pixels with different color.
* **random**
Shows random static colors on all pixels differently.
* **smooth**
Smooth chainging effect.
* **plasma**
The all famous plasma effect known from many 8bit-Demos from the '80s and '90s.
* **none**
Stop all effects

## Effect colors
You can set to different effect colors
* *color_0* (default R: 255, G: 0  B: 0)
* *color_1* (default R: 0, G: 0  B: 255)

The effect color has to be set after the effect.
###### Example:
1. `homie/device_id/strip/effect/set -m "fade"`
2. `homie/device_id/strip/color_0/set -m "255"`
3. `homie/device_id/strip/color_1/set -m "10216992"`

##### color_0
This color will be used for the following effects:
* *scanner*
* *theaterchase*
* *fade*

##### color_1
This color will be used for the following effects:
* *theaterchase*
* *fade*
