Home > Projects > Sound – Audio Projects > Arduino & TFT Screen Volume Mixer

Arduino & TFT Screen Volume Mixer

Summary of Arduino & TFT Screen Volume Mixer


This article details the construction of a physical Windows volume mixer featuring an 1.8-inch TFT screen, controlled via Arduino and a custom PC application called "deej." The project involves circuit assembly on a breadboard, coding in Arduino IDE, 3D modeling with Fusion 360, printing parts with an Ender 3, and final assembly using screws. The author highlights the ability to control thousands of applications, unlike competitors limited to five, and suggests future upgrades like PCB production and RGB lighting.

Parts used in the Physical Windows Volume Mixer:

  • Arduino Uno/Nano
  • 1.8 inch TFT screen (SPI)
  • USB A to USB B cable
  • Push buttons (x3)
  • Potentiometer
  • M3 screws (18 to 38 mm long)
  • Resistors

Before i start this AMAZING tutorial on how to build a physical windows volume mixer, i want to apologize for my bad written English. Now, let’s get started.

For this project I would like to build a sound mixer, but with a tft screen so i can see what I’m doing. I know there is a lot of projects like mine, but their can only control 5 apps while I can control thousand.

For this project you will need :

  1. Arduino Uno/Nano x1
  2. 1.8′ TFT screen that use SPI x1
  3. USB A to USB B cable x1
  4. Push button x3
  5. Potentiometer x1
  6. M3 screw (18 to 38 mm long) x4
  7. Some resistors

Like you see, you don’t need that much items. I bought almost all of them on “Aliexpress” and it cost me around 10 $.

Step 1: Make the Circuit

Make the Circuit

I started to build the circuit on a breadboard and test everything out. For this step, you just have to follow the schematics or follow the following instructions.

  • Plug the potentiometer
  1. Left pin connected to GND
  2. Right pin connected to 5V
  3. Center pin connected to A0
  • Plug the button
  1. One pin is connected to 5V
  2. The second pin as to be connected to a digital input
  3. There is only 2 interrupt pin on Arduino Uno so I have to connect the third button on DigitalPin7.
  • Plug the screen
  1. GND connected to GND
  2. VDD connected to 5V
  3. SCL connected to Digital 13
  4. SDA connected to Digital 11
  5. RST connected to Digital 9
  6. DC connected to Digital 8
  7. CS connected to Digital 10
  8. BLK connected to 3.3V

/!\ You have to add pull up/down resistor on all buttons to use it correctly /!\

To do it just plug a high value resistor connected to the DigitalPin and to ground at the same time and its done.

Step 2: The Code : the Worst Part of All Time

Well obviously some people would love to code but, I don’t.

All the code has been written by hand on Arduino IDE. As I’m French all the variable names are written in French but don’t panic, with the help of google translate you could understand it easily.

Itis a little messy but I will show you what to change if you want to custom it.

  1. First thing you can change is the time before sleep mode. There is a variable on line 14 which is called TEMPS_VEILLE” . By default the time is 20 seconds.
  2. Second thing is time before everything goes back to the main menu. You can change it by changing on line 16 the variable called TEMPS_RETOUR_MENU_PRINCIPAL”
  3. Last but not least on line 18 you can change the sound volume when the device will be plug. By default its at 50%. The variable name is “INITIAL_SON”

Now the data come out from your Arduino but you have to receive it on your computer. To do this job I used deej.

Deej is a nicely premade program that run on windows/Linux. For those who own an apple devices, I’m sorry but it will not work.

To use it just download it and launch it by using admin right. Then you will need to change the config.yaml by the one I will give you.

On games menu, if your games doesn’t work just add it under all the games names after the number 14 :

Step 3: 3D Modeling

Well this was my first experiences with 3d modeling but I thing the result is quite good. I used fusion 360 because the software was totally free for students.

In this part you have a lot of thing to do, unless you need to make your own design.

If you want to do it by yourself, don’t forgot to add some air outlet to fresh up all the components.

Step 4: 3D Printing

For this part you will need a 3D printer or to buy all the part online.

I personally own a ender 3 a little customized.

I sliced all the files with “cura slicer” … I tried to use “ideamaker” but for the moment I’m not used to it yet .

Now lets print !

it took me 15 hours to print the upper part and 6 hours to print the lower part .

I printed it at 210° degree and the bed was at 60° . Due to my bad bed leveling skills I had a little bit of warping and some problem with support . If you want to avoid this problem just level your bed carefully and use tree support.

Step 5: Assembly

Now the only thing you have to do is assemble everything together by using 4 M3 screw. Be careful, do nut put the head of the screw into the hole. The screw head will be use as a stand.

Depending on the quality of the print, you may have to use some tools.

After the assembly, make sure that the button is clicky enough.

Step 6: Customize Your Creation !

Now Its time to make it more personal. In my case, i just want to add some stickers but you can do whatever you want.

Step 7: Update/Future Update

Well the sound mixer work great but I would like to upgrade it a little.

First thing I want to do is make a PCB to look more professional. To do that I used easyEda and I bought it on JLCPCBAs I don’t want to solder all the tiny component I use jclcpb assembly services. It cost me around 15 $ but if you want to do it by yourself it will cost you around 6$

In the future, I will do some upgrade like this one :

  1. Make the code a lot more customizable
  2. Rework on 3D model to add some RGB light
  3. I don’t have others idea

Source: Arduino & TFT Screen Volume Mixer

Quick Solutions to Questions related to Physical Windows Volume Mixer:

  • How many applications can this device control compared to similar projects?
    This device can control thousands of apps, whereas other similar projects are limited to controlling only 5 apps.
  • Can I use Apple devices with the deej software?
    No, the deej program runs on Windows and Linux but will not work on Apple devices.
  • Which pins should be used for the potentiometer connections?
    The left pin connects to GND, the right pin to 5V, and the center pin to Analog Input A0.
  • What is the default sleep mode time before the screen turns off?
    The default time before entering sleep mode is 20 seconds.
  • How do I add games that do not appear in the list?
    You must add the game names under all existing game names after the number 14 in the config.yaml file.
  • Why are pull-up or pull-down resistors necessary for the buttons?
    Resistors are required to connect the DigitalPin to ground simultaneously to ensure the buttons function correctly.
  • What temperature settings were used for the 3D printer bed and nozzle?
    The nozzle was set to 210 degrees and the bed to 60 degrees.
  • How should the M3 screw heads be positioned during assembly?
    The screw heads should not be put into the hole; they must remain outside to act as a stand.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top