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

Revision:
2:a9c2014f9bd5
Parent:
0:51be560629b8
--- a/main.cpp	Mon Feb 17 22:12:58 2014 +0000
+++ b/main.cpp	Mon Mar 30 12:28:02 2015 +0000
@@ -1,17 +1,56 @@
 #include "mbed.h"
+#include "C12832.h"
+#include "MMA7660.h"
+#include "LM75B.h"
+
+PwmOut red(D5);
+PwmOut blue(D8);
+PwmOut green(D9);
 
-DigitalOut red(D5);
-DigitalOut blue(D8);
-DigitalOut 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() {
-    while(1) {
-        for (i=1; i<7; i++) {
-            red = i & 1;
-            blue = i & 2;
-            green = i & 4;
-            wait(0.2);
-        }
+    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 );
+        
     }
 }