Introduction: Heartbeat Pulsing LED

Picture of Heartbeat Pulsing LED

This work is heavily derived from several tutorials that I scraped together from other places to get all the info in one place. I will cite all references at the end.

The Project:

Those following me will come to notice that I tie my projects together. I love to learn with a purpose/goal so in this case, the purpose is to improve my Mandalorian Mercs costume. This Instructable will be to improve one of my gauntlets. The large blue "displays" are EL panels but util now the LED domes are just decorative. In this project I'll be adding an LED into one of these spots which will fade in, beat twice then fade out for a heartbeat effect like the attached video.

Materials:

  • Arduino Trinket (Get the 3-volt version for this)
  • Wire and/or Breadboard jumpers
  • Soldering Iron and Solder
  • LED
  • Desktop/Laptop computer with an avalable USB port
  • Mini-USB Cable
  • 3.7V LiPo Battery (optional)

Step 1: Set Up Your Computer

This is going to be the hardest step. If you already use the Arduino IDE, you might need to modify your IDE to work with the Trinket. If you don't already use the Arduino IDE then you can download a special version that already has the changes built in. Naturally, this step will vary depending on which OS your computer uses.

Assuming you are new to the Arduino, the easiest way will be to download the pre-modified version from the Adafruit website. They have instructions and tips for each OS and I found them easy to follow so I won't copy/paste them here.


Step 2: Build the Circuit

Picture of Build the Circuit

The circuit is as simple as it gets. Your Trinket will come without the header pins attached so you can choose for yourself if you want to solder directly to the board, solder to the pins, or use a breadboard.

Breadboard:

If you don't want to commit the Trinket then the breadboard works well. Solder on the header pins that came with your Trinket and they're spaced ready for a breadboard, no sweat. Take one breadboard jumper from PIN 4 to the positive lead of the LED [the longer one] and one from the negative lead to the GND pin. Done. Really.

Solder:

If you like the project and decide to commit a Trinket to this, you'll need to solder leads from PIN 4 to LED+, then from LED- to the GND pin on the Trinket. I grabbed a random red LED that I had laying around and it has been running for three days straight without an inline resistor. I tried a 220Ω resistor inline out of habit but it was too much and the LED couldn't be seen since the Trinket is only passing 3V as it is. If you bought the 5V Trinket you may want a small resistor in there.

Step 3: Program the Trinket

Picture of Program the Trinket

For those unfamiliar with Arduino, a program to be uploaded into an Adruino is called a "sketch".

Open up the Arduino program that you installed in Step 1 and it will give you a blank page to type your new sketch. Paste in the code below:

int ledPin = 4;    // LED connected to digital pin 4 for Trinket

void setup()  { 
  // nothing happens in setup 
} 

void loop()  { 
  // fade in from min to max in increments of 5 points:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);         
    // wait for 20 milliseconds to see the dimming effect    
    delay(20);                            
  } 
  
  delay (100);
  analogWrite(ledPin, 0);
  delay (80);
  analogWrite(ledPin, 255);  
  delay (100);
  analogWrite(ledPin, 0);
  delay (80);
  analogWrite(ledPin, 255);  

  // fade out from not-quite-max to min in increments of 5 points:
  for(int fadeValue = 200 ; fadeValue >= 0; fadeValue -=5) { 
    // sets the value (range from 0 to 200):
    analogWrite(ledPin, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  } 
}

Once that is pasted in, make sure the Trinket is plugged into your USB port and press the button on the Trinket. Your Red light on the Trinket will start to flash to let you know it is ready to receive the code. While it is flashing, hit the right arrow on the computer. If all goes well, you will see "Compiling sketch" flash pretty quickly then "Done uploading".

If you get any errors, check the Troubleshooting step. I'll put in what I can think of now and add more tips as people ask.

If you didn't get any errors, your LED should be beating away and you're either staring at it or plugging away at the code trying to figure out how to make it do something different.

Step 4: Troubleshooting:

If you have trouble uploading the sketch to your Trinket, the first things to check are in the Tools menu.

Ensure that Tools > Board > Adafruit Trinket 16Mhz is selected. If you don't see this then I am guessing you didn't install the modified version of the IDE from Step 1 or you tried to install it side by side with the unmodified version. I ended up uninstalling the original version and use only the modified one.

Another thing to check will be to make sure Tools > Programmer > USBtinyISP is selected.

If both of those are ticked and you are still getting an error, drop me a line and we'll try to get it sorted so i can add it here for others.

Step 5: What Now?

If you are like me, you've already tried messing with the code to see what you can change and flashed a few other variants to the Trinket to see how they work. Mess around with the speed of the fade-in and fadeout, change the delays on the heartbeat pulses. The best part of the Trinket over using 555 timers and resistors is that you can try dozens of different speeds and get it exactly how you want. The Trinket only has one PWM pin so only one LED can fade in and out, but on another pin you can do on/off.

Set the pin that you are using:

int led2 = *pin number*;
pinMode(led2, OUTPUT);

From there, to turn the LED on you use:

digitalWrite(led2, HIGH);

to turn the LED off is:

 digitalWrite(led2, LOW);

Step 6: Citations:

Comments

JTP424 (author)2017-03-21

Awesome instructable, this is getting me into Arduino.

My question is on the resistor for the 5V version, where do I put it?

If I was to keep it constantly powered... USB to wall wart?

Thoughts? Thanks!

JamesW33 (author)JTP4242017-11-12

The resistor goes in series with the LED connected to the anode (longer leg) For this use on 3V it isn't strictly required, but still highly recommended as it will lengthen the life of you LED, and you will absolutly need one running on 5V.

One thing you might not be aware of is that LEDs require different resistor values depending on their forward voltage, http://ledcalc.com/ may help you.

ElizabethG146 (author)2017-07-03

Hello! Could this work with a small tap light? Could you solder leads to one of the small 4-7 bulb LED push-button lights that you use in pantries or basements for more space?

ksavant (author)2016-11-30

Hello! I am an artist who is looking to use your code as a basis to begin a lighting project involving the heartbeat. I am new to codes and Arduino so I'm struggling with this a bit. I was wondering if the code you provide will continuously run if it stays plugged in?

miststlkr (author)ksavant2016-11-30

Yup, as long as you keep power it will just keep going.

About This Instructable

6,233views

15favorites

License:

More by miststlkr:Prepare a color image for laser engravingHeartbeat Pulsing LEDFiberglass Costume Helmet
Add instructable to: