# Ping Pong LED Clock instalation issue

**URL:** <https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291>\
**Category:** Usermods\
**Created:** [March 31, 2025, 5:07pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291 "2025-03-31T17:07:57Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [March 31, 2025, 5:07pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/1 "2025-03-31T17:07:57Z")

</div>

Some time ago (actually it was probably two years ago) I built a watch from ping pong balls. Following the guide here:

> **[Ping Pong Ball LED Clock](https://www.instructables.com/Ping-Pong-Ball-LED-Clock/)**
>
> Ping Pong Ball LED Clock: This awesome LED clock is a quite simple project that nearly everyone can make. It can function as a Clock, can be LED decoration, or it can just be a nice piece of decoration when turned off.
> Why I made this...

The watch was lying around for a long time gathering dust because I didn’t have time to write any interesting and functional software (automatic dimming, displaying effects after presence detection, energy saving modes, time synchronization with the Internet, etc.)

Fortunately, I found a mod for the WLED software that allows you to control such a clock.

> **[WLED/usermods/usermod\_v2\_ping\_pong\_clock at main · wled/WLED](https://github.com/wled/WLED/tree/main/usermods/usermod_v2_ping_pong_clock)**
>
> Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi! - wled/WLED

In the first step, I compiled the version with the mod using this German suspicious website:

> **[WLED Online compiler](https://wled-compile.github.io/?lang=en)**

Generally, something worked, unfortunately the numbers do not display correctly. The author of the mod emphasizes that it was made according to the instructions, but there was a discrepancy somewhere and the numbers were different. It’s a pity that the mod documentation is so lacking in content.

Anyway, to run the watch I have to change the mapping of the balls and numbers. It’s actually not difficult. The problem is compiling with this mod. Since the German website works, I assume that the mod itself is written correctly.

In the first step, I installed VS Code, Platforiom and other add-ons. I managed to compile the base version correctly. I thought it would be downhill from there, but unfortunately there was a collision with the compiler.

I tried to create my own variant of compilation like this.

In the file

**platformio\_override.ini**

I posted such an entry.

> [platformio]  
> default\_envs = esp32dev\_ping\_pong
> 
> [env:esp32dev\_ping\_pong]  
> board = esp32dev  
> platform = ${esp32.platform}  
> platform\_packages = ${esp32.platform\_packages}  
> custom\_usermods = audioreactive  
> build\_unflags = ${common.build\_unflags}  
> build\_flags = ${common.build\_flags} ${esp32.build\_flags} -D WLED\_RELEASE\_NAME="ESP32" #-D WLED\_DISABLE\_BROWNOUT\_DET  
> -D USERMOD\_PING\_PONG\_CLOCK

And I added such an entry to the file  
platformio.ini

> default\_envs = esp32dev\_ping\_pong

I also selected the environment from the added bar  
 ![VisualStudio](https://global.discourse-cdn.com/free1/uploads/wled/original/2X/3/3736ad2bfd9eba949cfb7a2ca3c47a2615b3a107.png)

The compilation results are presented in the text file below  
[Errrors.txt](https://wled.discourse.group/uploads/short-url/o7fOpL610TuhPnLSjaytAY1rPgp.txt) (4.9 KB)

Generally, you can see that some libraries are missing, specifically this one:

> LITTLEFS.h:35:23: fatal error: flash\_hal.h: No such file or directory

However, trying to add it manually ends with displaying errors related to the lack of other libraries… So the shortcut did not work

I decided to do one more test, to modify my compilation variant so that it does not contain changes something like this:

Now, apart from the new configuration name, nothing should change?

> [platform]  
> default\_envs = esp32dev\_ping\_pong  
> [env:esp32dev\_ping\_pong]  
> board = esp32dev  
> platform = ${esp32.platform}  
> platform\_packages = ${esp32.platform\_packages}  
> #custom\_usermods = audioreactive  
> build\_unflags = ${common.build\_unflags}  
> build\_flags = ${common.build\_flags} ${esp32.build\_flags} -D WLED\_RELEASE\_NAME="ESP32" #-D WLED\_DISABLE\_BROWNOUT\_DET

Unfortunately I still get the same errors…  
Maybe I’m doing something very stupid, I’ll fight and maybe I’ll come up with something.

---

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [March 31, 2025, 5:46pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/2 "2025-03-31T17:46:41Z")

</div>

I made following test, i have changed env to something like this:

> [platformio]  
> default\_envs = esp32dev\_ping\_pong  
> [env:esp32dev\_ping\_pong]  
> extends = env:esp32dev

I assumed that this will give me the same result as vanilla version?  
But i still got bunch of errors during compilation.

[Errrors.txt](https://wled.discourse.group/uploads/short-url/tWJQtiFbsr9A7K4leX4xTipBwqZ.txt) (3.2 KB)

I do not understand how this is possible?

---

<div class="post-metadata">

**Author:** ![mykp\_59](https://avatars.discourse-cdn.com/v4/letter/m/9f8e36/32.png) [@mykp\_59](https://wled.discourse.group/u/mykp_59)\
**Post date:** [March 31, 2025, 10:23pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/3 "2025-03-31T22:23:48Z")

</div>

> [@Tolo1996](#):
>
> Generally, something worked, unfortunately the numbers do not display correctly.

Just wondering if you could solve this with a custom ledmap of your watch ?

---

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [April 1, 2025, 1:48pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/4 "2025-04-01T13:48:13Z")

</div>

> Just wondering if you could solve this with a custom ledmap of your watch ?

Do you mean to change the hardware configuration of the LED?  
As for the software change of the LED mapping, this is how I want to do it, but I need to compile the WLED with this change…

The change is being considered, but I’m afraid that it could involve too much reconstruction of the whole.

Well, unless it will actually be impossible to recompile this software…

---

<div class="post-metadata">

**Author:** ![mykp\_59](https://avatars.discourse-cdn.com/v4/letter/m/9f8e36/32.png) [@mykp\_59](https://wled.discourse.group/u/mykp_59)\
**Post date:** [April 1, 2025, 3:18pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/5 "2025-04-01T15:18:51Z")

</div>

I am referring to software ledmaps. Is it not possible to add the custom ledmap once WLED is installed or is there no WiFi access once installed?

Take a look at this mapping tutorial by @dbmaking

> [@Mapping Help](https://wled.discourse.group/t/mapping-help/14284/3):
>
> Hi, here’s the link to one of my videos where I explain how to use and set up LEDMAP. Unfortunately, it’s in Italian, and the English audio translation hasn’t been extended to older videos yet, but you can use the subtitles. [[Tutorial WLED e ESP32: LEDMAP su strisce e matrici led] ](https://www.youtube.com/watch?v=8SmL-2VooEg)

---

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [April 1, 2025, 3:42pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/6 "2025-04-01T15:42:49Z")

</div>

Looks interesting i give it a try i tell if its works  
Well after some thinking I worry about animations if I i remap Pixels under clock numbers the animated background will by broken…

---

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [April 1, 2025, 5:50pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/7 "2025-04-01T17:50:50Z")

</div>

I checked the mod files again. It seems to me that the mod itself contains an incorrect matrix describing the numbers on the clock.  
This is the fragment describing the shift of digits. You can find the following values ​​in the source file:

> int baseH = 43; // Address for the one place of the hours  
> int baseHH = 7; // Address for the tens place of the hours  
> int baseM = 133; // Address for the one place of the minutes  
> int baseMM = 97; // Address for the tens place of the minutes  
> int colon1 = 79; // Address for the first colon led  
> int colon2 = 80; // Address for the second colon led

Meanwhile, 126 balls are used in the project. So it is not possible to get these values.

---

<div class="post-metadata">

**Author:** ![Tolo1996](https://avatars.discourse-cdn.com/v4/letter/t/6f9a4e/32.png) [@Tolo1996](https://wled.discourse.group/u/Tolo1996)\
**Post date:** [April 1, 2025, 6:37pm UTC](https://wled.discourse.group/t/ping-pong-led-clock-instalation-issue/14291/8 "2025-04-01T18:37:55Z")

</div>

I somehow menage to compile and install with this override:

```auto
[platformio]
default_envs = esp32dev_ping_pong
[env:esp32dev_ping_pong]
extends = env:esp32dev
upload_speed = 921600
build_flags = ${common.build_flags} ${esp32.build_flags}
    -D WLED_RELEASE_NAME=\"ESP32_MULTI_USREMODS\"
   # -D SERVERNAME = \"ESP32_MULTI_USREMODS\"
    -D WLED_ENABLE_USERMOD_PAGE # if created
    -D USERMOD_DEEP_SLEEP
    -D USERMOD_PING_PONG_CLOCK

```

I got following output:

```auto
Leaving...
Hard resetting via RTS pin...
=========================================================== [SUCCESS] Took 26.71 seconds ===========================================================

Environment Status Duration
------------------ -------- ------------
esp32dev_ping_pong SUCCESS 00:00:26.712
=========================================================== 1 succeeded in 00:00:26.712 =========================================================== 
 * Terminal will be reused by tasks, press any key to close it.

```

But after i logged in i see this ☹

> Usermods configruation not found

Ok so a edit platformio.ini and put there this:

```auto
[env:esp32dev]

board = esp32dev

platform = ${esp32.platform}

platform_packages = ${esp32.platform_packages}

custom_usermods = usermod_v2_ping_pong_clock audioreactive

build_unflags = ${common.build_unflags}

build_flags = ${common.build_flags} ${esp32.build_flags} -D WLED_RELEASE_NAME=\"ESP32\" #-D WLED_DISABLE_BROWNOUT_DET

lib_deps = ${esp32.lib_deps}

monitor_filters = esp32_exception_decoder

board_build.partitions = ${esp32.default_partitions}

```

Now it is works 😃

 ![483237837_637432565755705_773803362516193126_n](https://global.discourse-cdn.com/free1/uploads/wled/original/2X/d/dedac2f8e1d497e5e9e4cb23da220c7b76ab4bff.jpeg)

Im attaching here correct usermod\_v2\_ping\_pong\_clock.cpp and precompiled version for future generations  
[firmware.bin](https://wled.discourse.group/uploads/short-url/bSoiOIyZ0Sj5WaH2fbZcJ8xmJZA.bin) (1.3 MB)  
[usermod\_v2\_ping\_pong\_clock.cpp.txt](https://wled.discourse.group/uploads/short-url/lEqMWpxoxjKJoCihLORxqNzamaf.txt) (3.8 KB)
