Please note that User Registration has been temporarily disabled due to a recent increase in automated registrations. If anyone needs an account, please request one here: RequestAccount. Thanks for your patience!--Wmat (talk)
Please email User:Wmat if you experience any issues with the Request Account form.

RPi Tutorial EGHS:LED output

Revision as of 12:24, 1 February 2012 by Meltwater (Talk | contribs)

Jump to: navigation, search

Back to the Hub.

Community Pages:

Tutorials - a list of tutorials. Learn by doing.

Guides - a list of informative guides. Make something useful.

Projects - a list of community projects. Help others out.

Tasks - for advanced users to collaborate on software tasks.

Datasheets - a documentation project.

Education - a place to share your group's project and find useful learning sites.

Community - links to the community elsewhere on the web.

Games - all kinds of computer games.


While most of these circuits may interface directly to the RPi, the use of a buffered interface (such as the one supplied by the Gertboard) is recommended which will help protect against damage. Alternatively, experiment with one of the Alternative Test Platforms.

Extreme caution should be exercised when interfacing hardware at a low level, you may damage your RPi, your equipment and potentially yourself and others. Doing so is at your own risk!


The purpose of this guide is to enable control of an LED via the GPIO pins of the RPi.

This is the embedded version of writing a program to display "Hello World" and is the first step in getting started.

The first stage will be to build the hardware we are going to use, and then we shall look at the software which will drive it.

Until RPi devices are available, I can not confirm this will work on a real RPi.
For now, I shall be using the TI LaunchPad (see  Alternative Test Platforms
for details) to test the hardware on (as it is cheap and the logic levels similar).

The Hardware


This is only a brief and rough overview, since the basics are covered in a lot more detail in many other places (see below).

The GPIO pins on the RPi when defined as an Output is able to cause the voltage on the pin to go HIGH (source) or LOW (sink). This allows signals to be sent to other processors and devices like LEDs. However it is important to remember that the pin will only be able to Source or Sink very small currents, so higher powered devices (such as motors) can not be driven directly from a GPIO pin.

For additional detail see [Introduction To Embedded Programming - GPIO Output]

Circuit 1

Basic LED Output Circuit 1

The resistor R1 is used to limit the current going through the LED (which has hardly any resistance), without the resistor, the LED will draw as much current as it can until it burns out (or burns out your GPIO pin).

The value you select for R1 will depend on the current required by the LED (upto 20mA depending on the LED used - check the datasheet) and the source current limit of the GPIO (launchpad is ~20mA). We also need to know the forward voltage required by the LED to light, typically around 2V-3.5V depending on colour[1]. The RPi (and LaunchPad) GPIO is 3.3V output level.

Vout = 3.3V
Vled = 2V (I'm using RED)
Iled = 5mA = 0.005A
R1 = (Vout – Vled)/Iled
   = (3.3 - 2)/0.005
   = 260ohms (so 270ohms is closest preferred value)

If in doubt use a bigger resistor (=less current & brightness) and test by connecting across the 3.3V and ground pins (if you are just experimenting you are unlikely to need LEDs shining at their full brightness anyway).

For instance, my test circuit uses 470ohms (which only gives 2.7mA on 3.3V, but the same circuit can be connected to a 12V supply without blowing the LED - rated @20mA).

The Software

While the RPi is not available, I can only confirm the TI LaunchPad code works for me.

TI LaunchPad


  1. LED Forward Voltages