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

main.cpp

Committer:
CBMalloch
Date:
2015-03-30
Revision:
2:a9c2014f9bd5
Parent:
0:51be560629b8

File content as of revision 2:a9c2014f9bd5:

#include "mbed.h"
#include "C12832.h"
#include "MMA7660.h"
#include "LM75B.h"

PwmOut red(D5);
PwmOut blue(D8);
PwmOut green(D9);

int i;

C12832 lcd ( D11, D13, D12, D7, D10 );
// testing using PB9 instead of D14: yields "undefined identifier"
MMA7660 MMA ( D14, D15 );  // SDA, SCL (defs stolen from temp sensor demo)
LM75B thermometer ( D14, D15 );

AnalogIn pot1 (A0);
AnalogIn pot2 (A1);

PwmOut spkr(D6);

int main() {
    float temperature;
    float frequency;
    float lnSemitone = log ( 2.0 ) / 12.0f;

    while ( 1 ) {
        // for (i=0; i<8; i++) {
            // red = 1.0 - double ( pot1 );
            // blue = i & 2;
            // green = i & 4;
        // }

        red = MMA.x() * 0.5f + 0.5f;
        green = MMA.y() * 0.5f + 0.5f;
        blue = float ( pot1 );

        lcd.cls();
        lcd.locate ( 1, 1 );
        lcd.printf ( "%5.3f %5.3f %5.3f", MMA.x(), MMA.y(), MMA.z() );
            
        lcd.locate ( 1, 10 );
        temperature = thermometer.read();
        lcd.printf ( "%6.4f degC", temperature );
        
        int pitch = ( ( ( temperature - 21.5f ) * 8.0f ) );
        frequency = exp ( lnSemitone * pitch ) * 440.0f;
        lcd.locate ( 1, 20 );
        lcd.printf ( "p: %3d; f: %6.2f", pitch, frequency );
        spkr.period ( 1.0f / frequency );
        spkr = pot2;  // volume, presumably
 
        wait ( 0.1 );
        
    }
}