I want to use a 555 timer IC (NE55P) as a latching toggle switch. I successfully did it using a switch as described in this toggle 555 schematic:

toggle 555

Except, I am using 5V power with an LED as an output indicator.

More or less is like this:

enter image description here

My goal is to make the 555 timer accept both an Arduino (5V) out signal and a momentary switch to be able to toggle the 555 output independently. It's like having two momentary switches. One from thr Arduino, and one from a push-button.

I've tried using a 2N2222A transistor as a switch replacement or directly using a 10k resistor from the Arduino output to pin 2 of the 555 timer but it won't toggle properly. It just flashed and turned off again.

How to do it?


The main reason I want to control the NE555P trigger pin using both an Arduino and a button is because:

  1. I am building an IOT control and monitoring. I will need the button to send information if it is pressed (or toggled.)

  2. In that case, I need to place the Arduino microcontroller near a gateway (internet) which also covers many control spots, one of them is a button and the 555 circuit near a convenient location for switching lights.

  3. I also need to make both independent. In case the Arduino is down, the 555 can still be functional for turning off a light with a relay.

  4. I chose a 555 over directly using an Arduino's GPIO because it's compact, small and independent, so it can be installed in a small button box. Moreover, the 555 can toggle, which is important for the two parallel inputs to be independent. I just need around a 100ms high pulse to toggle the state.

  5. Three wires from the Arduino is enough. Common ground and 5V out pin, and one for monitoring the status.

  6. NE555P is cheap and just dorsthe job.

Several discussions are not giving answers, tend to go towards personal opinion. It's best if you give the answer first then you can add the opinion afterwards. That way is much more appreciated.

Extra question: How to make it accept a 3.3V trigger?

  • 7
    \$\begingroup\$ If you have an arduino, why on earth would you use a 555? just implement your timer in software. \$\endgroup\$ Commented Feb 21, 2020 at 23:32
  • \$\begingroup\$ to make it compact in the button switch \$\endgroup\$ Commented Feb 21, 2020 at 23:33
  • 4
    \$\begingroup\$ ... that 555 including supporting circuitry is larger than a small arduino-capable microcontroller board. By far. It also uses way more power and is way less accurate. \$\endgroup\$ Commented Feb 21, 2020 at 23:35
  • 2
    \$\begingroup\$ you don't need anything in that button. All the functionality can be contained in the arduino, with fewer extra cables, since if you just run the button to the arduino, you won't need an additional supply voltage for the NE555 in the button. Instead of running the supply for the NE555 to the button, you just run an arduino output. Same number of cables, one NE555 less. \$\endgroup\$ Commented Feb 21, 2020 at 23:39
  • 1
    \$\begingroup\$ I'd say yes, but that is just a manner of opinion. It just doesn't make any sense to use one in your situation: you can fully work with three cables, and no NE555. \$\endgroup\$ Commented Feb 22, 2020 at 0:07

1 Answer 1


Connect an arduino GPIO directly to pin 6 of the 555, when configured as an input it will do nothing (allowing manual control via the button), but when configured as output (low or high) it will turn the 555 on or off. (then set it back to an input to allow the switch to work)

if you need toggle action connect a different GPIO to pin 3 and write the opposite of what you see there to the first GPIO ot flip the 555 to the opposite state.

To make it aceppt 3.3V triggering change the top 10K to 22K, put a 4.7K resistor from pin 5 to ground and and put 150K parallel to the 10uF capacitor.


simulate this circuit – Schematic created using CircuitLab

the arduino can motnior the status on the monitoring input, the command output should be high impedance most of the time sending a brief pulse of high or low will set the state of the 555. to toggle it read the monitoring input and write to the command output briefly, 1ms should be plenty long enough.

R1 reduces the voltage on pin 7 to 2.4V meaning the 555's threshold and trigger levels are now 2.4V and 1.2V thus compatible with the 3.3V logic at the other end of the wire.

R5 keeps the charge in the capacitor from exceedinf 3.3V (which could otherwise damage the arduino when the button is pressed)

R6 and R7 are a voltage divider to make the 5V from the 555 into 3.3V for the monitoring input.

For 12V operation instead of 5V reduce R1 to 1.2K increase R2 and R6 to 39K. The relay coil resistance requirement increases to 120 ohms.

  • \$\begingroup\$ that's not the goal i described before. what i want is both arduino and momentary switch can toggle the 555out independently.so, it's like there's two switch. one from arduino, and one from the button. \$\endgroup\$ Commented Feb 21, 2020 at 23:17
  • 2
    \$\begingroup\$ you can do that in software easier than using extra hardware. \$\endgroup\$ Commented Feb 21, 2020 at 23:20
  • \$\begingroup\$ the main goal is, i'd like to make a device that can be controlled from internet, also can be controlled manually. for example, i want to toggle a light bulb in a house both from my phone and a push button switch. do you think it's easier in software? \$\endgroup\$ Commented Feb 21, 2020 at 23:26
  • 3
    \$\begingroup\$ absolutely, it's like 4 extra lines of code vs some sort of trasmission gate or analogue switch that'll be several parts or an extra IC. \$\endgroup\$ Commented Feb 21, 2020 at 23:33
  • 3
    \$\begingroup\$ We understand you want to toggle the 555 output with a button and Arduino. But you have not explained yet why, so we don't know why you think there must be a 555 and why the toggle funcrionality of the 555 cannot be included in Arduino code. So far this appears like an XY problem, you are trying to achieve something (the X we don't know) and you have decided to solve X with a 555 chip so you are asking question Y (how to use 555 in this case).. So tell us what does the 555 output contol and what problem does it solve? \$\endgroup\$
    – Justme
    Commented Feb 22, 2020 at 7:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.