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
main.cpp
00001 #include "mbed.h" 00002 #include "glibr.h" 00003 #include "SDFileSystem.h" 00004 #include "wave_player.h" 00005 00006 glibr GSensor(p9,p10); 00007 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card 00008 AnalogOut DACout(p18); 00009 wave_player waver(&DACout); 00010 int isr_flag = 0; 00011 DigitalOut myled(LED1); 00012 //InterruptIn interrupt(p11); 00013 Serial pc(USBTX, USBRX); 00014 bool ret; 00015 int val; 00016 00017 int main() 00018 { 00019 myled = 0; 00020 ret = 0; 00021 val = 0; 00022 if ( GSensor.ginit() ) { 00023 pc.printf("APDS-9960 initialization complete\n\r"); 00024 } else { 00025 pc.printf("Something went wrong during APDS-9960 init\n\r"); 00026 } 00027 00028 // Start running the APDS-9960 gesture sensor engine 00029 if ( GSensor.enableGestureSensor(true) ) { 00030 pc.printf("Gesture sensor is now running\n\r"); 00031 } else { 00032 pc.printf("Something went wrong during gesture sensor init!\n\r"); 00033 } 00034 00035 FILE *Up; 00036 FILE *Down; 00037 FILE *Left; 00038 FILE *Right; 00039 FILE *Far; 00040 FILE *Near; 00041 00042 // waver.play(wave_file); 00043 while(1) { 00044 /* ret = GSensor.isGestureAvailable(); 00045 pc.printf("Is Gesture Available?: %d\n", ret); 00046 myled = ret; 00047 val = GSensor.readGesture(); 00048 */ 00049 if ( GSensor.isGestureAvailable() ) { 00050 switch ( GSensor.readGesture() ) { 00051 case DIR_UP: 00052 pc.printf("UP\n"); 00053 Up=fopen("/sd/up.wav","r"); 00054 if(Up!=NULL){ 00055 waver.play(Up); 00056 }else{ pc.printf("Up not open");} 00057 fclose(Up); 00058 break; 00059 case DIR_DOWN: 00060 pc.printf("DOWN\n"); 00061 Down=fopen("/sd/down.wav","r"); 00062 if(Down!=NULL){ 00063 waver.play(Down); 00064 }else{ pc.printf("Down not open");} 00065 fclose(Down); 00066 break; 00067 case DIR_LEFT: 00068 pc.printf("LEFT\n"); 00069 Left=fopen("/sd/left.wav","r"); 00070 if(Left!=NULL){ 00071 waver.play(Left); 00072 }else{pc.printf("Left not open");} 00073 fclose(Left); 00074 break; 00075 case DIR_RIGHT: 00076 pc.printf("RIGHT\n"); 00077 Right=fopen("/sd/right.wav","r"); 00078 if(Right!=NULL){ 00079 waver.play(Right); 00080 }else{pc.printf("Right not open");} 00081 fclose(Right); 00082 case DIR_NEAR: 00083 pc.printf("NEAR\n"); 00084 Near=fopen("/sd/near.wav","r"); 00085 if(Near!=NULL){ 00086 waver.play(Near); 00087 }else{pc.printf("Near not open");} 00088 fclose(Near); 00089 break; 00090 case DIR_FAR: 00091 pc.printf("FAR\n"); 00092 Far=fopen("/sd/far.wav","r"); 00093 if(Far!=NULL){ 00094 waver.play(Far); 00095 }else{pc.printf("Far not open");} 00096 fclose(Far); 00097 break; 00098 default: 00099 pc.printf("NONE\n"); 00100 } 00101 } 00102 00103 00104 // wait(1); 00105 00106 } 00107 00108 00109 00110 }
Generated on Wed Jul 13 2022 05:03:27 by 1.7.2