My take on the obligatory Hello World app for the FRD-KL25Z platform. This app shows off some of the onboard peripherals. I have commented a chunk of the code, and will work to revise this to add more commenting of all sub-routines.

Dependencies:   FRDM_MMA8451Q TSI mbed

Revision:
0:216148fa726d
Child:
1:6a1079e4e6ab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 26 15:11:39 2014 +0000
@@ -0,0 +1,321 @@
+#include "mbed.h"
+#include "TSISensor.h"
+#include "MMA8451Q.h"
+
+
+// This is the default address as specified by the mfg
+#define MMA8451_I2C_ADDRESS (0x1d<<1)
+
+
+PwmOut myRedLed(LED1);
+PwmOut myGreenLed(LED2);
+PwmOut myBlueLed(LED3);
+PwmOut externalLight(D0);
+
+MMA8451Q accel(PTE25, PTE24, MMA8451_I2C_ADDRESS);    // 3-axis MEMS accelerometer.
+TSISensor touchSlider;      // Capacitive touch sensor, defined as touchSlider.
+
+//Function forward declarations
+void AccelDemo();
+void SliderFadeTimeDemo();
+void TouchFadeIn(float val);
+void TouchFadeOut(float val);
+
+//
+// The following prototypes are all related to the morse code blinking.
+//
+void morseCodeBlinker(char input[], float speed);
+void SendLetter(char input, float speed);
+void WordSpace(float speed);
+void LetterSpace(float speed);
+void Dash(float speed);
+void Dot(float speed);
+
+
+//Main constructor
+int main()
+{
+    // Blink the LED's to morse code "HELLO WORLD"
+    morseCodeBlinker("How are you", 0.25f);
+
+
+    while (1)
+    {
+        // In the infinite loop of Main, we check to see if the touch slider is being touched
+        // and if it is we call the touch slider demo function
+        // if it is not we will be performing the accelerometer demo function
+        if (touchSlider.readDistance() > 1)
+        {
+            SliderFadeTimeDemo();
+        }
+        else
+        {
+            AccelDemo();
+        }
+    }
+
+}
+
+
+
+void SliderFadeTimeDemo()
+{
+    float val = 0.00f;
+
+    if (touchSlider.readDistance() > 2)
+    {
+        val = touchSlider.readDistance() * 0.5f;
+        TouchFadeIn(val);
+        TouchFadeOut(val);
+    }
+    else
+    {
+        if (val > 4)
+        {
+            TouchFadeIn(val);
+            TouchFadeOut(val);
+        }
+        else
+        {
+            myRedLed = 1.00f;
+            myGreenLed = 1.00f;
+            myBlueLed = 1.00f;
+        }
+    }
+}
+
+
+void TouchFadeIn(float val)
+{   
+    for (float i = 1.00f; i > 0.00f; i -= 0.01f)
+    {
+        myRedLed = i;
+        myGreenLed = i;
+        myBlueLed = i;
+        externalLight = i;
+        wait_ms(val);
+    }
+}
+
+
+void TouchFadeOut(float val)
+{   
+    for (float i = 0.00f; i < 1.00f; i += 0.01f)
+    {
+        myRedLed = i;
+        myGreenLed = i;
+        myBlueLed = i;
+        externalLight = i;
+        wait_ms(val);
+    }
+}
+
+
+
+void AccelDemo()
+{
+    float xAxisData = 1 - abs(accel.getAccX());
+    float yAxisData = 1 - abs(accel.getAccY());
+    float zAxisData = 1 - abs(accel.getAccZ());
+
+    myGreenLed = xAxisData;
+    myRedLed = yAxisData;
+    myBlueLed = zAxisData;
+
+    wait_ms(100);
+}
+
+
+void morseCodeBlinker(char input[], float speed)
+{
+    for (unsigned int i = 0; i < sizeof(input); i++)
+    {
+        if (input[i] == ' ')
+        {
+            WordSpace(speed);
+        }
+        else
+        {
+            SendLetter(input[i], speed);
+            LetterSpace(speed);
+        }
+    }
+}
+
+
+void SendLetter(char input, float speed)
+{
+    char lowerCaseLetter = tolower(input);
+
+    switch (lowerCaseLetter)
+    {
+        case 'a' :
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'b' :
+            Dash(speed);
+            Dot(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 'c' :
+            Dash(speed);
+            Dot(speed);
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 'd' :
+            Dash(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 'e' :
+            Dot(speed);
+            break;
+        case 'f' :
+            Dot(speed);
+            Dot(speed);
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 'g' :
+            Dash(speed);
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 'h' :
+            Dot(speed);
+            Dot(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 'i' :
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 'j' :
+            Dot(speed);
+            Dash(speed);
+            Dash(speed);
+            Dash(speed);
+            break;
+        case 'k' :
+            Dash(speed);
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'l' :
+            Dot(speed);
+            Dash(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 'm' :
+            Dash(speed);
+            Dash(speed);
+            break;
+        case 'n' :
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 'o' :
+            Dash(speed);
+            Dash(speed);
+            Dash(speed);
+            break;
+        case 'p' :
+            Dot(speed);
+            Dash(speed);
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 'q' :
+            Dash(speed);
+            Dash(speed);
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'r' :
+            Dot(speed);
+            Dash(speed);
+            Dot(speed);
+            break;
+        case 's' :
+            Dot(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+        case 't' :
+            Dash(speed);
+            break;
+        case 'u' :
+            Dot(speed);
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'v' :
+            Dot(speed);
+            Dot(speed);
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'w' :
+            Dot(speed);
+            Dash(speed);
+            Dash(speed);
+            break;
+        case 'x' :
+            Dash(speed);
+            Dot(speed);
+            Dot(speed);
+            Dash(speed);
+            break;
+        case 'y' :
+            Dash(speed);
+            Dot(speed);
+            Dash(speed);
+            Dash(speed);
+            break;
+        case 'z' :
+            Dash(speed);
+            Dash(speed);
+            Dot(speed);
+            Dot(speed);
+            break;
+    }
+}
+
+void WordSpace(float speed)
+{
+    wait(speed * 7);
+}
+
+void LetterSpace(float speed)
+{
+    wait(speed * 3);
+}
+
+void Dash(float speed)
+{
+    myRedLed = 0;
+    myGreenLed = 0;
+    myBlueLed = 0;
+    wait(speed * 3);
+    myRedLed = 1;
+    myGreenLed = 1;
+    myBlueLed = 1;
+    wait(speed);
+}
+
+void Dot(float speed)
+{
+    myRedLed = 0;
+    myGreenLed = 0;
+    myBlueLed = 0;
+    wait(speed);
+    myRedLed = 1;
+    myGreenLed = 1;
+    myBlueLed = 1;
+    wait(speed);
+}
\ No newline at end of file