The ws2812 is undoubtedly pretty popular in the tech industry. It is also highly utilized by developers who wish to work with led strips in their projects. These strips have become super popular because of a couple of reasons which include:
- Their low driving voltage
- High brightness
- Their impressive color consistency
The ws2812b is an improved version of the above-named ws2812 led strip. The ws2812b addressable led strip utilizes intelligence to control its LED light source. Its RGB and control chips are directly integrated onto a 5050 RGB LED. Furthermore, every addressable LED in the ws2812b has an integrated driver. The driver lets you manipulate the color and brightness of every LED in the strip individually. That means that two LED positions right next to each other on a ws2812b LED strip can bear different brightness and color. Due to this functionality, we can easily create stunning and pretty complex effects.
The most recent model in this incredibly popular series of light-emitting diode strips is the ws2813. The ws2813 individually addressable LED strip is an improved version of its predecessor, ws2812b. The ws2813 carries forward most features of the ws2812b, for example:
- Its RGB chip and control circuit connects onto a 5050 RGB light-emitting diode
- Each light-emitting diode is individually controlled
However, as an improved version of the ws2812b, which features make the ws2813 different compared to the ws2812b? Well, there is only one way to find out. Hence follow along and let us unravel this great tech mystery.
ws2812b vs ws2813
The major difference between ws2812b & ws2813

The one key difference that tells these two led strips apart is their LED bypassing property. One major advantage that ws2813 have over its predecessor ws2812b is that; it operates using dual-signal cables. The cables also have signal break-point for continuous transmission. What that means is that even when an LED located in the middle of the strip burns, it does not disrupt the circuit. The remaining LEDs still receive power and light up normally as long as no other adjacent LED gets broken. As for the ws2812b, if one LED gets burnt or broken, then the circuit is ultimately broken. All other LEDs found after the burnt or broken LED in the strip do not light up.
The reason behind this difference is that the ws2812b features a single data signal. Therefore, a broken or burnt light-emitting diode will prevent the reaming diode found after it in the strip from working. On the other hand, the ws2813 utilizes two data signals; this means that a pixel failure in the LED chain will not hinder signal transfer. However, if two neighboring LEDs are burnt or broken, this will hamper signal transfer. One spoilt Led in the chains does not cause severe damage; you can still work with the remaining LED while thinking about repair methods.
Due to this simple difference, the ws2813 stands out as the most reliable LED strip among the two.
The Frequency difference between the ws2812b and the ws2813
The ws2813 LED strips bears another advantage over its predecessor, the ws2812b, when it comes to frequency rates. It has a higher frequency refresh rate of two thousand hertz, while its predecessor, the ws2812b, has a pretty low frequency of four hundred hertz.
The ws2813 hence outputs an exceptional display effect having little to no flickering appearing.
Reset time difference between ws2812b & ws2813
The ws2813 bears a 250 μs reset time, enabling it to work better at low frequencies and using microcontrollers that are not expensive.
Can the ws2812b & ws2813 utilize similar controllers?
Well, the answer to this question is yes. You can utilize similar controllers for both ws2812b & ws2813 LED strips.
Are you new to utilizing LED strips? If your answer is yes, then here is a tip that you might not have yet noted. See, when you connect your LED strip onto a power supplying unit, the LEDs do not simply light up immediately. Also, unlike other typical passive LEDs, getting individually addressable LED strips to pulse color is not simple. To achieve this, you have to connect your strip onto a controller. Your LEDs will then receive valid commands from this controller and light up accordingly.
The controllers and ICs
LED controllers include:
Controllers utilizes whatever you have programmed onto them to “tell” each LED, individually:
– The brightness,
– Color, and also
– The amount of time that they should assume this instruction.
You can hence play along with each individual LED to achieve beautiful patterns.
ws2812b LEDs contain an integrated circuit built into each LED. What are these ICs for? You might wonder? Well they enable communication through an interface known as one-wire. What this means is that you can manipulate many light-emitting diodes using one pin found on the controller. Individually addressable pins have three pins, namely:
- Power pin – +5V
- Ground pin(GND)
- Data pin (Dout and Din)
The ground and power pins supply energy onto your LED strip. On the other hand, the data pin facilitates effective communication with your controller.
For LED strips that require an input volt of 5V, you should have no issue controlling it using the 5V power pin found on Arduino boards. However, suppose you wish to manage your LED strip using an ESP8266 or a raspberry pi that transmits signals at only 3.3V. In that case, you have to convert the default 3.3v to a 5V signal by utilizing a logic-level converter module. If you do not carry out this conversion, then the chances are that your Led strip will not light up at all.
Do both ws2813 and ws2812b utilize similar libraries?
Well, yes. Both ws2813 and ws2812b utilize similar libraries. To control these two strips to generate crazy LED lighting effects, you must download libraries first. These libraries help control each Led to create impressive patterns. However, these libraries vary according to the controller in use. You can download most of this libraries freely from the internet.
- For ESP8266 and Arduino, you can utilize the following libraries:
- fastLED
- Adafruit_Neopixel
- WS2812FX
- For raspberry pi, you can utilize the following libraries:
- Rpi_ws281x python libraries
Does the ws2812b utilize a different power supply unit compared to the ws2813?
The ws2812b and the ws2813 LED strips draws in about sixty milliAmperes at maximum brightness. Therefore power supply units to these two LED strips are interchangeable. However, the power required to run your strip will vary depending upon the number of LEDs functioning on your strip. A higher number results in higher power consumption and vice versa.
Choosing a power supply unit that matches your strip’s power requirement for optimal LED brightness is crucial. Because each light-emitting diode draws in about sixty milliAmperes at maximum brightness. You can easily calculate your strips power requirement as follows:
The number of LEDs found on your strip x 0.06 = rated power supply in Amperes at max brightness.
If you are operating your strip on a USB port that supplies 0.9A, you can easily calculate the amount of LED that you can power up with this output as follows:
0.9/0.06 = 15 light-emitting diodes
Ws2812b & ws2813 Prices comparison

