Skip to the content
PCBKitNew board
2 layers83 × 32 mmSchematics, the printed circuit board in 3D

(WIP) Open-Source Circuit and code for custom built 120/240V 3-step (or n-step) light bulb dimmer working by turning off/on the light switch quickly to switch between brightness levels. Also provides memory-functionality to non-memory 3-step bulbs.

Size
83 × 32 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
30
Pads
83
Tracks, vias
147, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Aug 2025
Updated
1 Sep 2025

Overview

Schematics is an open-source printed circuit board by nicki419, from the nicki419/Open-3-Step repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 83 × 32 mm with 24 parts on 30 nets, routed with 147 tracks and 0 vias.

It is built around the AT24C256N. Its parts include 6 resistors, 3 capacitors, 2 ICs, 2 connectors and 1 diode.

Main components

1

README

readme.md

Open 3 Step

Open-Source Circuit and code for custom built 120/240V 3-step (or n-step) light bulb dimmer working by turning off/on the light switch quickly to switch between brightness levels. Also provides memory-functionality to non-memory 3-step bulbs. Please take the time to read everything. It would mean a lot to me. Otherwise, just move on to docs/howto.md


Background

I want to build a lamp. After making a beautiful frame for it, 3D-designing and printing bulb holders and other components, and buying designer LED bulbs (3 pairs of different bulbs, for a total of 6), I discovered that four of those bulbs were 3-step dimmable, and two were TRIAC dimmable. I therefore set out to make my TRIAC bulbs 3-step dimmable, with a memory function, so they could work with my 3-step bulbs.

I soldered a 5V power supply with some fuses, capacitors and resistors to a 30x70mm prototyping board, did the same for an ATMEGA328P, an EEPROM and some GPIO headers, wrote the arduino sketch (see v0.1 code) and it worked, after lots of debugging. If not for the next thing I discovered, this repository would not exist.

The dimming worked. The memory worked. Then it hit me. All four of my 3-step dimmable bulbs are from the same company, and have the exact same box design, with a myriad of icons on the side showing its features. Only after making v0.1 did I realise that two of the bulbs did NOT have a memory function, and two more did. So I now had four bulbs with memory, and two without. Since I also bought regular AC switch modules next to the RBDimmer module, I decided to make another version that would also control the two 3-step bulbs without memory.

Over the summer, I learned the basics of PCB Design and ordered my boards for the next version. I got some more components to make this project more easily customisable and added potentiometers for more easy brightness control at the three steps, as well as support for the non-memory 3-step bulbs.

Versions

0.2

This version will implement the features described above on a custom PCB. All the components will, however, also fit on a 30x70mm prototyping board, if you really want to go that route.

To not clutter the repo, I will share exported PDFs, gerber files, STLs, etc. only via releases.

Changelog:

  • Add Support for non-memory 3-step bulbs through fast switching when the system powers up
  • Add analogue input via 100K potentiometers and a button to configure the brightness levels outside of code
  • Move from arduino to platformio and add separate debug and release profiles (release will have no LED blinking)
  • Create Settings Mode for configuring brightnesses and saving into EEPROM
  • Create 3-step calibration mode to find out how long the delay in your bulbs is.

0.1

The original version is fully implementable on prototyping boards. This is also where the power supply comes from. I chose not to create schematics for the power supply, but there is documentation on what's required and recommended when creating it. If you only need 3-step dimming with a memory function, you may use the code from both v0.1 and v0.2. They should hopefully be cross-compatible, as the new board only adds things, it doesn't modify any existing pins. Consult the documentation of the v0.2 code once it fully releases on how to do this. During development, you probably want to use the v0.1 code, instead.

Therefore, you can refer to the schematics for v0.2 on how to wire everything. You simply need to leave out the push button, potentiometers, and the additional GPIO pin for the AC switch. You also need to configure the values for your bulb in code. For v0.2, I will place these in a header file, for v0.1, there is an array defined at the top of the code.

Parts

24
QtyValueFootprintReferences
3100KΩPotentiometer_THT:Potentiometer_Runtron_RM-065_VerticalRV1, RV2, RV3
210KΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R5
230pfCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2
24.7KΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R3
2KF301-2PFootprint Dir:HANDSON_KF301-2PJ1, J2
1100nFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC3
110ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4
116MHzCrystal:Crystal_HC49-U_VerticalY1
1220ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6
1328PFootprint Dir:DIP794W46P254L2967H457Q28BATM1
15VLED_THT:LED_D5.0mmD1
1AT24C256Footprint Dir:DIP787W46P254L927H533Q8U2
1SW_PushButton_Switch_THT:SW_PUSH_6mm_H5mmSW1
1~Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalU1

The 20 most common of 24 parts.

Questions

How big is the Schematics PCB?

It measures 83 × 32 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Schematics use?

24 parts, built around the AT24C256N. 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 Schematics KiCad files?

From the nicki419/Open-3-Step repository on GitHub, at the commit this page was made from: the board is Schematics/Main Board/Main Board.kicad_pcb and its schematic Schematics/Main Board/Main Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Schematics design in my own project?

Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers70 × 65 mmTinyBas, the printed circuit board in 3D

    TinyBas

    Stan6314/TinyBasRV

    Small Tiny BASIC computer based on CH32V003

    38 parts36GPL-3.0
  • 2 layers33.7 × 36.6 mmHexyMicSMD, the printed circuit board in 3D

    HexyMicSMD

    AlexJMcIntyre/HexyHexyMic

    If you're here, there's a good chance you've picked up one of my HexyHexyMic Hexpansions. I hope I got the chance to say hello! If not, you can find me on Mastodon: @GlitchEngine@mastodon.social.

    11 parts5
  • 2 layers102.4 × 77.4 mmScheda PSE, the printed circuit board in 3D

    Scheda PSE

    Eduzyolo/PSE_project

    This is the official repo for the PSE project

    176 parts1
  • 4 layers40 × 36 mmMX IMU, the printed circuit board in 3D

    MX IMU

    lhaijun/MX_IMU

    55 parts1
  • 4 layers50 × 50 mmSTM32-DevBoard, the printed circuit board in 3D

    STM32-DevBoard

    s-grundner/STM32-DevBoard

    STM32 Breakout Board with various Sensors

    106 parts1
  • 2 layers99.1 × 99.1 mmFs6809sbc, the printed circuit board in 3D

    Fs6809sbc

    elekras/fs6809sbc

    A simple 6809 single board computer

    82 parts
  • 2 layers90 × 36 mmAmbient, the printed circuit board in 3D

    Ambient

    RRomaNN/ambient-rgb-led

    This is a prototype of the LED backlight controller.

    51 parts
  • 4 layers44 × 33 mmAnastasia, the printed circuit board in 3D

    Anastasia

    Viva-la-Insomnia/OSHW-Smartwatch

    Contribute by contacting us / sending in a pull request. Welcome additions: integration of https://github.com/NordicSemiconductor/ble-sdk-efm32/, USB code.

    99 parts