Project tutorial
RGB Mouse Pad

RGB Mouse Pad © CC BY-NC-SA

RGB mouse pads available in the market are expensive. So, I decided to make a cheap RGB mouse pad using Arduino and WS2812 RGB LED Strip.

  • 9 respects

Components and supplies

About this project

Make a cheap RGB Mouse Pad

Recently, I came across WS2812 Individually Addressable RGB LEDs This means that every single LED can be controlled separately and programmed to output different colors instead of the standard RGB strip where all the LEDs light up the same.

RGB mouse pads available in the market are very expensive. So, I decided to make a cheap RGB mouse pad using Arduino and WS2812 RGB LED Strip.


The dimensions are:

  • 30 x 20 cm for 10mm sheet
  • 29 x 19 cm for 3mm sheet
  • Inner dimensions for the 10mm sheet are shown in the picture

3mm sheet will be placed on top of the 10mm sheet as shown. This will leave a 5mm border from all the sides which makes the light visible from the top. Trust me, it will look awesome!

Cutting the sheets

Cutting the outer dimensions is relatively easy. Just score along the lines using an acrylic cutter or any sharp object. Score the acrylic several more times along the same line, then place the acrylic on the edge of the table and use light, quick pressure to snap the piece in two.

Cutting the inner dimensions is tricky if you don't have the proper tools which is the case for me. I did the painstaking job of drilling holes along the lines. Then I completed the cuts using a hacksaw. This method leaves pointed edges. Using a file, flat smooth out the edges. It doesn't need to be perfectly flat and level and it won't be visible and light would pass through it anyway. Just make sure that it is flat enough so that LED strip can sit flush with the sheet.

Putting them together

Peel off the protective paper. Lightly sand the surface of the 10mm acrylic sheet using fine grit sandpaper. This diffuses the light and lights up the border which we kept instead of just passing straight through the acrylic.

Place the two sheets one above the other keeping a margin of 5mm from all sides. Using super glue, stick the two sheets together. Just put a few drops of glue at the joints and the glue seeps in automatically. Do the same for all 4 corners.

Stick Neoprene fabric (mostly used for making mouse pads) on the top of 3mm acrylic sheet. This makes the mouse move smoothly and also hide all the electronics and imperfections below it. I didn't find any at the time of making it so I used a black card paper instead. Works fine but will be replacing it after a while.

Drill a 4mm hole all the way through the sheet for the USB cable to pass. The hole diameter may vary depending upon the thickness of your cable.

Time for Electronics!

With the mechanical build out of the way, its time for some electronics.

Place the required length of the LED strip as shown in the picture. Hold them temporarily using some tape. Now, using super glue, stick all the LEDs to the acrylic sheet.

Grab the USB cable and cut off one end. There will be four wires inside the cable. As we will be using USB just for powering the Arduino we are interested in Red(+) and Black(-) wire. Snip off the remaining two wires as we won't be needing them. Pull the cable through the hole which we drilled.

Make the connections as shown in the schematic.

Time to Code

Download the code and open it using Arduino IDE. Before you upload,

  • The data pin of the strip can be connected to any of the digital pins. I have chosen pin 4. Make the necessary changes in the code if you use another pin.
  • Enter the number of LEDs in the strip.

Hit upload and enjoy your cheap but awesome RGB gaming mouse pad!

Thank you for sticking till the end. Hope you all love this project. Let me know if you make one for yourself. Subscribe to my YouTube channelfor more upcoming projects. Thanks once again!


Rainbow EffectArduino
Before you upload, make sure that the number of LEDs and Data pin number is correct.
#include "FastLED.h"

#define PIN 4
#define NUM_LEDS 22  //Number of LEDs in the strip

CRGBArray<NUM_LEDS> leds;
uint8_t hue[NUM_LEDS];

void setup(){
  FastLED.addLeds<NEOPIXEL, PIN>(leds, NUM_LEDS);
  for(int i = 0; i< NUM_LEDS; i++){
    hue[i] = 255/NUM_LEDS * i;

  //Random RGB Sparkle Animation
  for(int j = 0; j < 100 ; j++){
    int dot = random(0,23); 
    int hue = random(0,256);
    leds[dot] = CHSV(hue,255,175);;
    leds[dot] = CRGB::Black;

void loop(){
  //Rainbow Effect
  for(int i = 0; i< NUM_LEDS; i++){
    leds[i] = CHSV(hue[i]++, 255, 175);


Schematic smc7vyex95


Similar projects you might like

Decorative RGB Lights Using an Arduino

Project tutorial by BnBe Club

  • 8 respects

Original Xbox RGB Ring Mod | Arduino

Project tutorial by Michael Darby - 314Reactor

  • 5 respects

Animated RGB Wall Clock

Project tutorial by TheTNR

  • 47 respects

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

Project tutorial by CamelCaseName

  • 17 respects

RGB Lightsaber | Arduino Project

Project tutorial by Michael Darby - 314Reactor

  • 19 respects

RGB Matrix Audio Visualizer with Arduino

Project tutorial by Sridhar Rajagopal

  • 33 respects
Add projectSign up / Login