Make your own neon-style signs without any of the glass, gas, and high voltage! These neon-like LED strips have a great look, are easy to shape and splice, and you can drive them with just 9V to 12V DC.

We'll learn how to control them for blinking and animation using a microcontroller and a Darlington transistor driver.


You can decide how many strips you need depending on the sign you're making. The parts listed below are for the Adabot / Lightning bolt sign I made.

1 x Adafruit METRO M0 Express
designed for CircuitPython - ATSAMD21G18
1 x Proto-ScrewShield WingShield
Kit for Arduino and METRO
1 x ULN2803: 8 Channel Darlington Driver
(Solenoid/Unipolar Stepper) - ULN2803A
1 x Waterproof Polarized 4-Wire Cable Set
Set of two cables - one plug and one jack, 16" total
1 x 16mm Illuminated Pushbutton
Red Latching On/Off Switch
1 x Heat Shrink Tubing Pack
High-grade flexible polyolefin material
1 x Hook-up Wire Spool Set
22AWG Solid Core - 10 x 25ft


In addition to the parts above, you'll also want a large piece of black foam core board to mount your sign. This will vary depending on size -- I used a 32" x 40" piece for the backboard, and two 20" x 30" pieces for mounting the two sign halves.

You'll use clear zip ties to mount the neon tube strips.


You'll need wire strippers for stripping insulation from wire ends.

You'll need a soldering iron and solder to put the circuit on the Proto ScrewShield. Alternately, you can keep the circuit on a breadboard if you don't want to do any soldering!

We're going to power and control the neon LED strips with a Metro M0 Express microcontroller. The Metro M0, like all microcontrollers, is designed to power low voltage devices with a small current draw -- such as individual LEDs -- from it's digital output pins. We can't run high current devices such as solenoids, motors, and neon LED strips from the Metro M0's pins directly. So how can we do it?

No fear! The answer in this case is the Darlington driver!

The Darlington driver is a DIP chip with eight addressable Darlinton transistor pairs inside. By sending a small 3.3V control signal to one of the Darlington's input pins, it can switch on and off a high-voltage, high-current flow to it's paired output pin.

In fact, we use a Darlington driver on our Crickit boards to power the solenoids and electromagets and the like that you can plug into the Crickit's Driver ports!

Here's the breadboard diagram of our circuit. In it you can see, for example, the yellow wire running from the Metro M0's digital output pin 12 to the Darlington's pin 1 (input 01). When this pin 12 is sent high, the teal neon LED strip that has its ground plugged into the Darlington's pin 18 (output 01) will suddenly flow with 12V current and turn on!

The 12V current is supplied by the 12V DC power plug and then made available through the VIN pin on the Metro M0, rather than using the 3.3V or 5V pins.
Only plug the 12V DC power supply into the Metro M0's 2.1mm DC power jack, NOT directly into the VIN pin. Doing so can cause the board to overheat and possibly destroy the board.

Rather than building it on a breadboard, we'll solder the chip and circuit wiring to a Proto ScrewShield as shown here.

Note the two switch/LED pairs in the diagram used to denote the illuminated buttons we'll be using.


If you haven't done so already, solder together the Proto ScrewShield following these instructions.

Solder the Circuit

Solder the Darlington Driver to the ScrewShield


  • Place the chip on the ScrewShield as shown -- note the orientation of the chip, it is critical to have the half circle at the top of the chip facing left as shown
  • Bend the legs down as shown
  • Solder the legs in place

Power & Ground

Next, we need to provide power and ground from the Metro M0's VIN and GND to the Darlington's legs 10 and 9 respectively.

  • Place a small jumper wire from the GND strip on the ScrewShield to pin 9 on the Darlington as shown
  • Solder the wire in place -- note how the wire is bent over to contact the pin before soldering to the Darlington pin
  • Solder the other end of the wire to the GND strip
  • Clip any excess wire with diagonal cutters
  • Repeat this process for power, running a wire from VIN to pin 10

Digital Pins to Darlington Inputs

We'll trigger each of the transistor pairs in the driver by sending digital pins high on the Metro M0 using the following connections: (you can add more if you want to control more neon strips separately for animations)

  • D12 to Input 1
  • D11 to Input 2
  • D10 to Input 3

Solder the wires to the digital pins' holes as usual and then bend their other ends onto the Darlington's pins before soldering.

Output to Screw Terminals

Now, you'll solder jumper wires from the Darlington's output pins to the ScrewShield's W, X, and Y terminals. It is here that we'll connect the neon LED strips later through a cable.

  • Darlington Output 01 (leg 18) to Y
  • Darlington Output 02 (leg 17) to X
  • Darlington Output 03 (leg 16) to W

Power Output

The three outputs we just connected are for the ground wires of three neon LED strips. Now, we need a convenient way to share the common 12V line. We can do this by soldering a jumper from the VIN connection we made already at Darlington leg 10 over to the ScrewShield Z terminal.

Add the ScrewShield to the Metro M0

Now we get the very satisfying task of inserting the ScrewShield into the Metro M0! Just like that, all of the Metro M0's pins are connected to all of those screw terminals and to our pre-wired Darlington circuit!

