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:
Thu Jun 26 15:11:39 2014 +0000
Revision:
0:216148fa726d
Child:
1:6a1079e4e6ab
Added the full morse code method set

Who changed what in which revision?

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