

Schematics
(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
1README
readme.mdOpen 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100KΩ | Potentiometer_THT:Potentiometer_Runtron_RM-065_Vertical | RV1, RV2, RV3 |
| 2 | 10KΩ | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R5 |
| 2 | 30pf | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1, C2 |
| 2 | 4.7KΩ | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R3 |
| 2 | KF301-2P | Footprint Dir:HANDSON_KF301-2P | J1, J2 |
| 1 | 100nF | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C3 |
| 1 | 10Ω | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4 |
| 1 | 16MHz | Crystal:Crystal_HC49-U_Vertical | Y1 |
| 1 | 220Ω | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | 328P | Footprint Dir:DIP794W46P254L2967H457Q28B | ATM1 |
| 1 | 5V | LED_THT:LED_D5.0mm | D1 |
| 1 | AT24C256 | Footprint Dir:DIP787W46P254L927H533Q8 | U2 |
| 1 | SW_Push | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW1 |
| 1 | ~ | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | U1 |
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 mm

- 2 layers33.7 × 36.6 mm

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 mm

- 4 layers40 × 36 mm

- 4 layers50 × 50 mm

- 2 layers99.1 × 99.1 mm

- 2 layers90 × 36 mm

- 4 layers44 × 33 mm

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