Wire the Buttons

We'll use two buttons to control the sign -- an on/off latching button and a momentary button to control the animation of two of our neon LED tubes.

These buttons are special -- they each have an LED built into them. So, we'll wire them so that we have a nice little cable bundle per button for ground, digital input to the Metro M0 to read the button state, and digital output from a Metro M0 pin to light the LED.

We'll even solder in a 220 Ohm resistor inline with each button's LED power pin so the wires can be plugged directly into Metro M0 pins via ScrewShield terminals!

Wire the Red On/Off Button


  • Solder a jumper wire from the LED GND pin to the Switch contact to GND pin, this ground can be shared. There's no need in this case to run four wires to the board when three will do
  • Solder one end of a 220 Ohm resistor to the LED Power contact on the button
  • Solder a length of grey stranded wire to the other end of the resistor -- this is the wire that will connect to the screw terminal at D9
  • Add some heat shrink tubing to insulate the connections
  • Solder a length of black wire to the Switch contact to GND contact
  • Solder a length of blue wire to the Switch contact to digital pin contact
  • Add heat shrink to these two connections
  • You can optionally use a piece of wider diameter heat shrink to neaten up the base of the button as shown

Repeat this procedure for the yellow momentary button, this time with these color connections (to make it easier to follow the schematic above):

  • Jumper between LED GND and Switch contact to ground
  • Black to GND contact
  • White to 220 Ohm resistor to LED Power contact
  • Orange to Switch contact to digital pin

Connect Buttons to ScrewShield

Now you can insert the button wires into the ScrewShield screw terminals. Follow the diagram above and this drawing.  Note that you can twist the two black wires together and have them share a single GND terminal.

Four Wire Cable

We want a good way to connect the neon LED strips to the Metro M0 that is solid, secure, and polarized to avoid plugging things in the wrong way. Enter the 4-wire polarized cable set! Screw the wires of the female receptacle half into the W, X, Y, and Z terminals as shown in the schematic and the photo below.

The board circuit and wiring is complete, time to program it with MakeCode!

MakeCode isn't just for Circuit Playground Express, it can program a variety of boards, including Metro M0 Express, Trinket M0, Feather M0 Express, and Gemma M0 by using this URL:

Click on the Metro M0 Express board on that page, and then click on the New Project button. (If you're new to MakeCode in general, this guide is an excellent place to get started!)

This is the program I built to control neon LED strips. This allows us to use the two buttons to control the sign -- turn the red button on and all of the tubes are lit. Click the yellow button and the two tubes on pins D11 and D10 will alternate blinking every second.

If you'd like to open this program in your browser, click the button above. Then, you can press Download in MakeCode to save the .uf2 file to your computer.

Plug in your Metro M0, press the Reset button to enter bootloader mode, and then drag the .uf2 file onto the METROBOOT drive.

The M0 Express will restart and your program is running!

We'll do a more complete test on the next page as we connect the neon LED strips, but for now you can test the program by clicking the buttons as shown here.

Before we build the full sign, it's a good idea to test out the board by plugging in three strips and running the board through its paces.

Using the 2-pin wire joints, connect the wires as shown below:

You can see we're sharing power by connecting the three red wires from the neon LED strips to a single connector. Each strip's ground is connected to a different control wire coming from the 4-wire cable.

Plug the male end of the 4-wire cable into the female receptacle end that's connected to the ScrewShield and Metro M0.

Plug in your 12V power supply to the DC jack on the Metro M0, and turn on the small on switch on the Metro M0. Press the red button to turn on the neon!

Now, press the yellow button to start the blinking!

Build Signs

Now we can get creative! Time to start laying out your neon LED strips onto foam core board.

To secure the strips, use a small screwdriver to poke pairs of holes through the foam core board, and then secure the strip at that point with a small, clear zip tie.

Splicing Neon LED Strips

Sometimes you may want to use short lengths of the neon LED strip -- that's great, simply cut the strips right along the black lines you can see inside of the tubing on the back side of the tape.

To then use the cut off end -- or even to join multiple strips together to create multi-color lengths -- you will need to solder leads onto the exposed pads.

Use heat shrink tubing or electrical tape to finish off the job neatly.

  • Cut the strip at any one of the black marks
  • Peel back a bit of the silicone covering to reveal the solder pads
  • If you look at the other side, the markings around the LED shows you which side is ground -- the black rectangle has a diagonal mark in one corner, that's the ground side
  • Tin the pads
  • Solder a black wire to GND and red wire to +
  • Finish it off with some electrical tape

Now, you can add this short, darker blue length to the design!

You can create holes to push the wiring through to the back side of the board as shown.

You can see here how the 2-pin wire joint connectors are used to daisy chain the neon LED strips.

You can add more elements to your sign -- here I stacked two boards to make assembly easier, and to create options for displaying Adabot with or without a cool lightning bolt/pink curve in shield logo!


OK, now you can plug in the four wire connector to the Metro M0 and ScrewShield, plug in the 12V 5A DC power, and fire up your own custom neon LED strip sign!

This guide was first published on Aug 10, 2018. It was last updated on Aug 10, 2018.