
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
Diff: main.cpp
- 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