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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }