Skip to the content
PCBKitNew board
2 layers57.5 × 38.2 mmLightIndicator, the printed circuit board in 3D

LightIndicator

theArnoll/CHUKITHM1

A controller for an arcade game that contains ground slider and IR gesture sensor based on RP2040-Zero and CY8CMBR3116

Size
57.5 × 38.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
32
Nets
7
Pads
179
Tracks, vias
272, 20
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Apr 2026
Updated
3 Jul 2026

Overview

LightIndicator is an open-source printed circuit board by theArnoll, from the theArnoll/CHUKITHM repository on GitHub. It is a 2-layer board of 57.5 × 38.2 mm with 32 parts on 7 nets, routed with 272 tracks and 20 vias.

It belongs with the sensors and measurement and retro computing and games boards and the RP2040 boards of this library.

README

README.md

A touch controller based on a Japanese Arcade

English version | 繁體中文版本 (Traditional Chinese version)

PCB Front image PCB Back image

Table of Contents

BOM

  1. PCB × 2

    1. CY8CMBR3116 × 1
    2. 0.1uF × 2
    3. 1uF × 1
    4. 2.2nF X7R × 1
    5. 4.7kΩ × 2
    6. 560Ω × 16
  2. IR LED × 6 ! Function haven't implented yet

  3. IRM-3638 TSSP58038 IR reciever × 6 ! Function haven't implented yet, likely to switch to TSSP58038

  4. RP2040-Zero × 1 (Refer as RP2040 below)

    1. Machined Pin Header 9 pin × 2
    2. Machined Female Header 9 pin × 2
    3. Machined Pin Header 5 pin × 1
    4. Machined Female Header 5 pin × 1
  5. Acrylic case for touch pads (2mm thick) × 2

    1. Acrylic cap for covering CY8CMBR3116 (2mm thick) × 1
    2. M2 screw (10mm length) × 6
      1. M2 Hex Nut × 6
      2. M2 Washer (Rubber recommended) × 6
    3. M3 screw (≥9mm length) × 7
      1. M3 Hex Nut × 7
      2. M3 Washer (Rubber recommended) × 7

    2mm thick acrylic × 2 + 1.6mm PCB = 5.6mm thick in total. 5.6mm + 1.6mm M2 nut + 0.5mm rubber washer = 7.7mm 5.6mm + 2.4mm M3 nut + 0.5mm rubber washer = 8.5mm

Using test PCB
  1. Testing PCB motherboard type B × 1
  2. Testing PCB childboard type B × 1
    1. CY8CMBR3116 w/ DIP convertion board × 1 ! The KiCad project is created with KiCad version 9 or 8.
    2. 0.1uF × 2
    3. 1uF × 1
    4. 2.2nF X7R × 1
    5. 4.7kΩ × 2
    6. 560Ω × 16
  3. IR LED ! Function haven't implented yet
  4. IRM-3638 TSSP58038 IR reciever ! Function haven't implented yet, likely to switch to TSSP58038
  5. RP2040-Zero × 1 (Refer as RP2040 below)
Using handmade prototype touchpad
  1. CY8CMBR3116 w/ DIP convertion board × 1
    1. 0.1uF × 2
    2. 1uF × 1
    3. 2.2nF × 1
    4. 4.7kΩ × 2
  2. Capacitive touch pad × 1 set
    1. Double side conductive copper tape (making how-to look below)
    2. 560Ω × 6/set or 8/set according to which you choose
  3. IR LED ! Function haven't implented yet
  4. IRM-3638 TSSP58038 IR reciever ! Function haven't implented yet, likely to switch to TSSP58038
  5. RP2040-Zero × 1 (Refer as RP2040 below)

Development platform

This project is develop with PlatformIO + Arduino C++ code

  1. VSCode -> Extensions, install PlatformIO
  2. Add project: each project folder in this Repo

Third Party Libraries

