Picture of Raspberry Pi Alamode CNC Controller
CNC Diagram.jpg

This is my first attempt at an instructable. I hope it helps someone else.

Switches and Lights and fans, oh my...

I bought a CNC machine some time ago and I was never happy with it. It used a traditional parallel port controller and of course no modern computers have those. So it was always a point of frustration. I used an old Pentium based computer and ran LinuxCNC on it for a while but was still not happy with that. So I started looking for another solution. I decided that I would try to put together an Arduino based controller and try to use USB to communicate with it.

After studying that for a while I came to realize the Arduino was just not going to be able to do all that needed to be done on its own. The Arduino UNO just does not have enough memory or processing capacity to process a design file by itself. So I modified my solution and started working on using a Raspberry Pi as my host computer.

I created a Visio drawing of what I intended to do: It didn't turn out that way and the drawing continued to evolve as I learned more. It kept on changing until I finally got my project completed.

I have now built an Arduino based CNC Controller system that uses a Raspberry Pi as its host computer. The Raspberry Pi processes an "nc" file that contains a design that is described in GCode commands that can be understood by the Arduino. I have used a few tools on my Windows 8.1 Pro laptop to design a few simple things (like tutorials in makercam here: This is a great introduction to designing things for CAD/CAM and it is really easy to use.

After creating a design that I wanted to use I wirelessly connected to the Raspberry Pi using WinSCP to transfer design files to the Raspberry Pi. You can get WinSCP here:,44532390848,winscp20download,e,,c,0,,,&gclid=CJuIkNHds74CFagWMgodpxMAJw. Its great, you can just drag a file from one window to the other to move files between systems. You will have to know the IP address of your Raspberry Pi to connect to it. If you have gone through the initial setup of the Raspberry Pi and setup a network connection you can get the IP address by using the ifconfig command on the Raspberry PI. A really helpful tool for getting your IP address and seeing that your Pi is online is a tool called the Advanced IP Scanner here: Another great tool is Wireshark:

I then used Remote Desktop Connection (Remote Desktop connection is part of Windows and should be on your Windows machine. It can be run by entering mstsc in the Run Open: box) to connect to my Raspberry Pi. Otherwise you could use VNC or TightVNC: TightVNC is what you need to put on your Raspberry Pi to allow you to use Remote Desktop Connection from another machine. I can now run the Grbl Controller on the Raspberry Pi which in turn connects to an Alamode (an Arduino like board that plugs directly into the GPIO connector on the Raspberry Pi and provides automatic voltage level translation. So that the Arduino can communicate with the Raspberry Pi directly. The Alamode also provides Arduino headers to allow for Arduino shields to be plugged directly into it. So I ended up with a stack of three boards that are tightly integrated due to being plugged directly into each other. The Alamode (Arduino) processes the GCode commands from the Raspberry Pi into signals that are sent to the CNC Controller shield to run the stepper motors and passes the various function signals on to the CNC Controller shield too. They can then be accessed from the external world. All is well so far... But now I have to connect these things to the external world.

Remove these adsRemove these ads by Signing Up
1-40 of 110Next »
phuketbot6 days ago

what you realise chang a lot of think about home cnc ,distant control and distant fix ,price , control cnc not in the noisy same room.......

it for that try to do the same, i have a lot of difficult to preparre cart programme; nobody who have realise the cart can upload the img of the raspberry cart per torrent to make the work in some simple clic.

cdtaylor51 (author)  phuketbot4 days ago

There is a good tutorial on building the Raspberry Pi software on the Adafruit site.

Try this:

Make sure that you have SSH installed first. Also I had a couple of questions and they got back to me right away. Took a LONG time to install Cygwin (SSH) to work with this process.

CharlieZed6 days ago

Great work!

I was wondering if you could provide a circuit diagram for the Power Distribution board in step 8?

cdtaylor51 (author)  CharlieZed4 days ago
I have attached a simple schematic showing how the switches and leds and the Power Distribution and Inverter Board is wired. I hope that this it makes it easier to understand. The connectors on the left side of the schematic get connected to the CNC Controller board. The CNC Controller board provides the four function pins and a ground for each function. Only four of the six inverters in the 7404 chip are used. The connectors in the middle of the schematic represent the 12 pin header that is on the Power Distribution Inverter board and is connected back to the four switches too. The +12V and +5V parts of the schematic represents the power distribution buses on either edge of the board. I connected the power from the external power supply to the rails. I then connected the+5VDC from the rails to the RPi and the Alamode. Followed by connecting the +12VDC to the CNC Controller. Then finally I connected the ground pins for the spindle signals (the three relays) to ground. Again the +12VDC ground is connected to the +5VDC ground. +5V is also the Vcc for the Hex Inverter chip. Let me know if you find anything wrong with my schematic. Good luck on building your own.
cdtaylor51 (author)  CharlieZed5 days ago
Thanks for your comment. I thought about a schematic for the power board but it was so simple I didn't do it. You can print big copies of the pictures (both sides) and just build an exact copy of what I did if you want. I will add a schematic in the next couple of days. There is a small schematic showing how the switches and leds are connected that I included in a previous reply too. That might help in the mean time. The other things on the board just simply provide power to different things. There is a +12VDC rail on one side and a +5VDC rail on the other side. Then the grounds are tied together. That is really all there is to it. As I said I will post a schematic in the next few days. I am really busy right now.
cdtaylor51 (author)  cdtaylor515 days ago

Here is the little schematic about how the switches are wired to the functions and to the Hex Inverter (7404 chip) and the leds that are in the swiches. I hope this helps until I can do a complete schematic of the power board.

joaoji1 month ago

Very good your work, worthy of a good teacher!

Could you post a video on youtube of your CNC showing some details mainly featuring the g-code transfer process for processing?

cdtaylor51 (author)  joaoji1 month ago

Well, I am not in a position to do a video so here is an explanation about what is going on with the software.  I made a few assumptions that I guess I should not have made.  Hopefully, this will clear things up for anyone who is confused by what I previously posted.     In Step 13: Testing, I showed how the software works.  As I said, I used Remote Desktop to connect to my Raspberry Pi from my laptop. 

1st Picture:

The first picture that has a large raspberry in the middle of it is the desktop of my Raspberry Pi.  Notice that is just shows a few icons.  Notice that one of the icons is for the GrblController.  To test the system I clicked on the GrblController icon which brought up the GrblController window that you can see in the next image.

2nd Picture:

 In this image you should be able to see that the Port name is populated with the name of the port that the RPi is using to talk with the Arduino/Alamode.  It should be ttyS0 and the Baud Rate should be 9600.  If all of this is right then you would next click on the “Open” button to establish a connection between the RPi and the Arduino/Alamode and that will take you to the next image. 

3rd Picture:

The text on the Open button will change to “Close/Reset” and the button will go red.  Notice that the Port name and the Baud Rate are greyed out and cannot be changed at this time.  Once the connection between the RPi and the Arduino/Alamode is established the GrblController will automatically send a message to the Grbl Interpreter on the Arduino/Alamode and the Grbl Interpreter will respond with the information that you see in the window under the Command box.  You can get the Grbl Interpreter to send that information again if you enter $$ in the Command window.  Notice that anything sent to the Grbl Interpreter is preceded by a right arrow symbol “>”.   The system is now waiting for something to do. 

You can use the arrow keys in the Axis Control window to move the desired axis of your machine or you can go to the advanced window to manually enter Gcode commands or you can go to the Visualizer window (more about that later) or you can select a design file that contains Gcode. 

4th Picture:

I loaded a design file that I made with makercam (see the introduction).  As you can see I chose a design file the ends with the .nc suffix.

5th Picture:

 In the next picture I clicked on the Begin button.  That causes the “Choose File” and “Begin” buttons to get greyed out and the “Stop” button is now available.  The visualizer will automatically show you what the design will look like.  Notice that the image of the “T” is blue and the machine and work coordinates are all zeros (before the Begin button is clicked). 

6th Picture:

The next image shows more data in the window on the left.  Notice that Gcode commands are showing up in the list.  Also notice that a statement telling you that the GrblController is “Sending” a file to the Arduino/Alamode/Grbl Interpreter.  Also you should notice that the Queued Commands bar is showing some depth.  This is because several Gcode commands have been queued up for execution.  Further, the Machine and Work coordinates have changed and they are no longer zeros.  Lastly note that the image in the Visualizer window has some green lines that are replacing the blue lines.  This shows you what segments of the design file the system has completed and where it is currently working.  As work progresses through the design file the lines will continue to go from blue to green and the coordinates will continue to update and the lines in the information window will continue to appear.  You can click on the stop button anytime you want to interrupt the system.   You can see that eventually all of the blue lines have been replaced by green ones indicating that the design file has been completely processed. 

7th Picture:

Finally in the last picture, after the design has been completed the system moves back to the origin and the coordinates go back to zeros and the design is finished.  Now the system is once again waiting for something to do. 

vtstruct2 months ago

Very interesting project, thanks for posting this!

A couple questions:

1.) if I already have individual commercial stepper drivers, can I eliminate the shield board?

Does GRBL provide look ahead buffer capabilities for motion control --
how square would corners be if this system was running a mill, and does
the feed rate slow down from a straight line on doing arcs an circles
made of polylines?

cdtaylor51 (author)  vtstruct2 months ago
There are many ways to drive the stepper motors. As for information about GRBL I would suggest that you contact the GRBL authors. I am a relative novice and still don't know as much as I need to know and I do not feel confident in answering your questions. Thanks for taking a look at my project.
cdtaylor51 (author)  cdtaylor512 months ago
You would probably want to use an Arduino prototyping shield to provide an interface between the Arduino and you drivers.
EricP52 months ago

Well Mr. Taylor after reading your instructible I have FINALLY
decided to take the plunge and build a CNC. I have the plans, about 96%
of the parts, and have been working with the Arduino/Raspberry PI boards
for a year or so now. I guess, after reading through your instructions,
I have a few questions that I am somewhat fuzzy on

1) You mention
a power distribution board but I don't recall if that is a part that I
need to purchase or make. If I need to make it is there a schematic

