This is an emulation of a 555 timer chip that runs on an Arduino. It can run most basic 555 circuits with no change to the program or the wiring of the emulator. The picture shows the emulator setup to run an astable oscillator circuit.

The first two steps show the wiring of the emulator and the program.

The next steps show different 555 circuits running on it.

This is not really a practical way to do things. If you are serious about the 555 it is best buy a chip. You can find them for under \$1.00 any place that sells electronics parts. This was an experiment to see if I could do it.

All the parts needed to complete this project are available at https://www.sparkfun.com/. They also carry a resistor kit and a capacitor kit that will give you all the values needed for this project, and more.

If you want to learn more about the 555 this online E-book shows lots of 555 circuits.

Also please check out my 555 collection of instructables at https://www.instructables.com/id/555-Timer-Circuits-1/

and my Arduino collection at https://www.instructables.com/id/Beginning-Arduino/.

## Step 1: Make the Emulator

To build the emulator you will need:

• Arduino (I used an Uno.)
• Assorted colors of 22 gauge hookup wire
• Red LED
• Green LED
• 2 330-560 Ohm resistors for the LEDs
• 1 K resistor to the base of the transistor
• NPN transistor (I used a 2N3904, a 2N2222 or most general purpose NPN transistors will work.)

Build the circuit as shown in the picture and the diagram.

Notice the polarity of the LEDs. The anode (long lead) of the green LED is connected to the yellow wire and the cathode is connected to ground through a resistor. The cathode of the red LED is connected to the yellow wire and the anode is connected to the positive rail through the resistor.

The top eight rows on the breadboard are the eight pins on the 555 chip:

1. Ground
2. Trigger - When the voltage on the trigger falls to 1/3 of VCC the output pin goes HIGH.
3. Output - It is hooked up to two LEDs, the red LED lights when the pin is LOW and the green when it is HIGH.
4. Reset
5. Control (Not implemented)
6. Threshold - When the voltage on the threshold is greater than 2/3 of VCC the output pin goes LOW.
7. Discharge - When the output pin is LOW it is disconnected and when the output pin is HIGH it is connected directly to ground.
8. VCC.

This circuit is just the emulator, you need to build one of the following 555 circuits before it will do anything.

This emulator has only been tested with the circuits included in this instructable. I'm sure it has some limitations.

```/*******************************************
* Filename: 555-Emu.ino
*
* Emulates the 555 timer chip on an Arduino.
*
*   5V            Positive rail
*   GND           Ground Rail
*   A0            Row 2 - Trigger
*   A1            Row 6 - Threshold
*    5            Row 7 - Discharge
*   10            Row 3 - Output
*
*******************************************/

/*******************************************
* setup() function
*******************************************/
void setup()
{
pinMode(5, OUTPUT);
pinMode(10, OUTPUT);

digitalWrite(5, LOW);
digitalWrite(10, LOW);
}

/*******************************************
* loop() function
*******************************************/
void loop()
{
int discharge = 5;
int output = 10;

if(trigger < 338)
{
digitalWrite(discharge,LOW);
digitalWrite(output, HIGH);
}

if(threashold > 686)
{
digitalWrite(discharge, HIGH);
digitalWrite(output, LOW);
}
}```

This code will run all the 555 circuits in the following steps with no modification.

## Step 3: Emulate a 555 Astable Mode Oscillator

The most common use of a 555 chip is as an oscillator or timer.

To build the circuit you will need:

• 2 10 K resistors
• 10 uF electrolytic capacitor
• Jumper wires

You can change the frequency by changing the value of the capacitor and/or the 10 K resistors. The value of the capacitor and resistors is intended to be a starting point. Less resistance or capacitance will make it run faster, and more will make it run slower. The frequency is inversely proportionate to the RC values.

When the charge on the capacitor rises above 2/3 of VCC the output pin goes LOW and the capacitor starts tp discharge. When the charge in the capacitor drops to 1/3 of VCC the discharge pin is disconnected allowing the capacitor to charge, the output pin goes HIGH, and the cycle continues.

It will not run nearly as fast as a real 555 chip. If your RC values are too small the red light stays on and the green light blinks.

## Step 4: The 555 Emulated in Mono-stable Mode

Mono-stable mode can also be called a one-shot. Pressing the switch will set the output pin to high for a period of time determined by the capacitor and the 10K resistor.

To build the mono-stable circuit you will need:

• 10 K resistor
• 2.2 K resistor
• 100 uF electrolytic capacitor
• Pushbutton switch
• Jumper wires

Again the 10 K resistor and the 100 uF capacitor are just starting points. Experiment with different values and observe the results.

## Step 5: Bi-stable Operation, a Latch

In bi-stable mode the button on the bottom sets the output pin high, it stays high until the upper button button is pressed which resets the 555. There is a slight delay because the Arduino has to re-boot so it can't reset as fast as a real 555. While it is resetting the green LED will glow faintly.

To build the circuit you will need:

• 2 Pushbutton switches
• 2 22 K resistors
• Jumper wires

## Step 6: A NOT Gate

All you need to build this circuit is a 10 K potentiometer and jumper wires.

The trigger and the threshold are tied together to make one input. Use the potentiometer to change the voltage. You will notice that when the voltage is low the output pin will go HIGH and when the voltage is high the output pin goes LOW.

The center third of the voltage range is a dead spot called hysteresis. You will have to turn the pot well past half way in either direction for the output pin to change. This is a useful circuit when you need a NOT gate that is not very sensitive.

<p>Looks like a good educational project I have used 555 chips regularly since they first appeared on the market, and am pretty familiar with them. One thing occurred to me: What about a version, on the Arduino, where the component types and values are simply programmed in software, and thus don't have to exist as solid objects. You select the type of circuit, enter the values of the R + C components, and use either an external pin or software trigger as the source signal. </p><p>If you are feeling really energetic, what about a pSpice version? :)</p><p>Cheers</p><p>D</p><p>One thing occurred to me: </p>
<p>I took your advice and created another instructable with the R/C values in software. It works on a RaspberryPi or an Adruino, or a Linux PC.</p><p>https://www.instructables.com/id/555-Timer-Calculator-for-RaspberryPi-Arduino-or-a-/</p>
<p>That is an interesting idea, I'm thinking more like a RaspberryPi than an Arduino for that.</p>
I think I've seen it all.
<p>If you like this please vote for me in the Make It Glow contest, or the Arduino Contest.</p><p>Thank You</p>