The rgb LED chain
The LED employed on the LoLin RGB LED card is very different from the one we used on the CPU card. In fact, the card uses cascadable, addressable WS2812B color LED. rgb stands for red, blue, green. There are 3 very small colored LEDs with red, green and blue colors and by modifying the intensity of each LED different colors can be created. If all color components have the same intensity, the color observed will be white. If you want to know the details of how the WS282B works, here is its
datasheet.
Communicating with the WS2812B can be quite complex because the communication timing must be strictly respected. Fortunately, the authors of MicroPython supply a driver which makes usage of the WS2812B a child's game. The driver is a MicroPython class called
NeoPixel. Here is a circuit diagram showing how the WS2812B LEDs are cascaded.
Of course, on the rgb LED shield there are seven and not 3 cascaded LEDs. In fact, there are LED chains with several hundreds of LEDs cascaded this way.
This is how the board looks like:
The board is jumpered to use D0 or GPIO 26 for its communication with the ESP32. All the NeoPixel driver needs to know is the number of LEDs there are in the ring and which GPIO line to use for communication. The red green and blue color components are given as 8 bit values and can therefore range from 0 (off) to 255 (maximum brightness),
Be careful: The WS2812B is extremely bright, and you may even damage your eyes when looking straight into the LED, set to maximum brightness. I therefore recommend not to set brightness values higher than 32.
from machine import Pin
from neopixel import NeoPixel
NO_OF_LEDS = 7
pin = Pin(26,Pin.OUT) # GPIO 26 is used for communication with the WS2812B
ws2812b = NeoPixel(pin,NO_OF_LEDS)
ws2812b[0] = (32,0,0) # Only the red color component is set. The LED number zero will light up in red
ws2812b.write() # write the color to the LED
First, do the exercises of
ExerciseSheets#FourthSession, then we will terminate the workshop with
a small project
--
Uli Raich - 2022-10-16
Comments