Project tutorial
DIY | RGB LED Shades Controlled By Arduino

DIY | RGB LED Shades Controlled By Arduino © GPL3+

Here is how you can build your own RGB LED Glasses very easily and cheap.

  • 1 comment
  • 13 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project

Today I'm going to teach you how you can build your own RGB LED Glasses very easily and cheap. This has always been one of my biggest dreams and it finally came true!

A huge shout out to NextPCB for sponsoring this project. They are a PCB manufacturer, China PCB manufacturer which is also capable of doing PCB assembly.

  • Arduino (I used the Nano, since it easily fits in your pocket).
  • A 3 pin male header.
  • A external power source like a power bank.
  • Some cables to connect the Shades to the external power source and Arduino.

You can easily order each part very cheap using the links provided.

Step 1: The creation of the PCB

In this video you can see how I designed the PCB. If you're not interested in seeing this part of the build feel free to skip to the next step.

Don't forget to leave a comment and/or a like. It really supports my channel!

Step 2: Let's start soldering!

If you've got all the components I suggest testing all the LED's and after that you can start soldering! If you've never soldered any SMD components before I highly suggest you look up a tutorial on internet! Let me know if you want me to do one as well.

Start by soldering all the capacitors into place since these take less skill to solder. The easiest way to do this is by tinning one pad, heating up the tinned pad and place the capacitor onto the molten tin. Once the tin has hardened you can solder the other side of the capacitor and the capacitor should be all good!

Now the harder part: the LED's. These take some soldering skill and you might break a few LED's during this process so make sure you've got some spare! You basically use the same technique as before, but this time you have to watch the polarity and you have to align them perfectly in order to get the best result.

I'd suggest watching my video to learn how to fully assemble the Shades.

Step 3: How to connect the shades to your Arduino

I've included a picture that shows how you have to connect the PCB to your Arduino.

  • S needs to be connected to Pin 3 on your Arduino.
  • GND needs to be connected to GND of your external power supply as well as GND on your Arduino.
  • VCC needs to be connected to the +5V of your external power supply.

Make sure not to witch polarity, because it will break the LEDs.

Step 4: About the software

This software, written by a good friend of mine, gives you the possibility to program your shades without actually writing any code.

First, you have to select the COM port of your Arduino. You can do so by clicking "Select Arduino". After that you can test your connection and whether all LED's are working by clicking on "Test Connection".

Now you can choose to either load in a image or draw something yourself.I have included some images that you can load in to give you some examples. Any large image will be scaled to fit the shades. Make sure you've got the brightness you desire and click "Send data". This will send the current colors to your shades and you're ready to impress some friends!

Last but not least, you can also generate a .ino file so you can wear your shades on the go! Just click the "Generate" button and upload the .ino to your Arduino.

All the buttons are described in the first image as well. All buttons without a note shouldn't be used.

Please note that the software is still under development and we are also working on a Bluetooth-compatible Android app!

Step 5: Don't forget to...

Don't forget to like and comment on my videos as well as subscribe to my channel. Thank you for your support!

Make sure to share your results if you've made the shades yourself. Also feel free to PM me any suggestions for future projects!

Last but certainly not least a HUGE thank you to NextPCB for sponsoring this project.

See you in my next project! Stay creative everyone!


Arduino CodeArduino
Code to manually control the LED's.
#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 68

byte pixelType = 0;
byte drawIn[4];
byte frameIn[NUM_LEDS*3];

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 3
//#define CLOCK_PIN 13

// The bluetooth module pins
#define RX_PIN 0
#define TX_PIN 1

// Define the array of leds

void setup() {
  // Uncomment/edit one of the following lines for your leds arrangement.
  // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);

  // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);

  // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  pinMode(TX_PIN, OUTPUT);
  pinMode(RX_PIN, INPUT);

void loop() {


void serialEvent() {
  pixelType =;

  switch (pixelType) {
    case 0:
    //draw mode
      while (!Serial.available()) {}
      Serial.readBytes(drawIn, 4);

      leds[drawIn[0]] = CRGB(drawIn[1], drawIn[2], drawIn[3]);;

    case 1:
      //clear mode
      for (int i = 0; i < NUM_LEDS; i++)
        leds[i] = CRGB::Black;

    case 2:
    //frame in mode
      while (!Serial.available()) {}
      Serial.readBytes(frameIn, (NUM_LEDS * 3));
      for (int i = 0; i < NUM_LEDS; i++)
        leds[i] = CRGB(frameIn[i * 3], frameIn[(i * 3) + 1], frameIn[(i * 3) + 2]);

    case 3:
      while (!Serial.available()) {}
      int brightnessLED =;

Software to control the shadesJava
Click the .bat to run the software.
No preview (download only).


Schematics of the PCB
Rgb led glasses%20(1)
PCB Design
Rgb led glasses


Similar projects you might like

Arduino controlled RGB LED strip

Project tutorial by Raphael Nestler and Danilo Bargen

  • 36 respects

How to Make a Supersize Thermometer with an RGB LED Strip

Project tutorial by Giovanni Carrera

  • 1 comment
  • 13 respects

LED Emergency Lights using WS2812 RGB LED Module

Project tutorial by bigboystoys13

  • 42 respects

Arduino Word Clock on 8x8 RGB LED Matrix

Project tutorial by Mirko Pavleski

  • 31 respects

RGB LED Ugly Holiday Sweater

Project tutorial by Mike Combs

  • 5 respects

Running a 32x64 RGB LED Panel with only an Arduino Nano

Project tutorial by CamelCaseName

  • 17 respects
Add projectSign up / Login