2) It looks like I maybe misunderstood how the
Raspberry PI works with the Arduino... I thought that I needed to run
LinuxCNC as the OS on my PI and then control or send the Gcode to the
Alamode via the GPIO so that the GRBL would intrepret it and then send
the stepper motor instructions to the CNC board. Do I NOT need to use
LinuxCNC? If not how do I send the Gcode to the Alamode - via the IDE?

questions posited I have to add on to the choir that this is an
excellent and well thought out instructible and your end result was
elegant. Hell, it impressed me enough to finally get off of my butt and
get this done. Plenty of folks would tell you that is a feat in itself.

cdtaylor51 (author)  EricP52 months ago
The power distribution board that I mentioned is not completely necessary but just a convenient way to get power where I want it and I also put the hex inverter that I used to drive the LEDs on it. You obviously do not need to have illuminated switches either. The power distribution function is really simple. I just used the power rails on either side of the board to pick off the power where I needed it. The rails are on either side with +5V and ground on one side and +12V and ground on the other side (with the grounds tied together). I included a small schematic showing how the switches and LEDs are wired up in a previous comment. Take a look at the other comments. They present some good information too.

As for the software I used: GRBL is implemented by putting the GRBL interpreter on the Arduino (Alamode in my project) and the GRBL Controller on the Raspberry Pi. I am not using LinuxCNC at all. I would refer you to the GRBL authors if you want to use the interpreter in a different way. The screenshots in the last step show what you would see on the screen of the RPi while running the GRBL Interpreter on the Arduino and the GRBL Controller on the RPi. You would need some other piece of software to make a design file to process with the GRBL software.

