Blink an LED - embedded version of HelloWorld

Dependencies:   mbed

Fork of HelloWorld by Simon Ford

What Does It Do?

This code blinks the LED - the embedded version of the classic beginners' program Hello World.

/media/uploads/cputalk/led-flash2.gif

The source code can be viewed at the bottom of this page by clicking on main.cpp.

However, the easiest way to use the code is to click on Import into Compiler from the Repository Toolbox on the right, as shown in the screen capture below:
/media/uploads/cputalk/repository-toolbox-3.gif
This loads a copy of the code into your browser-based, online compiler. Click on Compile and in a few seconds your will have compiled your own Hello World!

By the way, edit and experiment as much as you want, because you cannot mess anything up - you can come back here any time and import again for a fresh start.

This code is identical to Simon Ford's /teams/mbed/code/mbed_blinky/ and ST's /teams/ST/code/Nucleo_blink_led/ except that this source contains extra comment lines.

What hardware does it work with?

Any of the official mbed platforms: https://developer.mbed.org/platforms/

Library Information

The mbed library used by this code is currently /users/mbed_official/code/mbed/rev/093f2bd7b9eb, which is revision 140 of the official mbed 2 library. Revision 140 was released on April 12, 2017. You can verify this by viewing the contents of the mbed.bld file at the bottom of this page.

The mbed library is automatically imported when you import this code into your online editor - in general you don't need to do anything special.

mbed Library Source Code

One of the coollest features of mbed is that the mbed library source code is freely available.

You can find the library source code here https://developer.mbed.org/users/mbed_official/code/mbed-dev/. This is not an easy read - if you are a beginner, you will probably find this intimidating. But, here it is, dig in!

If Your Compile Fails

If your compile fails, it's most likely that you are using brand new hardware that was not yet included when revision 140 of the mbed library was released. In that case, update to the latest library. (see below)

Updating to the Latest mbed Library

In your online compiler, click on "mbed" in your Program Workspace, as in the picture below:

/media/uploads/cputalk/mbed-lib.gif

Then, on the right side of your screen, under Library Build Details, click on Update, as seen in the picture below:

/media/uploads/cputalk/lib-build-details.gif

Notice how the Status line in the Library Build Details window (above) informs you new version available.

I will attempt to regularly update the code to use the latest mbed library version. If I fall behind, use the two simple steps described above to update it yourself!

Committer:
cputalk
Date:
Mon Apr 24 16:54:06 2017 +0000
Revision:
9:e3ebd58a24b4
Parent:
7:8a1d3d49c31c
Updated library version to 140

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cputalk 6:6c170453bfde 1 // Elementary code to blink an LED
cputalk 6:6c170453bfde 2
cputalk 6:6c170453bfde 3 // This code is identical to mbed_blinky, but has a few more comments, mostly for beginners.
cputalk 6:6c170453bfde 4
cputalk 7:8a1d3d49c31c 5 // If this code fails to compile, you probably have new hardware. Read https://developer.mbed.org/users/cputalk/code/HelloWorld/
cputalk 2:486a4fe519e1 6
cputalk 6:6c170453bfde 7 // You can read the mbed home page assocated with this code here: https://developer.mbed.org/users/cputalk/code/HelloWorld/
simon 0:fb6bbc10ffa0 8
cputalk 7:8a1d3d49c31c 9 #include "mbed.h" // This is how one imports the primary library functions on mbed
cputalk 6:6c170453bfde 10
cputalk 6:6c170453bfde 11 DigitalOut myled(LED1); // Configure LED1 pin as a digital output. LED1 is typically pre-defined in the code for your specific target board.
cputalk 2:486a4fe519e1 12
cputalk 2:486a4fe519e1 13 int main() // Start of main program
simon 0:fb6bbc10ffa0 14
cputalk 2:486a4fe519e1 15 {
cputalk 2:486a4fe519e1 16
cputalk 3:868c1fb7b5b0 17 while(1) // Start an endless loop
cputalk 2:486a4fe519e1 18
cputalk 6:6c170453bfde 19 { // start of code block for endless loop
cputalk 2:486a4fe519e1 20
cputalk 2:486a4fe519e1 21 myled = 1; // Set pin high, turns LED off
cputalk 2:486a4fe519e1 22 wait(0.2); // Wait 0.2 seconds
cputalk 2:486a4fe519e1 23
cputalk 2:486a4fe519e1 24 myled = 0; // Set pin low, turns LED on
cputalk 2:486a4fe519e1 25 wait(0.2); // Wait 0.2 seconds
cputalk 2:486a4fe519e1 26
cputalk 6:6c170453bfde 27 } // end of code block for endless loop
cputalk 2:486a4fe519e1 28
cputalk 2:486a4fe519e1 29 } // end of main program