WITB2

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

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?

UserRevisionLine numberNew 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