I hope that makes things more understandable. Good luck with your project and thanks for looking at mine also thanks for the comments too.
DanB72 months ago

Cool!...I multiplied every long word by 10 minutes as I read....Impressed but I think I have to find a quicker solution - I have only so many years left and need to get my project up and running too......I am working backwards from the steel frame.....and have a long way to go (further now than I first envisaged..;-).) But thank you especially for your organisational skills.....

cdtaylor51 (author)  DanB72 months ago
DanB7 - I am not sure what you meant with your first sentence, maybe you could clarify that and then I might be able respond. if there is anything that is mot explained well enough let me know and I will try to help. Not sure what the second sentence means either. I guess you believe that my instuctable is too long. Working backwards from a steel frame might mean that you have a machine with a steel frame and you are now looking for a controller for it but I am not sure as the context does not provide any way to know for sure. If that is the case then you could simply purchase a CNC controller system through ebay or elsewhere on the Internet and completely skip building your own. This instuctable is my first attempt to put something like this together. It was meant to help others who might want to do something similar and it is just the way I did it and did not intend to restrict anyone from doing something differently. It also shows some of the prototyping techniques that I have learned and used over the years. My hope was to help others to raise the quality of their projects to a higher level that they would be happier with. I am still learning too. When I read through an instructable about something that I have not done before I always learn about things that I previously did not know. Sometimes the learning curve is high and it is difficult to understand. I am always grateful to learn more especially about things that I knew nothing about before. I hope that my little instructable has added a bit, and elevated the journey's of, the more than 100,000 people who have read it. Thanks for your comments and just ask if I need to explain something better and I will do my best to do so. Please be as specific as possible and I will do the same.
DanB7 cdtaylor512 months ago
I am in awe at your knowledge, learning and application. You must have spent a long time on it. Your clear words must have been magnified 10 fold in the actual application of your knowledge. I am very impressed by your result but doubt I could emulate it and may have to initially think "simple" to start with.
cdtaylor51 (author)  DanB72 months ago
Well DanB7, I believe you could do this too. Just take one step at a time. Get all of the parts and tools that you need and take you time. I recommend that you start by getting the software working on the Raspberry Pi and the Arduino/Alamode. Then add on the 100% GRBL Compati le CNC Controller. At that point you could temporarily attach you stepper motors and verify that everything works as it should. Then you can start thinking about packaging everything. Thatis really what instuctable is abou. Use expandable sleeving to bundle wires together in a logical way. Expandable sleeving needs to be cut with a hottool to melt the fibers together but further you need to reminate the expandable sleeving with heat shrink tubing. That will help to hold the sleeving in place and protect the ends too - it also looks better. You need to be careful though because you can easily melt the pin housings by getting them too hot (read, voice of experience here). Putting the holes in the box and making the carrier plate were the hardest parts because I had to do those things by hand with my Dremel tool. Read the other commentsfor more info about that. I am sure that youcan do it. Thanks fir your comments.
cdtaylor51 (author)  cdtaylor512 months ago
I read my reply twice to make sure there were no typos, etc. Then posted and read again and there are typos. What can I say?
dgaynor4 months ago

Why didn't you use the 12-36V stepper power supply on the GRBL board? Aren't the stepper motors going to be under powered now?

cdtaylor51 (author)  dgaynor4 months ago
My stepper motors are all 12 volts and so is my spindle. Changing the wiring for other voltages would be pretty easy to do and the CNC Controller board is already able to handle 12 - 36 volts.
branilson4 months ago

Very nice and organized assembling. Congratulations!.

Today with the the new raspberrry Pi B+ with more GPIO lines, i am thinking in use the raspberry to control the drivers directily. I think in use some kind of simplified version of linuxcnc to run into the raspberry pi.

cdtaylor51 (author)  branilson4 months ago
Using the RPI to directly drive the stepper motor drivers should be possible. You would need to use a real time operating system and some custom programming to do that. You would also need to provide some sort of mechanical and electrical interface. The RPI is a low voltage and low power device whereas the steppers are higher voltage and higher power. It could be done and would be a great project but it would also be a lot more complicated than what I did. Good luck, if you decide to do it. I would be interested in seeing how it all came together if you do it.

Hi Chuck,

Very impressive project; I am contemplating a CNC setup myself and I am very interested to hear how your new control setup is working out.



cdtaylor51 (author) months ago
As I mentioned in my previous replies I recently moved and other things have taken priority for a while. I know my controller works as i have tested it but my milling machine is a different matter. I have to custom create some parts to get it back together. It will take me some time to get there. Thanks for your feedback.
Festrada0076 months ago

Really great job, what I would find most useful is where you got the software, how you installed it step by step. That would be truly needed information, as the stuff I am finding is a few years old and the links are old and broken. Thanks!

cdtaylor51 (author)  Festrada0076 months ago
Thanks for your feedback. It took me a while to find everything too.
The i love the way you put it all in a nice box. Its beautiful. It brought a tear to my eye. :) i was able to get GRBL working on my pi and loaded on my Uno. Now if i can make something half as nice as you did ill be happy.
cdtaylor51 (author)  Festrada0076 months ago
Thanks, I am happy to have helped.
jetxu20146 months ago

you can try to use the Banana Pi, i think it will give you suprise. you can know more from:

cdtaylor51 (author)  jetxu20146 months ago
I read about the BananaPi before but thought it was a bit too new and not stable yet. Maybe it would be good in a future project. Thanks for your feedback.
skaufman38 months ago

You wouldnt happen to have a parts list for this design would you?

cdtaylor51 (author)  skaufman38 months ago

No I didn't but I put this together... Hope it helps... Took a while to find everything again.

Step 1:



Advanced IP Scanner:



Grbl Controller software
for Raspberry Pi

Step 2:

Grbl compatible CNC Controller shield

A4988 stepper motor driver


Heatsinks For Stepper Drivers:

3 x Aluminum SMT Heat Sink -
0.4"x0.4" square[ID:1042]

