Example program that exercises most of the capabilities of the mbed application shield (via arduino headers) with ST Nucleo board

Dependencies:   C12832 LM75B MMA7660 mbed

Committer:
CBMalloch
Date:
Mon Mar 30 12:28:02 2015 +0000
Revision:
2:a9c2014f9bd5
Parent:
0:51be560629b8
Exercises most capabilities of the application shield

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:51be560629b8 1 #include "mbed.h"
CBMalloch 2:a9c2014f9bd5 2 #include "C12832.h"
CBMalloch 2:a9c2014f9bd5 3 #include "MMA7660.h"
CBMalloch 2:a9c2014f9bd5 4 #include "LM75B.h"
CBMalloch 2:a9c2014f9bd5 5
CBMalloch 2:a9c2014f9bd5 6 PwmOut red(D5);
CBMalloch 2:a9c2014f9bd5 7 PwmOut blue(D8);
CBMalloch 2:a9c2014f9bd5 8 PwmOut green(D9);
screamer 0:51be560629b8 9
screamer 0:51be560629b8 10 int i;
screamer 0:51be560629b8 11
CBMalloch 2:a9c2014f9bd5 12 C12832 lcd ( D11, D13, D12, D7, D10 );
CBMalloch 2:a9c2014f9bd5 13 // testing using PB9 instead of D14: yields "undefined identifier"
CBMalloch 2:a9c2014f9bd5 14 MMA7660 MMA ( D14, D15 ); // SDA, SCL (defs stolen from temp sensor demo)
CBMalloch 2:a9c2014f9bd5 15 LM75B thermometer ( D14, D15 );
CBMalloch 2:a9c2014f9bd5 16
CBMalloch 2:a9c2014f9bd5 17 AnalogIn pot1 (A0);
CBMalloch 2:a9c2014f9bd5 18 AnalogIn pot2 (A1);
CBMalloch 2:a9c2014f9bd5 19
CBMalloch 2:a9c2014f9bd5 20 PwmOut spkr(D6);
CBMalloch 2:a9c2014f9bd5 21
screamer 0:51be560629b8 22 int main() {
CBMalloch 2:a9c2014f9bd5 23 float temperature;
CBMalloch 2:a9c2014f9bd5 24 float frequency;
CBMalloch 2:a9c2014f9bd5 25 float lnSemitone = log ( 2.0 ) / 12.0f;
CBMalloch 2:a9c2014f9bd5 26
CBMalloch 2:a9c2014f9bd5 27 while ( 1 ) {
CBMalloch 2:a9c2014f9bd5 28 // for (i=0; i<8; i++) {
CBMalloch 2:a9c2014f9bd5 29 // red = 1.0 - double ( pot1 );
CBMalloch 2:a9c2014f9bd5 30 // blue = i & 2;
CBMalloch 2:a9c2014f9bd5 31 // green = i & 4;
CBMalloch 2:a9c2014f9bd5 32 // }
CBMalloch 2:a9c2014f9bd5 33
CBMalloch 2:a9c2014f9bd5 34 red = MMA.x() * 0.5f + 0.5f;
CBMalloch 2:a9c2014f9bd5 35 green = MMA.y() * 0.5f + 0.5f;
CBMalloch 2:a9c2014f9bd5 36 blue = float ( pot1 );
CBMalloch 2:a9c2014f9bd5 37
CBMalloch 2:a9c2014f9bd5 38 lcd.cls();
CBMalloch 2:a9c2014f9bd5 39 lcd.locate ( 1, 1 );
CBMalloch 2:a9c2014f9bd5 40 lcd.printf ( "%5.3f %5.3f %5.3f", MMA.x(), MMA.y(), MMA.z() );
CBMalloch 2:a9c2014f9bd5 41
CBMalloch 2:a9c2014f9bd5 42 lcd.locate ( 1, 10 );
CBMalloch 2:a9c2014f9bd5 43 temperature = thermometer.read();
CBMalloch 2:a9c2014f9bd5 44 lcd.printf ( "%6.4f degC", temperature );
CBMalloch 2:a9c2014f9bd5 45
CBMalloch 2:a9c2014f9bd5 46 int pitch = ( ( ( temperature - 21.5f ) * 8.0f ) );
CBMalloch 2:a9c2014f9bd5 47 frequency = exp ( lnSemitone * pitch ) * 440.0f;
CBMalloch 2:a9c2014f9bd5 48 lcd.locate ( 1, 20 );
CBMalloch 2:a9c2014f9bd5 49 lcd.printf ( "p: %3d; f: %6.2f", pitch, frequency );
CBMalloch 2:a9c2014f9bd5 50 spkr.period ( 1.0f / frequency );
CBMalloch 2:a9c2014f9bd5 51 spkr = pot2; // volume, presumably
CBMalloch 2:a9c2014f9bd5 52
CBMalloch 2:a9c2014f9bd5 53 wait ( 0.1 );
CBMalloch 2:a9c2014f9bd5 54
screamer 0:51be560629b8 55 }
screamer 0:51be560629b8 56 }