WITB2
Dependencies: mbed 4DGL-uLCD-SE PinDetect
main.cpp@0:5e90b8577fef, 2017-09-19 (annotated)
- Committer:
- jd7142128
- Date:
- Tue Sep 19 23:10:09 2017 +0000
- Revision:
- 0:5e90b8577fef
- Child:
- 1:21558533e3b9
Starter code for MMA8452
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jd7142128 | 0:5e90b8577fef | 1 | #include "mbed.h" |
jd7142128 | 0:5e90b8577fef | 2 | #include "MMA8452.h" |
jd7142128 | 0:5e90b8577fef | 3 | #include "uLCD_4DGL.h" |
jd7142128 | 0:5e90b8577fef | 4 | #include "PinDetect.h" |
jd7142128 | 0:5e90b8577fef | 5 | #include "Speaker.h" |
jd7142128 | 0:5e90b8577fef | 6 | |
jd7142128 | 0:5e90b8577fef | 7 | |
jd7142128 | 0:5e90b8577fef | 8 | uLCD_4DGL uLCD(p28, p27, p29); // create a global uLCD object |
jd7142128 | 0:5e90b8577fef | 9 | |
jd7142128 | 0:5e90b8577fef | 10 | Serial pc(USBTX,USBRX); //not used in this program |
jd7142128 | 0:5e90b8577fef | 11 | |
jd7142128 | 0:5e90b8577fef | 12 | Speaker mySpeaker(p21); |
jd7142128 | 0:5e90b8577fef | 13 | |
jd7142128 | 0:5e90b8577fef | 14 | PinDetect pb1(p15); |
jd7142128 | 0:5e90b8577fef | 15 | PinDetect pb2(p16); |
jd7142128 | 0:5e90b8577fef | 16 | |
jd7142128 | 0:5e90b8577fef | 17 | int main() { |
jd7142128 | 0:5e90b8577fef | 18 | |
jd7142128 | 0:5e90b8577fef | 19 | // you can play around with the parameters to see the response |
jd7142128 | 0:5e90b8577fef | 20 | int radius = 10; |
jd7142128 | 0:5e90b8577fef | 21 | int offsetx = 63; |
jd7142128 | 0:5e90b8577fef | 22 | int offsety = 63; |
jd7142128 | 0:5e90b8577fef | 23 | double factor = 50; |
jd7142128 | 0:5e90b8577fef | 24 | double music_factor = 200; |
jd7142128 | 0:5e90b8577fef | 25 | bool MusicOn = false; |
jd7142128 | 0:5e90b8577fef | 26 | |
jd7142128 | 0:5e90b8577fef | 27 | //set the push buttons that control sounds |
jd7142128 | 0:5e90b8577fef | 28 | pb1.mode(PullUp); |
jd7142128 | 0:5e90b8577fef | 29 | pb2.mode(PullUp); |
jd7142128 | 0:5e90b8577fef | 30 | //I will not use interupts like in jazzy tunes |
jd7142128 | 0:5e90b8577fef | 31 | |
jd7142128 | 0:5e90b8577fef | 32 | |
jd7142128 | 0:5e90b8577fef | 33 | double x = 0, y = 0, z = 0; |
jd7142128 | 0:5e90b8577fef | 34 | |
jd7142128 | 0:5e90b8577fef | 35 | MMA8452 acc(p9, p10, 40000); //instantiate an acc object! |
jd7142128 | 0:5e90b8577fef | 36 | |
jd7142128 | 0:5e90b8577fef | 37 | //set parameters -- use these and don't change |
jd7142128 | 0:5e90b8577fef | 38 | acc.setBitDepth(MMA8452::BIT_DEPTH_12); |
jd7142128 | 0:5e90b8577fef | 39 | acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G); |
jd7142128 | 0:5e90b8577fef | 40 | acc.setDataRate(MMA8452::RATE_100); |
jd7142128 | 0:5e90b8577fef | 41 | |
jd7142128 | 0:5e90b8577fef | 42 | |
jd7142128 | 0:5e90b8577fef | 43 | while(1) { |
jd7142128 | 0:5e90b8577fef | 44 | |
jd7142128 | 0:5e90b8577fef | 45 | uLCD.circle(-1*y*factor+offsety, -1*x*factor+offsetx, radius, BLACK); |
jd7142128 | 0:5e90b8577fef | 46 | |
jd7142128 | 0:5e90b8577fef | 47 | if(!acc.isXYZReady()) |
jd7142128 | 0:5e90b8577fef | 48 | { |
jd7142128 | 0:5e90b8577fef | 49 | wait(0.01); |
jd7142128 | 0:5e90b8577fef | 50 | } |
jd7142128 | 0:5e90b8577fef | 51 | else |
jd7142128 | 0:5e90b8577fef | 52 | { |
jd7142128 | 0:5e90b8577fef | 53 | |
jd7142128 | 0:5e90b8577fef | 54 | acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers |
jd7142128 | 0:5e90b8577fef | 55 | |
jd7142128 | 0:5e90b8577fef | 56 | uLCD.circle(-1*y*factor+offsety, -1*x*factor+offsetx, radius, WHITE); |
jd7142128 | 0:5e90b8577fef | 57 | |
jd7142128 | 0:5e90b8577fef | 58 | if (MusicOn) |
jd7142128 | 0:5e90b8577fef | 59 | mySpeaker.PlayNote(440.0+x*music_factor,0.25+0.2*y,0.05); |
jd7142128 | 0:5e90b8577fef | 60 | |
jd7142128 | 0:5e90b8577fef | 61 | if (pb1 == false) |
jd7142128 | 0:5e90b8577fef | 62 | MusicOn = true; |
jd7142128 | 0:5e90b8577fef | 63 | |
jd7142128 | 0:5e90b8577fef | 64 | if (pb2 == false) |
jd7142128 | 0:5e90b8577fef | 65 | MusicOn = false; |
jd7142128 | 0:5e90b8577fef | 66 | |
jd7142128 | 0:5e90b8577fef | 67 | |
jd7142128 | 0:5e90b8577fef | 68 | // You can uncomment this line to see the values coming off the MMA8452 |
jd7142128 | 0:5e90b8577fef | 69 | //uLCD.printf("\n(%.2f,%.2f,%.2f) \n", x,y,z); |
jd7142128 | 0:5e90b8577fef | 70 | |
jd7142128 | 0:5e90b8577fef | 71 | } //end else |
jd7142128 | 0:5e90b8577fef | 72 | |
jd7142128 | 0:5e90b8577fef | 73 | } //end infinite while loop |
jd7142128 | 0:5e90b8577fef | 74 | } // end main |