Step 3:


Step 4:

Raspberry Pi Model B 756-8308 Raspberry Pi B

M3 Nylon Hex Spacers Screw Nut Assortment Kit Stand off Plastic Accessories

I replaced most of these with brass.

Raspberry Pi Premium Aluminum Heatsink Kit

Super Glue – I already had

Step 5:


Acetal Sheet:

Sheet,Acetal,Wh,1/8 In T,12x12 In

40mm, 12 VDC, fan:

Gino DC 12V 0.1A 40mm x 40mm 2 Pin
Connector PC CPU Computer Case Brushless DC Fan

Black Plastic Fan
Grill for 40x40mm 40mm 4cm AC DC PC Fan New

5pc Plastic Fan
grill for 4x4 4x4cm 40x40mm AC DC Fan Taiwan

Inlet vents with filters:

EverCool FGP-40 40mm Plastic Fan Filter & Grill, Black

Step 6:

5×New Aviation Plug 8-Pin 16mm GX16-8 Male and Female Panel Metal Connector

I painted bands on
the connectors with model enamel that I already had.

Expandable Sleeving:

- choose the length.

Hookup Wire Assortment 6
x 25 ft. spools of #22 gauge solid, insulated copper wire


1 x Hook Up Wire Set, 24AWG SOLID CORE,
UL / CSA, 6 x 25 ft spools, Black/Red/Yellow/Green/Blue/White (KCW803-STD)

Heat Shrink Tubing

Crimping Tool:

1 x #1928 Crimping Tool: 0.1-1.0 mm² Capacity,
16-28 AWG


1 x #1930 Female Crimp Pins for
0.1" Housings 100-Pack

1 x #1931 Male Crimp Pins for
0.1" Housings 100-Pack

10PCS 2.54mm 2 x 40 Pin Male Double Row Right Angle Pin Header Strip


1 x #1900 0.1" (2.54mm) Crimp
Connector Housing: 1x1-Pin 25-Pack

1 x #1901 0.1" (2.54mm) Crimp
Connector Housing: 1x2-Pin 25-Pack

1 x #1902 0.1" (2.54mm) Crimp
Connector Housing: 1x3-Pin 25-Pack

1 x #1903 0.1" (2.54mm) Crimp
Connector Housing: 1x4-Pin 10-Pack

1 x #1910 0.1" (2.54mm) Crimp
Connector Housing: 2x2-Pin 10-Pack

1 x #1912 0.1" (2.54mm) Crimp
Connector Housing: 2x4-Pin 10-Pack

1 x #1913 0.1" (2.54mm) Crimp
Connector Housing: 2x5-Pin 5-Pack

1 x #1921 0.1" (2.54mm) Crimp
Connector Housing: 2x12-Pin 5-Pack

1 x #1918 0.1" (2.54mm) Crimp
Connector Housing: 2x16-Pin 5-Pack

2 x
USB DIY Connector Shell - Type Micro-B Plug[ID:1390]

Polarized Axes Connectors

4 - PRT-08231 - Polarized
Connectors - Header (4-Pin)

4 - PRT-08097 - Polarized Connectors
- Housing (4-Pin)

4 - PRT-08100 - Polarized
Connectors - Crimp Pins

2 - PRT-11417 - Arduino
Stackable Header Kit - R3

Step 7:


E-Stop or Arduino Reset (Red)

x 16mm Illuminated Pushbutton - Red Latching On/Off Switch[ID:1442]

Abort Reset (Yellow)

x 16mm Illuminated Pushbutton - Yellow Latching On/Off Switch[ID:1444]

Pause / Feed Hold (Blue)

x 16mm Illuminated Pushbutton - Blue Latching On/Off Switch[ID:1476]

Cycle Start / Resume (Green)

x 16mm Illuminated Pushbutton - Green Momentary[ID:1440]

PowerWerks PowerPole connectors can be found here:

Mount for 2 Powerpoles Sets (4 conductors) (Configuration: Unassembled)
Color Powerpole Connectors Kit (Size: 15 Amp, 16-20 GA)
the ideal Powerpole Crimping Tool for 15, 30 and 45 amp contacts
Powerpole Removal, Insertion/Extraction Tool
SNAP-IN PLUGPowerpole Pak Connector; 4 Pole; Snap-In Plug; 30 Amps

