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

Committer:
milspect18
Date:
Sun Aug 17 23:47:51 2014 +0000
Revision:
1:6a1079e4e6ab
Parent:
0:216148fa726d
Initial published release of my version of the FRDM-KL25Z board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
milspect18 0:216148fa726d 1 #include "mbed.h"
milspect18 1:6a1079e4e6ab 2 #include "ctype.h"
milspect18 0:216148fa726d 3 #include "TSISensor.h"
milspect18 0:216148fa726d 4 #include "MMA8451Q.h"
milspect18 0:216148fa726d 5
milspect18 1:6a1079e4e6ab 6 #define MMA8451_I2C_ADDRESS (0x1d<<1) // 0x01D<<1 is the default address as specified by the mfg
milspect18 0:216148fa726d 7
milspect18 0:216148fa726d 8
milspect18 1:6a1079e4e6ab 9 /********************************
milspect18 1:6a1079e4e6ab 10 * GLOBAL VARIABLES / GPIO PINS *
milspect18 1:6a1079e4e6ab 11 ********************************/
milspect18 1:6a1079e4e6ab 12 PwmOut myRedLed(LED1); //
milspect18 1:6a1079e4e6ab 13 PwmOut myGreenLed(LED2); // LED1, LED2 and LED3 are the R, G and B onboard leds
milspect18 1:6a1079e4e6ab 14 PwmOut myBlueLed(LED3); //
milspect18 1:6a1079e4e6ab 15 PwmOut externalLight(PTA1); // For use with an external led.
milspect18 0:216148fa726d 16
milspect18 0:216148fa726d 17 MMA8451Q accel(PTE25, PTE24, MMA8451_I2C_ADDRESS); // 3-axis MEMS accelerometer.
milspect18 1:6a1079e4e6ab 18 TSISensor touchSlider; // Capacitive touch sensor, instantiated as touchSlider.
milspect18 1:6a1079e4e6ab 19 Serial pc(USBTX, USBRX); // Instantiate a new serial port using the Serial over USB
milspect18 1:6a1079e4e6ab 20
milspect18 0:216148fa726d 21
milspect18 1:6a1079e4e6ab 22 //-----------------------------------------------------------//
milspect18 1:6a1079e4e6ab 23 // Function prototypes for the accelerometer demo function //
milspect18 1:6a1079e4e6ab 24 // as well as the capacitive touch slider demo //
milspect18 1:6a1079e4e6ab 25 //-----------------------------------------------------------//
milspect18 0:216148fa726d 26 void AccelDemo();
milspect18 0:216148fa726d 27 void SliderFadeTimeDemo();
milspect18 0:216148fa726d 28 void TouchFadeIn(float val);
milspect18 0:216148fa726d 29 void TouchFadeOut(float val);
milspect18 0:216148fa726d 30
milspect18 1:6a1079e4e6ab 31 //-----------------------------------------------------------------------//
milspect18 1:6a1079e4e6ab 32 // The following prototypes are all related to the morse code blinking. //
milspect18 1:6a1079e4e6ab 33 //-----------------------------------------------------------------------//
milspect18 0:216148fa726d 34 void morseCodeBlinker(char input[], float speed);
milspect18 0:216148fa726d 35 void SendLetter(char input, float speed);
milspect18 0:216148fa726d 36 void WordSpace(float speed);
milspect18 0:216148fa726d 37 void LetterSpace(float speed);
milspect18 0:216148fa726d 38 void Dash(float speed);
milspect18 0:216148fa726d 39 void Dot(float speed);
milspect18 0:216148fa726d 40
milspect18 0:216148fa726d 41
milspect18 1:6a1079e4e6ab 42 /****************
milspect18 1:6a1079e4e6ab 43 * MAIN ROUTINE *
milspect18 1:6a1079e4e6ab 44 ****************/
milspect18 0:216148fa726d 45 int main()
milspect18 0:216148fa726d 46 {
milspect18 0:216148fa726d 47 // Blink the LED's to morse code "HELLO WORLD"
milspect18 1:6a1079e4e6ab 48 float blinkSpeed = 0.05f;
milspect18 1:6a1079e4e6ab 49 morseCodeBlinker("Hello World", blinkSpeed);
milspect18 0:216148fa726d 50
milspect18 1:6a1079e4e6ab 51 while (true)
milspect18 0:216148fa726d 52 {
milspect18 1:6a1079e4e6ab 53 //--------------------------------------------------------------------------------------//
milspect18 1:6a1079e4e6ab 54 // In the infinite loop of Main, we check to see if the touch slider is being touched //
milspect18 1:6a1079e4e6ab 55 // and if it is we call the touch slider demo function //
milspect18 1:6a1079e4e6ab 56 // if it is not we will be performing the accelerometer demo function //
milspect18 1:6a1079e4e6ab 57 //--------------------------------------------------------------------------------------//
milspect18 1:6a1079e4e6ab 58
milspect18 1:6a1079e4e6ab 59 char userInput;
milspect18 1:6a1079e4e6ab 60
milspect18 1:6a1079e4e6ab 61 if (pc.readable())
milspect18 1:6a1079e4e6ab 62 {
milspect18 1:6a1079e4e6ab 63 userInput = pc.getc();
milspect18 1:6a1079e4e6ab 64 pc.putc(userInput);
milspect18 1:6a1079e4e6ab 65 pc.putc('\n');
milspect18 1:6a1079e4e6ab 66 pc.putc('\r');
milspect18 1:6a1079e4e6ab 67 }
milspect18 1:6a1079e4e6ab 68
milspect18 0:216148fa726d 69 if (touchSlider.readDistance() > 1)
milspect18 0:216148fa726d 70 {
milspect18 0:216148fa726d 71 SliderFadeTimeDemo();
milspect18 0:216148fa726d 72 }
milspect18 0:216148fa726d 73 else
milspect18 0:216148fa726d 74 {
milspect18 0:216148fa726d 75 AccelDemo();
milspect18 0:216148fa726d 76 }
milspect18 0:216148fa726d 77 }
milspect18 0:216148fa726d 78
milspect18 0:216148fa726d 79 }
milspect18 0:216148fa726d 80
milspect18 0:216148fa726d 81
milspect18 0:216148fa726d 82
milspect18 1:6a1079e4e6ab 83 /****************
milspect18 1:6a1079e4e6ab 84 * SUB ROUTINES *
milspect18 1:6a1079e4e6ab 85 ****************/
milspect18 0:216148fa726d 86 void SliderFadeTimeDemo()
milspect18 0:216148fa726d 87 {
milspect18 0:216148fa726d 88 float val = 0.00f;
milspect18 1:6a1079e4e6ab 89 float speedFactor = 0.5f;
milspect18 1:6a1079e4e6ab 90 float ledOff = 1.00f;
milspect18 1:6a1079e4e6ab 91 int minDistance = 2;
milspect18 0:216148fa726d 92
milspect18 1:6a1079e4e6ab 93 if (touchSlider.readDistance() > minDistance)
milspect18 0:216148fa726d 94 {
milspect18 1:6a1079e4e6ab 95 val = touchSlider.readDistance() * speedFactor;
milspect18 0:216148fa726d 96 TouchFadeIn(val);
milspect18 0:216148fa726d 97 TouchFadeOut(val);
milspect18 0:216148fa726d 98 }
milspect18 0:216148fa726d 99 else
milspect18 0:216148fa726d 100 {
milspect18 1:6a1079e4e6ab 101 if (val > minDistance)
milspect18 0:216148fa726d 102 {
milspect18 0:216148fa726d 103 TouchFadeIn(val);
milspect18 0:216148fa726d 104 TouchFadeOut(val);
milspect18 0:216148fa726d 105 }
milspect18 0:216148fa726d 106 else
milspect18 0:216148fa726d 107 {
milspect18 1:6a1079e4e6ab 108 myRedLed = ledOff;
milspect18 1:6a1079e4e6ab 109 myGreenLed = ledOff;
milspect18 1:6a1079e4e6ab 110 myBlueLed = ledOff;
milspect18 0:216148fa726d 111 }
milspect18 0:216148fa726d 112 }
milspect18 0:216148fa726d 113 }
milspect18 0:216148fa726d 114
milspect18 0:216148fa726d 115 void TouchFadeIn(float val)
milspect18 0:216148fa726d 116 {
milspect18 0:216148fa726d 117 for (float i = 1.00f; i > 0.00f; i -= 0.01f)
milspect18 0:216148fa726d 118 {
milspect18 0:216148fa726d 119 myRedLed = i;
milspect18 0:216148fa726d 120 myGreenLed = i;
milspect18 0:216148fa726d 121 myBlueLed = i;
milspect18 0:216148fa726d 122 externalLight = i;
milspect18 0:216148fa726d 123 wait_ms(val);
milspect18 0:216148fa726d 124 }
milspect18 0:216148fa726d 125 }
milspect18 0:216148fa726d 126
milspect18 0:216148fa726d 127
milspect18 0:216148fa726d 128 void TouchFadeOut(float val)
milspect18 0:216148fa726d 129 {
milspect18 0:216148fa726d 130 for (float i = 0.00f; i < 1.00f; i += 0.01f)
milspect18 0:216148fa726d 131 {
milspect18 0:216148fa726d 132 myRedLed = i;
milspect18 0:216148fa726d 133 myGreenLed = i;
milspect18 0:216148fa726d 134 myBlueLed = i;
milspect18 0:216148fa726d 135 externalLight = i;
milspect18 0:216148fa726d 136 wait_ms(val);
milspect18 0:216148fa726d 137 }
milspect18 0:216148fa726d 138 }
milspect18 0:216148fa726d 139
milspect18 0:216148fa726d 140 void AccelDemo()
milspect18 0:216148fa726d 141 {
milspect18 0:216148fa726d 142 float xAxisData = 1 - abs(accel.getAccX());
milspect18 0:216148fa726d 143 float yAxisData = 1 - abs(accel.getAccY());
milspect18 0:216148fa726d 144 float zAxisData = 1 - abs(accel.getAccZ());
milspect18 0:216148fa726d 145
milspect18 0:216148fa726d 146 myGreenLed = xAxisData;
milspect18 0:216148fa726d 147 myRedLed = yAxisData;
milspect18 0:216148fa726d 148 myBlueLed = zAxisData;
milspect18 0:216148fa726d 149
milspect18 0:216148fa726d 150 wait_ms(100);
milspect18 0:216148fa726d 151 }
milspect18 0:216148fa726d 152
milspect18 0:216148fa726d 153
milspect18 0:216148fa726d 154 void morseCodeBlinker(char input[], float speed)
milspect18 0:216148fa726d 155 {
milspect18 0:216148fa726d 156 for (unsigned int i = 0; i < sizeof(input); i++)
milspect18 0:216148fa726d 157 {
milspect18 0:216148fa726d 158 if (input[i] == ' ')
milspect18 0:216148fa726d 159 {
milspect18 0:216148fa726d 160 WordSpace(speed);
milspect18 0:216148fa726d 161 }
milspect18 0:216148fa726d 162 else
milspect18 0:216148fa726d 163 {
milspect18 0:216148fa726d 164 SendLetter(input[i], speed);
milspect18 0:216148fa726d 165 LetterSpace(speed);
milspect18 0:216148fa726d 166 }
milspect18 0:216148fa726d 167 }
milspect18 0:216148fa726d 168 }
milspect18 0:216148fa726d 169
milspect18 0:216148fa726d 170 void SendLetter(char input, float speed)
milspect18 0:216148fa726d 171 {
milspect18 0:216148fa726d 172 char lowerCaseLetter = tolower(input);
milspect18 0:216148fa726d 173
milspect18 0:216148fa726d 174 switch (lowerCaseLetter)
milspect18 0:216148fa726d 175 {
milspect18 0:216148fa726d 176 case 'a' :
milspect18 0:216148fa726d 177 Dot(speed);
milspect18 0:216148fa726d 178 Dash(speed);
milspect18 0:216148fa726d 179 break;
milspect18 0:216148fa726d 180 case 'b' :
milspect18 0:216148fa726d 181 Dash(speed);
milspect18 0:216148fa726d 182 Dot(speed);
milspect18 0:216148fa726d 183 Dot(speed);
milspect18 0:216148fa726d 184 Dot(speed);
milspect18 0:216148fa726d 185 break;
milspect18 0:216148fa726d 186 case 'c' :
milspect18 0:216148fa726d 187 Dash(speed);
milspect18 0:216148fa726d 188 Dot(speed);
milspect18 0:216148fa726d 189 Dash(speed);
milspect18 0:216148fa726d 190 Dot(speed);
milspect18 0:216148fa726d 191 break;
milspect18 0:216148fa726d 192 case 'd' :
milspect18 0:216148fa726d 193 Dash(speed);
milspect18 0:216148fa726d 194 Dot(speed);
milspect18 0:216148fa726d 195 Dot(speed);
milspect18 0:216148fa726d 196 break;
milspect18 0:216148fa726d 197 case 'e' :
milspect18 0:216148fa726d 198 Dot(speed);
milspect18 0:216148fa726d 199 break;
milspect18 0:216148fa726d 200 case 'f' :
milspect18 0:216148fa726d 201 Dot(speed);
milspect18 0:216148fa726d 202 Dot(speed);
milspect18 0:216148fa726d 203 Dash(speed);
milspect18 0:216148fa726d 204 Dot(speed);
milspect18 0:216148fa726d 205 break;
milspect18 0:216148fa726d 206 case 'g' :
milspect18 0:216148fa726d 207 Dash(speed);
milspect18 0:216148fa726d 208 Dash(speed);
milspect18 0:216148fa726d 209 Dot(speed);
milspect18 0:216148fa726d 210 break;
milspect18 0:216148fa726d 211 case 'h' :
milspect18 0:216148fa726d 212 Dot(speed);
milspect18 0:216148fa726d 213 Dot(speed);
milspect18 0:216148fa726d 214 Dot(speed);
milspect18 0:216148fa726d 215 Dot(speed);
milspect18 0:216148fa726d 216 break;
milspect18 0:216148fa726d 217 case 'i' :
milspect18 0:216148fa726d 218 Dot(speed);
milspect18 0:216148fa726d 219 Dot(speed);
milspect18 0:216148fa726d 220 break;
milspect18 0:216148fa726d 221 case 'j' :
milspect18 0:216148fa726d 222 Dot(speed);
milspect18 0:216148fa726d 223 Dash(speed);
milspect18 0:216148fa726d 224 Dash(speed);
milspect18 0:216148fa726d 225 Dash(speed);
milspect18 0:216148fa726d 226 break;
milspect18 0:216148fa726d 227 case 'k' :
milspect18 0:216148fa726d 228 Dash(speed);
milspect18 0:216148fa726d 229 Dot(speed);
milspect18 0:216148fa726d 230 Dash(speed);
milspect18 0:216148fa726d 231 break;
milspect18 0:216148fa726d 232 case 'l' :
milspect18 0:216148fa726d 233 Dot(speed);
milspect18 0:216148fa726d 234 Dash(speed);
milspect18 0:216148fa726d 235 Dot(speed);
milspect18 0:216148fa726d 236 Dot(speed);
milspect18 0:216148fa726d 237 break;
milspect18 0:216148fa726d 238 case 'm' :
milspect18 0:216148fa726d 239 Dash(speed);
milspect18 0:216148fa726d 240 Dash(speed);
milspect18 0:216148fa726d 241 break;
milspect18 0:216148fa726d 242 case 'n' :
milspect18 0:216148fa726d 243 Dash(speed);
milspect18 0:216148fa726d 244 Dot(speed);
milspect18 0:216148fa726d 245 break;
milspect18 0:216148fa726d 246 case 'o' :
milspect18 0:216148fa726d 247 Dash(speed);
milspect18 0:216148fa726d 248 Dash(speed);
milspect18 0:216148fa726d 249 Dash(speed);
milspect18 0:216148fa726d 250 break;
milspect18 0:216148fa726d 251 case 'p' :
milspect18 0:216148fa726d 252 Dot(speed);
milspect18 0:216148fa726d 253 Dash(speed);
milspect18 0:216148fa726d 254 Dash(speed);
milspect18 0:216148fa726d 255 Dot(speed);
milspect18 0:216148fa726d 256 break;
milspect18 0:216148fa726d 257 case 'q' :
milspect18 0:216148fa726d 258 Dash(speed);
milspect18 0:216148fa726d 259 Dash(speed);
milspect18 0:216148fa726d 260 Dot(speed);
milspect18 0:216148fa726d 261 Dash(speed);
milspect18 0:216148fa726d 262 break;
milspect18 0:216148fa726d 263 case 'r' :
milspect18 0:216148fa726d 264 Dot(speed);
milspect18 0:216148fa726d 265 Dash(speed);
milspect18 0:216148fa726d 266 Dot(speed);
milspect18 0:216148fa726d 267 break;
milspect18 0:216148fa726d 268 case 's' :
milspect18 0:216148fa726d 269 Dot(speed);
milspect18 0:216148fa726d 270 Dot(speed);
milspect18 0:216148fa726d 271 Dot(speed);
milspect18 0:216148fa726d 272 break;
milspect18 0:216148fa726d 273 case 't' :
milspect18 0:216148fa726d 274 Dash(speed);
milspect18 0:216148fa726d 275 break;
milspect18 0:216148fa726d 276 case 'u' :
milspect18 0:216148fa726d 277 Dot(speed);
milspect18 0:216148fa726d 278 Dot(speed);
milspect18 0:216148fa726d 279 Dash(speed);
milspect18 0:216148fa726d 280 break;
milspect18 0:216148fa726d 281 case 'v' :
milspect18 0:216148fa726d 282 Dot(speed);
milspect18 0:216148fa726d 283 Dot(speed);
milspect18 0:216148fa726d 284 Dot(speed);
milspect18 0:216148fa726d 285 Dash(speed);
milspect18 0:216148fa726d 286 break;
milspect18 0:216148fa726d 287 case 'w' :
milspect18 0:216148fa726d 288 Dot(speed);
milspect18 0:216148fa726d 289 Dash(speed);
milspect18 0:216148fa726d 290 Dash(speed);
milspect18 0:216148fa726d 291 break;
milspect18 0:216148fa726d 292 case 'x' :
milspect18 0:216148fa726d 293 Dash(speed);
milspect18 0:216148fa726d 294 Dot(speed);
milspect18 0:216148fa726d 295 Dot(speed);
milspect18 0:216148fa726d 296 Dash(speed);
milspect18 0:216148fa726d 297 break;
milspect18 0:216148fa726d 298 case 'y' :
milspect18 0:216148fa726d 299 Dash(speed);
milspect18 0:216148fa726d 300 Dot(speed);
milspect18 0:216148fa726d 301 Dash(speed);
milspect18 0:216148fa726d 302 Dash(speed);
milspect18 0:216148fa726d 303 break;
milspect18 0:216148fa726d 304 case 'z' :
milspect18 0:216148fa726d 305 Dash(speed);
milspect18 0:216148fa726d 306 Dash(speed);
milspect18 0:216148fa726d 307 Dot(speed);
milspect18 0:216148fa726d 308 Dot(speed);
milspect18 0:216148fa726d 309 break;
milspect18 0:216148fa726d 310 }
milspect18 0:216148fa726d 311 }
milspect18 0:216148fa726d 312
milspect18 0:216148fa726d 313 void WordSpace(float speed)
milspect18 0:216148fa726d 314 {
milspect18 0:216148fa726d 315 wait(speed * 7);
milspect18 0:216148fa726d 316 }
milspect18 0:216148fa726d 317
milspect18 0:216148fa726d 318 void LetterSpace(float speed)
milspect18 0:216148fa726d 319 {
milspect18 0:216148fa726d 320 wait(speed * 3);
milspect18 0:216148fa726d 321 }
milspect18 0:216148fa726d 322
milspect18 0:216148fa726d 323 void Dash(float speed)
milspect18 0:216148fa726d 324 {
milspect18 0:216148fa726d 325 myRedLed = 0;
milspect18 0:216148fa726d 326 myGreenLed = 0;
milspect18 0:216148fa726d 327 myBlueLed = 0;
milspect18 0:216148fa726d 328 wait(speed * 3);
milspect18 0:216148fa726d 329 myRedLed = 1;
milspect18 0:216148fa726d 330 myGreenLed = 1;
milspect18 0:216148fa726d 331 myBlueLed = 1;
milspect18 0:216148fa726d 332 wait(speed);
milspect18 0:216148fa726d 333 }
milspect18 0:216148fa726d 334
milspect18 0:216148fa726d 335 void Dot(float speed)
milspect18 0:216148fa726d 336 {
milspect18 0:216148fa726d 337 myRedLed = 0;
milspect18 0:216148fa726d 338 myGreenLed = 0;
milspect18 0:216148fa726d 339 myBlueLed = 0;
milspect18 0:216148fa726d 340 wait(speed);
milspect18 0:216148fa726d 341 myRedLed = 1;
milspect18 0:216148fa726d 342 myGreenLed = 1;
milspect18 0:216148fa726d 343 myBlueLed = 1;
milspect18 0:216148fa726d 344 wait(speed);
milspect18 0:216148fa726d 345 }