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@2:a9c2014f9bd5, 2015-03-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |