![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
FRDM-KL25z simple tutorial example of controlling the RGB LED to flash different colors, and sending status messages to the host via the pc serial connection. Includes extensive explanatory comments.
Diff: main.cpp
- Revision:
- 0:209b9385be7b
- Child:
- 1:c07d099d8e31
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jul 18 14:47:52 2013 +0000 @@ -0,0 +1,69 @@ +/* Test of FRDM-KL25z RGB LED and Serial out to PC. + * This program blinks the LED through the series of colors + * red, greeen, and blue, displaying each for 1 second, with + * a 1 second off period between each color. As it makes each + * change in the status of the LED, it sends a message to the + * pc serial port over the USB programming connection. The + * pattern repeats 5 times, then two short white flashes are + * displayed by turning all threee LEDs on and off at once, and + * a final message is sent to the serial port. + * + * Tested from OSX 10.8.4. To find the serial port device, + * launch Terminal, then type: + * + * ls /dev/tty.usbmodem* + * + * It will return something like /dev/tty.usbmodem1d22 + * To change Terminal to connect to the serial port, use the screen + * command, specifying the path returned by ls and the baud rate: + * + * screen /dev/tty.usbmodem1d22 9600 + * + * As a shortcut, if you have just one serial device connected, you + * can skip the first command and type the second command as far as + * tty.usb and hit the tab key and it will autocomplete. + * Once screen is running, type Ctrl-a then ? for a list of available + * commands. + */ + +#include "mbed.h" + +DigitalOut redLED(LED_RED); // Define digital outputs for each LED color +DigitalOut greenLED(LED_GREEN); +DigitalOut blueLED(LED_BLUE); +Serial pc(USBTX, USBRX); // Declare the serial port + +int main() { + pc.baud (9600); // Set the baud rate for the serial connection + redLED = 1; // This a common cathode RGB LED, with the cathodes connected + greenLED = 1; // to 1. Thus, to turn a color off you counterintuitively set + blueLED = 1; // it to 1, so there is no voltage difference across the LED + for (int i = 1; i <= 5; i++) { // Do 5 times: + redLED = 0; // Turn the red LED on + pc.printf("Red LED ON \n\r"); // Send a status message + wait(1.0); // Wait 1.0 seconds + redLED = 1; // Turn the red LED off + pc.printf("Red LED OFF \n\r"); // Send a status message + wait(1.0); // Wait 1.0 seconds + greenLED = 0; // Repeat the above for the green LED + pc.printf("Green LED ON \n\r"); + wait(1.0); + greenLED = 1; + pc.printf("Green LED OFF \n\r"); + wait(1.0); + blueLED = 0; // Repeat for the blue LED + pc.printf("Blue LED ON \n\r"); + wait(1.0); + blueLED = 1; + pc.printf("Blue LED OFF \n\r"); + wait(1.0); + } + redLED = greenLED = blueLED = 0; // Give a short double-flash of white + wait(0.25); + redLED = greenLED = blueLED = 1; + wait(0.25); + redLED = greenLED = blueLED = 0; + wait(0.25); + redLED = greenLED = blueLED = 1; // Leave the LED off at the end + pc.printf("Goodbye \n\r"); // Send a farewell message +} \ No newline at end of file