top of page

Office Sound Level Meter

Wall "art" that turns office noise into light.

Working from home I noticed that the wall behind me (that happens to be in every video call as well) was pretty barren and needed something.  I also realized that I had a habit of talking on mute and it dawned on me that I should create something that's equal parts nerdy and interesting while also making it easy for others to notice that I was talking while on mute.  Not gonna' lie, it also made it easy to point out to the kids how loud they were being when were sharing an office space for a school-year.



Expected Functionality

  • Sound Level Meter to measure noise levels

  • Screen to:

    • show current sound level

    • show calibration percentage

    • show adjusted min and max db levels on the display

  • 256 LED Matrix to visually display sound level

  • 4x4 membrane to:

    • calibrate

    • change color scheme

    • turn off backlight of LCD screen

    • Adjust min and max db levels on the display

  • Ability to store settings so they don't reset (EEPROM capable board)

  • Mountable on the wall

Expected Functionality



Obviously not an all-inclusive list, but enough to give you an idea on the parts list if you had any intention of replicating something similar.

  • Arduino Mega

  • Breadboard

  • Gravity Analog Sound Sensor

  • Addressable LED Matrix (32x8)

  • Membrane Switch Module (4x4)

  • 1000µF electrolytic capacitor

  • LCD Panel (20x4 - L2C)

  • 220Ω resistor

  • 5V 15A AC to DC power supply

  • Raspberry Pi/Arduino/Breadboard (RAB) holder

  • A bunch of 22 AWG hook-up wire

Full code can be found here:

Things I Learned

  • A display with the L2C interface is like 1000x easier than working with and wiring a standard LCD display.  A standard display requires 12ish wires and something like 7 pins on your Arduino, while the L2C interface only needs four total wires (takes two I/O pins and two more for power and ground).

  • Working with a matrix isn't hard per se, but pixel numbering/order on the display can get confusing.  What I mean by that is this is that LED 0 is located in position [0][0] (These are the [x,y] coordinates of the LEDs on the physical matrix), and LED 7 is in position [0][7], that is straightforward right so far.  Now, you'd assume that LED 8 would be in position [1][0] (one row up, starting left to right), but it's actually wired in a zig-zag pattern so LED 8 is actually in position [1][7].  This then repeats in a way that I never had an easy way to translate a physical LED into the correct LED number without creating a lookup that'll tell me position [1][7] is LED 8.  So, I created that lookup.

  • I didn't realize any boards were EEPROM capable, but apparently the MEGAs are.  For those unfamiliar with what an EEPROM is, just think of it as non-volatile memory that you can set and access.

  • Putting a variably sized peak (rounder at low decibels and more 'spiked' at high decibels) to the sound meter was way more challenging to code than I assumed in my head during design.

  • I had to learn a lot about color blending in order to code up the effect to blend the color set for the top of the matrix and the bottom of the matrix.  The poorly named method named recursion() is what I came up with to handle the color blending.

Things I Learned




bottom of page