LUA is one of the programming languages used in the ESP8266 boards. It is the standard language for the NodeMCU boards.
So as I had to learn so many languages in a short time I struggled a bit with it.
I wanted to control a bunch of Neopixels (WS2812 leds) with my ESP-8266-01. Luckily enough there is a driver incorporated in the Lua language. The drivers description is as follows:
Send the RGB Data in 8bits to WS2812
ws2812.writergb(pin, string.char(R1,G1,B1(,R2,G2,B2...)) )
pin = Supported all the PINs(0,1,2...)
R1 = The first WS2812 though the line's Red Channel's Parameters（0-255）
G1 = The first WS2812 though the line's Green Channel's Parameters（0-255）
B1 = The first WS2812 though the line's Blue Channel's Parameters（0-255）
... You can connect a lot of WS2812...
R2,G2,B2 is the next WS2812's Red, Green and Blue Channel's Parameters
Looks easy enough. So what I did is I send a snippet to the ESP8266-01 looking like this:
ws2812.writergb(3, string.char(120, 25, 80):rep(7))
And all 7 of my Neopixels displayed a nice white/purplisch color.
Note that the first I/O port of the ESP8266-01 being I/O 0 is attached to pin 3......
But that is not what I wanted. I wanted to adress all Neopixels seperately. I wanted each WS2812 to have a different colour.
That made things a bit more complicated.
The syntax for adressing all 7 pixels is:
This looks easy and that is right. However programming it is a bit more complicated.
Here is my solution.
I start with defining the colors.
Note that the higher the values, the brighter the Neopixels will be. You can make as many different color combinations as you want.
I made an Array which is as large as the number of Neopixels I had attached. In this case 7 pieces. And then I filled the array with the RGB values: first 3 with blue (b), the next one red (r) and the last 3 with green (g).
And the actual line to set the pixels is:
So this makes it very easy to adress the individual Neopixels which makes it easy to control them in various projects.
Till next time.