Big thank to the author(s) of these libraries

  • CypressCY8CMBR3116 by GitHub @sebastianregelmann The way installing the library:

    1. Download the repo as .zip

    2. Rename the .zip as CypressCY8CMBR3116.zip

    3. Arduino IDE 2 > Sketch > Library > Include Library > Add .ZIP Libray...

    4. Navigate to the .zip and select it to install the library.

    5. !IMPORTANT! Current version of this library need to edit the .cpp file to be able to run correctly. Here's how to fix:

      1. Navigate to line 699, where uint8_t CY8CMBR3116::activateSettings() { is at
      2. After uint8_t error = calculateCRC();, add a line and write delay(250);.
      3. After error = applyRegister(); and error = resetIC();, add a line and write delay(200);.

      This will increase the possibility of the setting being activated if nothing seem to go wrong.

  • Arduino-Pico For developing RP2040-Zero with Arduino IDE and Arduino code.
    Install the board:

    1. Arduino IDE 2 > Arduino IDE > Preference > Additional boards manager URLs: Add below in the end:
    text
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
    1. Arduino IDE 2 > Boards Manager Search "RP2040", install "Raspberry Pi Pico/RP2040/RP2350" by "Earle F. Phithower, III".
    • Adafruit TinyUSB library is going to install along installing this board.
      The library for USB communication with the computer in CY8C_code/NKRO_TinyUSB.h.
      HOWEVER, before flashing CY8C_code.ino, please go to Arduino IDE 2 > Tools > USB Stack > Adafruit Tiny USB to switch USB function.

Sensing Concepts, PCB Design, and Dimensional References (Japanese)

Full dimensions and informations (Blog, multiple pages)
Detailed dimensions and sensing method
Touch panel (ground slider) length
Sensing method (Newer information as confirmation)

Usage

Software Prerequisite

  • Arduino IDE (Tested v.2.3.8 on Windows 11 & macOS Tahoe) Have the third party library mentioned above installed (either install via .zip or install in the Library Manager in Arduino IDE and make sure you're installing "CypressCY8CMBR3116 by sebastianregelmann".)

Step

  1. Wire your CY8CMBR3116 well on breadboard. I²C SDA → Pin 0, I²C SCL → Pin 1. Make sure you've pulled these pins up with 4.7kΩ resistor.
  2. Connect your RP2040 to your computer with a USB cable.
  3. Upload ConfigCode.ino
  4. Upload CY8C_code.ino
  5. Open serial monitor and tap the touch pad.

Enabling Keyboard Input

Ground Pin 8 on your RP2040 to enable keyboard input.

Prototype Touchpad Making Step

Prepare a wooden board, print the image below that need to ensure the thickness of black line in the image are 8mm, and paste the paper with white glue.

./Images/MultipleButtonTest/MultipleButtonTest.png

Choose one of the designs to test the result. The sticks in the middle are touch buttons, and the outter ring is ground. The 6 touch buttons one is good for playing rhythm games on PC.

After you decided the pattern you want to test, cover the black area with 8mm width copper tape and solder wires to these to pins:

  • Touch buttons → CS0 ~ CS5 on CY8CMBR3116 via a 560Ω resistor. (CS0 ~ CS7 if you choose 8 buttons one)
  • Ground → GND on RP2040

Beware that the space between touch pad and ground ring is the maximum distance between your finger and the touch pad that can be detected as touched.

Program flow chart

Only Chinese version is available at the time.

Config

Images/FlowChart/Config_Code.svg

Running code (CY8C_code.ino)

Images/FlowChart/CY8C_code.svg

Development stage

  • Configuration
  • Start sensing and print something that makes some sort of sense (≈ MVP)
  • Introduce HID-Project.h
  • Test multiple buttons
  • Test IR Code
  • Improve latency → Latency is now improved from around 70~75ms to around 40 ms. (Updated 2026 May 11, 1st update)
  • Finish IR Code
  • Print and test PCB
  • Finalize PCB design Integrating CY8CMBR3116 the IC itself to the PCB and include RP2040 to the PCB itself. Find the solution of IR sensing connection to the motherboard.
  • Finalize the case
  • Refine the README and documents and Public the Repo
    • Upload photos and close source pictures to Imgur
    • Document the usage of CY8CMBR3116 in the same or another repo
    • Public the repo
    • Refine the final README

AI Usage & Attribution

This project incorporates AI-assisted development tools to optimize workflow and efficiency:

  • Code Completion: GitHub Copilot and Continue + granite4:7b-a1b-h (VS Code) were used for real-time autocompletion.
  • Architectural Scaffolding: Leveraged phi4:14b and phi4-reasoning:14b for generating initial boilerplate code and verifying logic in remote environments where hardware access was limited.
  • Information Verification:
    • Google Gemini was utilized for conceptual research and documentation verification (no project source code was uploaded to Gemini platform)
    • Gemini models and Gemma 4 models on Google AI Studio is used, with paid API key used to ensure legal data privacy.

All AI-generated code has been manually reviewed, refactored, and tested to ensure logic integrity and project-specific requirements.

Parts

32
QtyValueFootprintReferences
20R_0402_1005MetricResistor_SMD:R_0402_1005Metric1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ, 1kΩ +4
4PinHeader_1x20_P2.54mm_VerticalConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalBarGraph-, BarGraph-, BarGraph+, BarGraph+
3C_0402_1005Metric_Pad0.74x0.62mm_HandSolderCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC.1μ, C.1μ, C.1μ
3SOIC-16_3.9x9.9mm_P1.27mmPackage_SO:SOIC-16_3.9x9.9mm_P1.27mm74HC595, 74HC595, 74HC595
1LOGOArnoll_Studio_Logo:Banner_KicadG***

The 31 most common of 32 parts.

Questions

How big is the LightIndicator PCB?

It measures 57.5 × 38.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the LightIndicator use?

32 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the LightIndicator KiCad files?

From the theArnoll/CHUKITHM repository on GitHub, at the commit this page was made from: the board is PCB/FormalPCB/LightIndicator.kicad_pcb and its schematic PCB/FormalPCB/FormalPCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the LightIndicator design in my own project?

Its repository states no licence, so its author keeps all rights: ask theArnoll before reusing the design.

More from theArnoll/CHUKITHM

3
  • 2 layers244 × 125 mmFormalPCB, the printed circuit board in 3D

    FormalPCB

    theArnoll/CHUKITHM

    A controller for an arcade game that contains ground slider and IR gesture sensor based on RP2040-Zero and CY8CMBR3116

    32 parts1
  • 2 layers61.2 × 100.1 mmTestMotherboardB, the printed circuit board in 3D

    TestMotherboardB

    theArnoll/CHUKITHM

    A controller for an arcade game that contains ground slider and IR gesture sensor based on RP2040-Zero and CY8CMBR3116

    30 parts1
  • 2 layers61.2 × 100.1 mmTestChildBoardA, the printed circuit board in 3D

    TestChildBoardA

    theArnoll/CHUKITHM

    A controller for an arcade game that contains ground slider and IR gesture sensor based on RP2040-Zero and CY8CMBR3116

    5 parts1

Similar boards

  • 2 layers50 × 23.2 mmAnalog, the printed circuit board in 3D

    Analog

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    32 parts1kGPL-3.0
  • 2 layers136.8 × 54.2 mmRetropie zero, the printed circuit board in 3D

    Retropie zero

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    32 parts915
  • 2 layersMooltipass top, the printed circuit board in 3D

    Mooltipass top

    limpkin/mooltipass

    Github repository dedicated to the mooltipass project

    32 parts531
  • 2 layers16 × 20 mmESPKey, the printed circuit board in 3D

    ESPKey

    octosavvi/ESPKey

    Wiegand data logger, replay device and micro door-controller

    32 parts353GPL-2.0
  • 2 layers82 × 40.9 mmDisplay7447, the printed circuit board in 3D

    Display7447

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    32 parts269
  • 2 layers40 × 38 mmShield, the printed circuit board in 3D

    Shield

    murexrobotics/electrical

    Highly integrated electronics design and printed circuit boards (PCBs) for the MATE ROV Competition. Attempt the impossible.

    32 parts192MIT
  • 2 layers47 × 39 mmQrss clock tx, the printed circuit board in 3D

    Qrss clock tx

    swharden/AVR-projects

    A collection of standalone AVR projects written in C

    32 parts184MIT
  • 2 layers30.9 × 63 mmStm32-io extend, the printed circuit board in 3D

    Stm32-io extend

    hardenedlinux/cheap-pcb

    Cheap PCB: Better understanding the current status of hardware supply chain

    32 parts170CC0-1.0