The ws2813 is obviously more expensive than its predecessor, which comes without surprise. Through research, we found out that you can attain a ws2813 LED strip at around twenty percent more than its predecessor, the ws2812b. The price gap between these two LED strips is not large. Even though the ws2813 has been in the market for some time now, it is slowly gaining more popularity. With time, it might end up replacing its predecessor.
For beginners looking to purchase ws2183 LED strips, we recommend you buy the waterproof ws2813 LED strip. These LED strips are modular, ready to use, and open-source. In terms of electronic assembly, these LED strips utilize a building block approach which is pretty effective. The waterproof ws2813 LED strips eliminate the complicated learning procedure of using a breadboard in your project. Now you can easily build your project without having to go through tedious processes. It is also waterproof; hence, you can rest easy knowing that water will not damage your project. The ws2812b has all these advantages except for the waterproof part. However, they are also pretty cheap and available worldwide. And because they have been in the market for a while, you can find lots of documentation on them. Due to these reasons, in this article, we shall go through a ws2812b Arduino project and not a ws2813.
Ws2812B Arduino Project
In this incredible project, we shall learn about how to individually control addressable LEDs using Arduino.
An Overview of the Project
In this project, we shall cover the following topics:
- How the ws2812b LED strip works
- WS2812b LED strip and Arduino project examples
Here is a briefing of the main ws2812b LED strip and Arduino project example that we will look at later on:
- It is all about a smart coffee table that can detect when you place an object on top of it and the exact position that placed the object. It utilizes ws2812b LED strips to light up the object’s position and an infrared proximity sensor to detect when and where the object is on the table.
Follow along and let us help you develop your first ws2812b LED strip and Arduino project.
How does the ws2812b LED Strip Work
Before moving on to the actual project, let us first look at how the ws2812b LED strip functions. The ws2812b LED has its diver integrated circuit integrated onto the 5050 RGB LEDs. Depending on the RGB’s intensity (red, green, and blue), we can simulate any color to create impressive color effects.
You can control the entire LED strip using one pin from the Arduino board. See, each LED bears three connectors as discussed above, two for powering purposes and one for data transmission. The Dout (data output) pad of one (previous) LED is connects onto the Din (data input) of its next (adjacent) LED. Data flow direction in this set up moves in a forward direction. Hence, you can cut your strip into whichever length you wish, and it will still function properly.
In terms of power, each component of the RGB takes in about 20mA of energy while emitting maximum brightness. That means that in total, each 5050 RGB LED unit requires 60mA to work correctly.
You should note that when Arduino boards power up via a USB port, the 5V pin handles only 400mA. Also, when they power up a barrel power connector, the 5V pin only handles about 900mA.
Therefore, if you utilize many LEDs and find that the current they draw exceeds the above-stated limits. It helps if you employ a separate power supply of 5V. If such a scenario occurs, you must connect the two GND (ground) lines to each other. In addition, you should utilize a resistor of around three ohms between the LED strip data pin and your Arduino board. The purpose of this is to reduce line noise. Finally, applying a capacitor of about 100 uF across the GND and the 5V helps smoothen out the power supply.
WS2812B and Arduino Project Example
Example 1
Our first example will involve the use of:
– Twenty LEDs,
– A long strip, which connects onto an Arduino board but through a three hundred and thirty ohms resistor.
The LEDs will gain energy from a 5v power supply. As for programming, we shall be utilizing FastLED libraries.
Our first example is pretty straightforward and well documented. You can therefore try it out before advancing on to more complex examples.
Example 1 components
- WS2812B LED strip
- Arduino board
- 330 ohms resistor
- A DC power supply of 6A and 5V
Connect the power supply, Arduino board and ws2812b as stated above then insert the following code into the Arduino board:
#include <FastLED.h>
#define NUM_LED 20
#define LED_PIN 7
CRGB leds[num_LEDS];
Void setup (){
FastLED.addLeds< ws2812, LED_PIN, GRB > (leds, NUM_LEDS);
}
Void loop(){
Leds [0] = CRGB (255, 0, 0);
FastLED.show();
//delay time
Delay(500);
//code for LED 1
Leds[1] = CRGB(0, 255, 0);
FastLED.show();
//delay time
Delay (500);
//code for LED 2
Leds[2] = CRGB (0, 0, 255);
//Library call
FastLED.show();
//delay time
Delay(500);
//code for LED 5
Leds[5] = CRGB (150, 0, 255);
//Library call
FastLED.show();
//delay time
Delay(500);
//code for LED 9
Leds[9] = CRGB (255, 200, 20);
//Library call
FastLED.show();
//delay time
Delay(500);
//code for LED 14
Leds[14] = CRGB (85, 60, 180);
//Library call
FastLED.show();
//delay time
Delay(500);
//code for LED 19
Leds[19] = CRGB (50, 255, 20);
//Library call
FastLED.show();
//delay time
Delay(500);
}
Code description
In the first portion of this program, we are essentially performing the following operations:
- Instructing the controller to include FastLED libraries onto the program
- Defining the Pins to which our LED strip data pin connects
- Describing the number of light-emitting diodes available on the strip
- Defining the array of CRGB
We then fall onto the setup section, where we carry out the following operations:
- Initialize FastLed using the parameters defined above
The main loop:
- In this loop, we can manipulate our LED strip in whichever way we want. Using RGB, you can adjust the color of any LED found on your strip based upon three parameters:
- Red
- Green
- Blue
For the changes made to actually work, you have to call the FastLed.show() function.
Example 2
By utilizing simple “for” loops, we can generate incredible animations as follows:
Paste this code onto your Arduino board in place of the first program. Do not make any adjustments to the connections:
#include <FastLED.h> //call to the FastLED libraries
#define LED_PIN 7 // connected pin
#define NUM_LEDS 20 // available LEDs
CRGB leds[NUM_LEDS];
Void setup (){
FastLED.addleds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
Void loop(){ //main loop
For (int I = 0; i <= 19; i++){ // for loop
Leds[i] = CRGB (0, 0, 255); //conditions for each led as the program increments
FastLED.show(); // call to the FastLED function
Delay(40); //delay timer
} for (int i = 19; i>=0; i–) { // second for loop
leds[i] = CRGB (255, 0, 0); //conditions for decrementing program
FastLED.show(); // second call to FastLed function
Delay(40); //timer delay
}
}
Code description
In the first “for” loop, we instruct the controller to carry out the following instructions:
- Loop light each of the 20 LEDs in the color blue.
- In this loop, the LEDs light up from the first LED to the last
What happens in the second “for” loop?
- In the second for loop, we still light up the LED strip in a loop light manner, but this time in reverse order. That means that we loop light from the last LED moving downwards to the first LED.
- The LED color also changes from blue to red, bringing about an incredible animation that is just mesmerizing.
FastLED libraries feature a lot of functions that you can utilize to create interesting light shows and animations.
And now we are on to our ws2812 and Arduino project examples main event, the smart coffee table.
Smart Coffee Table using ws2812 LED strips and an Arduino Board
Project components
- WS2812 LED strip
- IR proximity sensor
- HC – 05 Bluetooth module
- Arduino board
- Power supply (5V, 6A)
It would help if you also had a custom table that you will utilize for this project. The table should have a transparent top; hence using glass for the top portion should work. It should also have split sections inside to map out the weighted item area. With this in place, you can carry out connections as follows.
The table should contain:
– 45 addressable light-emitting diodes,
– an HC-Bluetooth module,
– and a 45 infrared proximity sensor
All of them connected to an Arduino board (we recommend utilizing an Arduino mega board for this project). A 6A 5V power supply unit should power the circuit. Next, connect the LED in a nine-by-five matrix spread out across the coffee table on the bottom layer of the table glass top. Arranging them in this format should help map out an item placed on top of the table.
Code example
Once you have this connection in place, you can copy and paste this program onto your Arduino and then execute it:
#include <FastLED.h> //call to the FastLED libraries
#define LED_PIN 2 //connected pin
#define NUM_LEDS 45 // available LEDs
//we then follow the color
#define COLOR_ORDER GRB // defines the color order
CRGB leds[NUM_LEDS];
Void setup(){ //setup function
FastLED.addLeds <ws2812, LED_PIN, COLOR_ORDER > (leds, NUM_LEDS);
FastLED.setBrightness(brightness);
//set all 45 proximity sensor pins as inputs, from the digital pin three to pin 48
For (int pinNo = 0 + 3; pinNo <= 45 + 3; pinNo++) {
PinMode(pinNo, INPUT);
}
}
Void loop () { // loop function
For (int pinNO = 0; pinNo <= NUM_LEDs – 1; pinNo++) {
Leds[pinNo] = CRGB (0, 255, 0); // use this code to set the 45 LEDs to light up using color green
//however, since we only want the LEDs to light up on the position that that hold the place object on the //table, you have to set some conditions
If (digitalRead (pinNo + 3) == LOW) {
Leds[pinNo] = CRGB (0, 0, 255); //set reactive light emitting diode to blue
}
}
FastLED.show(); //updates the LEDs
//delay timer
Delay(20);
}
Code description
We, first of all, have to define basic parameters and then set the forty-five proximity sensor pins to act as inputs.
The first “for” loop:
We set the light-emitting diodes to emit one particular color (in this case, we choose green, you can change this color for a more customized feel).
The second “for” loop:
The second for loop hold all the magic. Here is where we check on whether the proximity sensor has detected any object placed on top of the table. When the proximity sensor detects an object, it returns a LOW logic state. When the Arduino board gets this input, it updates the colors of the affected LED. They then light up using a particularly defined color (in this case, the controller changes the LED’s color to blue.
We use the FastLED.show() function at the end of the program, which automatically updates the light-emitting diodes.
To make this project even more fun, you can add on more lines of code to operate the table using:
- An android app – utilizing an android app, you get crazy functionalities such as the ability to change the led colors to create a cool environment
- Bluetooth
And that is how you can tackle a ws2812b and Arduino project.
Conclusion
Led strips play a significant role in technology. We find them utilized in so many sectors in pretty customized manners. Well, using the knowledge acquired from this article, you can generate your own led display for fun or for commercial purposes. We have also talked about two of the most popular LED strips in the market today, the ws2182b and the ws2813 LED strips. These LED strips are pretty effective. Even though they have some differences, they still function outstandingly.