Uses the APDS_9960 Digital Proximity, Ambient Light, RGB and Gesture Sensor library to play detected gesture sounds on a speaker from the SDcard

Dependencies:   mbed SDFileSystem wave_player

Committer:
kbhagat6
Date:
Thu Apr 23 16:06:18 2015 +0000
Revision:
16:cd5666b8fa12
Parent:
14:5e5994418e97
updated sd card functionalities

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kbhagat6 0:437ae08befe3 1 #include "mbed.h"
kbhagat6 0:437ae08befe3 2 #include "glibr.h"
kbhagat6 11:ea43b0b83222 3 #include "SDFileSystem.h"
kbhagat6 11:ea43b0b83222 4 #include "wave_player.h"
kbhagat6 10:e8adab2fb829 5
kbhagat6 12:63c81930b5d9 6 glibr GSensor(p9,p10);
kbhagat6 11:ea43b0b83222 7 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
kbhagat6 11:ea43b0b83222 8 AnalogOut DACout(p18);
kbhagat6 11:ea43b0b83222 9 wave_player waver(&DACout);
kbhagat6 10:e8adab2fb829 10 int isr_flag = 0;
kbhagat6 10:e8adab2fb829 11 DigitalOut myled(LED1);
kbhagat6 10:e8adab2fb829 12 //InterruptIn interrupt(p11);
kbhagat6 0:437ae08befe3 13 Serial pc(USBTX, USBRX);
kbhagat6 10:e8adab2fb829 14 bool ret;
kbhagat6 10:e8adab2fb829 15 int val;
kbhagat6 0:437ae08befe3 16
kbhagat6 10:e8adab2fb829 17 int main()
kbhagat6 10:e8adab2fb829 18 {
kbhagat6 10:e8adab2fb829 19 myled = 0;
kbhagat6 10:e8adab2fb829 20 ret = 0;
kbhagat6 10:e8adab2fb829 21 val = 0;
kbhagat6 12:63c81930b5d9 22 if ( GSensor.ginit() ) {
kbhagat6 10:e8adab2fb829 23 pc.printf("APDS-9960 initialization complete\n\r");
kbhagat6 10:e8adab2fb829 24 } else {
kbhagat6 10:e8adab2fb829 25 pc.printf("Something went wrong during APDS-9960 init\n\r");
kbhagat6 10:e8adab2fb829 26 }
kbhagat6 0:437ae08befe3 27
kbhagat6 10:e8adab2fb829 28 // Start running the APDS-9960 gesture sensor engine
kbhagat6 12:63c81930b5d9 29 if ( GSensor.enableGestureSensor(true) ) {
kbhagat6 10:e8adab2fb829 30 pc.printf("Gesture sensor is now running\n\r");
kbhagat6 10:e8adab2fb829 31 } else {
kbhagat6 10:e8adab2fb829 32 pc.printf("Something went wrong during gesture sensor init!\n\r");
kbhagat6 10:e8adab2fb829 33 }
kbhagat6 0:437ae08befe3 34
kbhagat6 11:ea43b0b83222 35 FILE *Up;
kbhagat6 11:ea43b0b83222 36 FILE *Down;
kbhagat6 11:ea43b0b83222 37 FILE *Left;
kbhagat6 11:ea43b0b83222 38 FILE *Right;
kbhagat6 11:ea43b0b83222 39 FILE *Far;
kbhagat6 11:ea43b0b83222 40 FILE *Near;
kbhagat6 11:ea43b0b83222 41
kbhagat6 11:ea43b0b83222 42 // waver.play(wave_file);
kbhagat6 10:e8adab2fb829 43 while(1) {
kbhagat6 12:63c81930b5d9 44 /* ret = GSensor.isGestureAvailable();
kbhagat6 10:e8adab2fb829 45 pc.printf("Is Gesture Available?: %d\n", ret);
kbhagat6 10:e8adab2fb829 46 myled = ret;
kbhagat6 12:63c81930b5d9 47 val = GSensor.readGesture();
kbhagat6 10:e8adab2fb829 48 */
kbhagat6 12:63c81930b5d9 49 if ( GSensor.isGestureAvailable() ) {
kbhagat6 12:63c81930b5d9 50 switch ( GSensor.readGesture() ) {
kbhagat6 10:e8adab2fb829 51 case DIR_UP:
kbhagat6 10:e8adab2fb829 52 pc.printf("UP\n");
kbhagat6 14:5e5994418e97 53 Up=fopen("/sd/up.wav","r");
kbhagat6 16:cd5666b8fa12 54 if(Up!=NULL){
kbhagat6 11:ea43b0b83222 55 waver.play(Up);
kbhagat6 16:cd5666b8fa12 56 }else{ pc.printf("Up not open");}
kbhagat6 16:cd5666b8fa12 57 fclose(Up);
kbhagat6 10:e8adab2fb829 58 break;
kbhagat6 10:e8adab2fb829 59 case DIR_DOWN:
kbhagat6 10:e8adab2fb829 60 pc.printf("DOWN\n");
kbhagat6 14:5e5994418e97 61 Down=fopen("/sd/down.wav","r");
kbhagat6 16:cd5666b8fa12 62 if(Down!=NULL){
kbhagat6 11:ea43b0b83222 63 waver.play(Down);
kbhagat6 16:cd5666b8fa12 64 }else{ pc.printf("Down not open");}
kbhagat6 16:cd5666b8fa12 65 fclose(Down);
kbhagat6 10:e8adab2fb829 66 break;
kbhagat6 10:e8adab2fb829 67 case DIR_LEFT:
kbhagat6 10:e8adab2fb829 68 pc.printf("LEFT\n");
kbhagat6 14:5e5994418e97 69 Left=fopen("/sd/left.wav","r");
kbhagat6 16:cd5666b8fa12 70 if(Left!=NULL){
kbhagat6 11:ea43b0b83222 71 waver.play(Left);
kbhagat6 16:cd5666b8fa12 72 }else{pc.printf("Left not open");}
kbhagat6 16:cd5666b8fa12 73 fclose(Left);
kbhagat6 10:e8adab2fb829 74 break;
kbhagat6 10:e8adab2fb829 75 case DIR_RIGHT:
kbhagat6 10:e8adab2fb829 76 pc.printf("RIGHT\n");
kbhagat6 14:5e5994418e97 77 Right=fopen("/sd/right.wav","r");
kbhagat6 16:cd5666b8fa12 78 if(Right!=NULL){
kbhagat6 11:ea43b0b83222 79 waver.play(Right);
kbhagat6 16:cd5666b8fa12 80 }else{pc.printf("Right not open");}
kbhagat6 16:cd5666b8fa12 81 fclose(Right);
kbhagat6 10:e8adab2fb829 82 case DIR_NEAR:
kbhagat6 10:e8adab2fb829 83 pc.printf("NEAR\n");
kbhagat6 16:cd5666b8fa12 84 Near=fopen("/sd/near.wav","r");
kbhagat6 16:cd5666b8fa12 85 if(Near!=NULL){
kbhagat6 11:ea43b0b83222 86 waver.play(Near);
kbhagat6 16:cd5666b8fa12 87 }else{pc.printf("Near not open");}
kbhagat6 16:cd5666b8fa12 88 fclose(Near);
kbhagat6 10:e8adab2fb829 89 break;
kbhagat6 10:e8adab2fb829 90 case DIR_FAR:
kbhagat6 10:e8adab2fb829 91 pc.printf("FAR\n");
kbhagat6 16:cd5666b8fa12 92 Far=fopen("/sd/far.wav","r");
kbhagat6 16:cd5666b8fa12 93 if(Far!=NULL){
kbhagat6 11:ea43b0b83222 94 waver.play(Far);
kbhagat6 16:cd5666b8fa12 95 }else{pc.printf("Far not open");}
kbhagat6 16:cd5666b8fa12 96 fclose(Far);
kbhagat6 10:e8adab2fb829 97 break;
kbhagat6 10:e8adab2fb829 98 default:
kbhagat6 10:e8adab2fb829 99 pc.printf("NONE\n");
kbhagat6 10:e8adab2fb829 100 }
kbhagat6 10:e8adab2fb829 101 }
kbhagat6 0:437ae08befe3 102
kbhagat6 11:ea43b0b83222 103
kbhagat6 11:ea43b0b83222 104 // wait(1);
kbhagat6 10:e8adab2fb829 105
kbhagat6 10:e8adab2fb829 106 }
kbhagat6 16:cd5666b8fa12 107
kbhagat6 12:63c81930b5d9 108
kbhagat6 11:ea43b0b83222 109
kbhagat6 10:e8adab2fb829 110 }