Introduction: Use a Momentary or Tactile Switch As a Pushbutton Switch.
Tactile switches (a specific type of momentary switch) are everywhere and they are especially popular on DIY electronics and microcontroller boards because they are well suited to act as a boot option or reset switch. Particularly, momentary switches are switches that don't save their state when you depress the switch. That is, when you push the switch (and while you have the switch depressed) the circuit is ON, but once you let off the switch it reverts back to OFF.
In this micro-instructable, I will show you how to convert those ubiquitous tactile and general momentary switches into pushbutton switches that toggle and save their state. It's very easy and extremely straight forward so you can implement it immediately in your designs if you're interested in doing so.
Step 1: Get Yer Switches
The most obvious part of the necessary components is a momentary switch. Go grab one, or two, or a handful if you're OCD and can't decide. There are lots of different kinds of momentary switches from panel switches, to PCB tactile switches, to toggle momentary switches. I have collected several different kinds in the picture below.
In this instructable, I'm going to use tactile switches. There's just something wholly satisfying about the force required to activate the switch and the crisp *click* you get is quite rewarding. Feel free to use whatever switches you have around. If you haven't scoped the video, check it out now. I have setup two tactile switches. One in a normal configuration with an LED and requisite resistor on the high side, and then driving to ground on the other. It does what you would expect when you press the button: the nice little blue LED comes on and stays on for as long as you hold the switch down, then immediately goes off when the switch is depressed.
The second switch is attached to a MC14027 J-K flip-flop IC, as well as having two LED's attached to the flip-flops. Turn the page and learn about flip-flops!
Step 2: Sequential Circuits
There are several flavors of flip-flop to choose, the two major categories being master-slave and edge/level triggered along with the type of flip-flop, like an S-R, D, T, and J-K. J-K flip-flops can be built using two S-R latches in a sequential arrangement or with NAND gates, among others.
Here is a list of a few flip-flop IC's. The asterisk (star) means we're not concerned with the logic family (ie ALS, HC, HCT, LS, F, etc). For example, 74*109 could be an 74LS109 or a 74F109. Also, "(+)" or "(-)" is my shorthand for positive edge-triggered and negative edge-triggered, respectively.
74*74 Dual (+) D flip-flops 74*107 Dual J-K flip-flop (-) triggered 74*109 J-K (+) flip-flop 74*112 Dual J-K w/ set/reset; (-) trig. 74*173 Dual D, (+) 3-state 74*273 High-speed CMOS Logic Octal D flip-flop w/ reset (+) 74*374 High-Speed CMOS Logic Octal D flip-flop; 3state, (+) triggered 74*377 Octal D type w/ enable; (+) 4027 Dual J-K (+) flip-flop
Edge-triggered flip-flops are activated at the rising or falling edge of a clock signal and provides a synchronous input to the output. Some flip-flops also have asynchronous set and reset inputs that allow changing the output irrespective of the state of the clock signal. Along with the J-K inputs, there is also a complementary output pin, !Qn+1.
Check out the block diagram below. You will note there are J, K, clock, set, reset, Q, and !Q pins available in a dual configuration. The logic/excitation table can be found in the datasheet as well as on my schematic that I have attached to the next page. The permutations of inputs are unimportant to us except for the toggle state. When J is HIGH (1) and !K is HIGH (1), then Qn+1 = !Qn. This is just saying that whatever the present state of the flip-flop, the output will be its complement/inverted.
Turn the page and let's get this flip-flop working for us and make our switch!
Step 3: Using the J-K Flip-flop
You may need to refer back to the pinout on the previous page when making your connections to the J-K flip-flop. The big picture we're working with is that we're going to use the state saving feature of the flip-flop along with its ability to easily toggle an output to push 5V and around 6mA to 24mA (each flip-flop IC has varying characteristics so make sure you check out yours). The one I'm using currently has an Io of ~ 10mA. We're going to drive an LED with the Q's ~ 5V output and sink Vcc with !Q, Q's complement. In other words, when Q is HIGH, !Q is LOW and vice versa.
You will recall that the J-K input to toggle the current state is to have both inputs driven HIGH so I've tied the J and K input to a 10k pullup resistor to Vcc (5V). The set (!SD) and reset/clear (!RD) are often both active LOW, but on this IC they are active HIGH so I've tied them to a pulldown to GND.
So if both inputs are permanently tied to 5V, how do we input anything? Remember the clock signal? The Q and !Q outputs are available one setup clock after a positive transition from the rising edge of the clock signal. All we have to do is connect our momentary switch from 5V into the clock signal and when we press the switch and close the connection, we will send a positive edge-trigger to the flip-flop which will have it toggle the output. So, If the Q output is HIGH (ie it's sourcing 5V to the LED) when we press the button again, it will go to LOW (ie off) and when we press it again next it will toggle back to HIGH (on) and so on.
Make sure you look at the picture of the schematic (you don't have to have Eagle and look at the *actual* schematic...there's a picture of it below) if you're unclear about anything. Also, you'll notice I've included a 2-input terminal block to allow the board to accept a 5V and a GND signal.
And that's it. Now your nifty momentary/tactile switch is a push-and-stay-on pushbutton switch.
Step 4: Conclusion
Using the state-saving feature of a sequential circuit like a flip-flop allows us to add a state to our stateless momentary switch with a minimum of external components. I hope you've enjoyed the instructable and maybe I've been able to share a trick or two with you. As always, I welcome your comments and suggestions.
Cheers!
Gian
40 Comments
2 years ago
I am just a dude with a tool that has a momentary switch that is driving me nuts. I thought I could change it to a toggle easily, but I don't know anything he is saying, lol. A list that looks like computer code, Truth and Logic, I thought I was an expert in those, but, alas, I have no reconciliations, here, lol. sighhh. Looks like the zip tie and marble toggle solution. .... I think the problem may lie in that it is a 110V motor, no led, though I'd considered adding one.
Anyone with a helpful observation?
Peace
3 years ago
Just what I was looking for, thanks!
I will have to try to do it with D types, I have a bunch of spare 74HC74s
(update: In case anyone is interested, connect the clock inputs together and to an OR gate (wired OR with diodes) output. Connect each button active high to an OR gate input and a D input. Need pull down's on the inputs. Works in Logisim, not tried real life yet. Might need to create a bit of latency on the clock input)
Question 3 years ago on Step 3
I’m trying to create what amounts to an LED flash gun. What I have in mind is to convert an LED flashlight with a button that will flash the LED array - not leave it on. So even if you hold the momentary switch down, the desired behavior would be to fire the LEDs, but then require the circuit to be broken and the circuit reset before the button would work again. Do you know how I could make this work?
Question 4 years ago on Introduction
Great explanation! Do you think it there is enough space to convert a momentary button into a switch inside this controller? https://www.amazon.it/dp/B01JI58TRI/ref=twister_B06XZKWBLG?_encoding=UTF8&psc=1
11 years ago on Introduction
Question. I've found some really nice momentary switches but wanted to know if they can be used for my needs. Basically I am looking for an On-On-Off switch. I have a drawer with low level LED lighting and full LED lighting. I want to be able to have a single button that if pressed once turns on the red LEDS -- press it again it turns on the white LEDs (thereby also turning off red LEDs) -- press it again and both sets of LEDs are turned off. How do I accomplish this the most easily? I've found basic little ON-ON-OFF switches but like some of the nicer illuminated momentary switches. Thanks in advance for your expertise
Reply 6 years ago
Use a 4bit shift register, loop 3 of them in a closed loop and use the last one for initial condition setting
https://ibb.co/gL5c1F
Reply 11 years ago on Introduction
I'm not sure how you wold do this with an "on-on-off" switch as I've never seen those before. One possible option could be using a momentary switch connected to a counter IC (say, a 4017 decade counter) with the appropriate string of LEDs connected to the appropriate output of the counter. With each clock transition (ie button press) the outputs will go high in sequence.
Just a thought.
Good luck!
8 years ago on Introduction
Hey can anyone help I'm trying to make a simple on on off circuit using 1 small button what I need is first click led1 on second click led1 off led2 on third click led2 off please help :) Thanks.
Reply 6 years ago
Use a 4bit shift register, loop 3 of them in a closed loop and use the last one for initial condition setting
https://ibb.co/gL5c1F
6 years ago
Great! Thanks!
6 years ago
In order to switch the motor rotation direction, you will need 3 push button switches: sw1 and sw2 and reset. When sw2 is pressed after sw1, the motor should turn in one direction. When sw2 is pressed twice the motor should turn in the other direction, the motor remains on in any direction even if the switches are released. The reset button is pressed in order to stop the motor and before the direction change. Some 1 help me with this.
6 years ago
hi, this is a marvelous guide! is it possible to power up your circuit with 3x AAA batteries? would you help me calculate the resistors value if it's possible? thx for the very nice guide! :)
7 years ago
Thank you so much. This helps with my simple problem and I can continue with my sons pokemon electronic game board. my next step is to count each led as a number on 3- 7 segment displays. You have helped so much and when I am done with this project I would like to send you pics. Have a good night and God Bless.
7 years ago
Did you have any trouble with switch bouncing?
7 years ago on Step 2
What happens when you kill the power to the circuit?
7 years ago
Hi. I need 4/5 flashing LEDs to light when a momentary switch is pushed and to stop when pushing againg. (Like your project) is this the one I need? What Else do I need? Thanks :)
http://m.ebay.com/itm/5-PCS-MC14027BD-SOP-16-MC14027-14027B-CD4027-SOP-14-Flip-Flop-/371086035414?nav=SEARCH
Reply 7 years ago on Introduction
Thanks for the comment. I hope this instructable can help you out!
Reply 7 years ago
What kind of resistors are you using? And are you only using the Flip-flop, 4 resistors and 2 LED's? Thanks.
7 years ago on Introduction
if you need more that 2 state.. try use 4017 connected to relay. example for fan 0-off 1=speed1 2=speed2 ...
8 years ago on Introduction
I need to make a push button mechanism to run a motor rated ( 3v - .64A) . This circuit can turn on/off an led fine, but could not start the motor. What change i ned to make to get enough current to run the motor. is there any other way i can make a pushbutton for this motor