Retaining PinPower
Pole, Retaining; Thermoplastic; Black; UL Recognized, CSA Certified
Connector Housingconnector,
housing only, yellow
Connector HousingPowerPole Housings; 2200; UL94 V-0, Black
Connector HousingConn; Rect; High Current Hsg; PP15/45 Ser; Powerpole;
Red; 15A; 600V; Bulk

Emergency Switch:

Step 8:

SN7404 Hex Inverter- I already had some of these

Four Current Limiting
Resistors- 650 Ohms - I already had
some of these

Adafruit Perma-Proto Half-sized Breadboard

Step 9:


Mini 3 Port USB 2.0 Rotate Splitter Adapter Hub for PC Laptop Notebook

Miniature Keyboard

Mini 2.4GHz Wireless PC / Tablet Keyboard Designed for SmartStick

Brick - 5V Relay

Wireless Network Adapter
- I already had a few of these

EdBet8 months ago
There is not much more I can add to what has already been stated, GREAT JOB. I am retired and living in the Philippines and in the process of developing a Maker Space for all the kids in the family, including my grandson. I have ordered a 3D Printer and parts for a CNC Router from OpenBuilds for my workshop and am glad I waited to order the controls. I just placed the order for the controls based on your instructable and hope it will be as easy as it looks. Have you used the controls for a project yet and how did it perform? Do you think a Beaglebone Black or a PCduino would work as good or better than the RPI? I already have a RPI and was just wondering. I sure hope when I am done the kids will learn something using the Maker Space.
cdtaylor51 (author)  EdBet8 months ago

I tried to respond to you previously but my computer hiccupped and I lost my response twice.Thanks for looking over my build and thanks for commenting on it too.I lived in Cavite City outside of Sangley Point Naval Station for my last two years of high school.I really enjoyed living there and will never forget it.I have not used my controller to make anything yet.I have tested it though and everything works as expected.I built a small tester to check that my stepper motor cables are constructed correctly.It is pretty simple.One LED for each wire.Push a button and all of the LEDs turn on.If one of the LEDs does not light
then that wire has a problem.If all of the LEDs light then all is well.I also
built a connector with three LEDs on it to test the spindle connector.I am able to turn on the spindle, set the direction and turn on the cooling circuit with M codes from the RPI.I also plugged a stepper motor into each of the stepper motor connectors, one at a time, and tested that I was able to send commands from the RPI to the motors. I am able to run the motor in both directions on each of the axes.It all works as expected.I have seen the BBB and PCduino approaches
too.I wanted to make a simple CNC controller that did not use a parallel port connection.As I mentioned, I originally thought of using a USB connection but as others have pointed out and I believe too, the USB is not a real time bus and therefore is not suitable for directly controlling motors in real time.The Arduino is
great for controlling motors. It is cheap and easy to use.Grbl is available for the Arduino and the Grbl Controller software is available for the RPI.You certainly could use a BBB or PCduino as a host computer just like I used the RPI.But then you might want to look at LinuxCNC instead of Grbl.I thought that the other approaches were a lot more involved and that going with the Arduino (Alamode) and RPI was just an easier thing to do.

vincent75209 months ago

Beautiful construction …

cdtaylor51 (author)  vincent75208 months ago


daemonic9 months ago

Very nice build and great attention to detail, love the colour coded sleaving :)

Can i ask where you sourced your illuminated switches from?

cdtaylor51 (author)  daemonic9 months ago

Thanks. I got the switches from Adafruit.

try this for switches too

cdtaylor51 (author)  michaelmacnz8 months ago

Thanks for the pointer to Alibabas site. As it turned out the switches that I had from Adafruit (probably came from Alibaba in the first place) worked the way I needed them to work. The LED in the switch is independent of the switch. So it can be set up by external circuitry to illuminate under any condition that is desired. In this case the LED needed to turn on when the voltage on the function pin went to ground. LEDs won't work that way. That is what required me to use the Inverter circuit so that I could have the drive current needed to illuminated the LED. A switch that has the LED tied to the function of the switch won't work because when the switch is taken to ground then there is no drive current on the other side of the LED. As I mentioned, the function pin has a pull up resistor on it inside of the chip and so it is pulled up to near Vcc. The input to the inverter is wired to the function pin and is held high by the pull up resistor too. Pushing the switch pulls the function pin low by connecting it to ground (along with the input of the inverter) that causes the output of the inverter to go hi or close to Vcc (+5VDC) and the LED lights up. Releasing the switch removes the ground and lets the pull up resistor take the function pin (and the inverters input) back up to Vcc and LED goes out.

LED Schematic.jpg
1-40 of 110Next »