CRAC Team / Mbed 2 deprecated Somo_Project

Dependencies:   mbed SOMO_II

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SOMO.h" 
00003 
00004 SOMO somo(D1, D0);
00005 DigitalIn busy_pin(D3);
00006 
00007 bool busy_flag=0;
00008 char BUSY=0x00;
00009 char DATA[3];
00010 int INFO;
00011 char i;
00012 short ident;
00013 int state=0xFFF;
00014 
00015 void automate();
00016 
00017 int main()
00018 {
00019     wait_ms(1000);
00020     somo.init();
00021     automate();
00022     while(1)
00023     {
00024         // appel de la fonction d'acquisition de messages sur le can
00025         // pour vérifier si un nouvel ordre est reçu
00026         INFO = comm();
00027         
00028         // Séparation des différents octets de données stoquer dans
00029         // la variable INFO
00030         for(i=0; i<2; i++)
00031         {
00032             DATA[i] = 0xFF&(INFO >> (8*i));
00033         }
00034         
00035         // récupération de l'identifiant can correspondant a une commande
00036         ident = (INFO>>16)&0xFFF;
00037         
00038         // appel de la fonction de l'automate
00039         state = ident;
00040         automate();
00041     }
00042 }
00043 
00044 void automate()
00045 {
00046     switch(state)
00047     {
00048         //start (au démarrage de la carte)
00049         case 0xFFF :   
00050             //démettre en commentaire cette ligne si vous souhaitez avoir un son au démarrage de la carte
00051             //si vous souhaitez un son au démarrage mettre la piste voulus dans le répertoire 99 avec le nom 001
00052             //somo.start();
00053             state = 1;
00054             break;
00055         
00056         //état pour jouer une seule piste
00057         case 0x4A1 :                
00058             somo.playTrackNum(DATA[0],DATA[1]);
00059             
00060             //vérification si le somo est occupé à jouer une piste ou non
00061             if(busy_pin.read()<0.6)  
00062             {
00063                 BUSY=0x01;
00064                 busy_flag=1;
00065                 busy();
00066             }
00067             state = NULL;
00068             break;
00069             
00070         //état pour jouer toute les pistes en continus
00071         case 0x4A2 :                
00072             somo.continuous(DATA[0],DATA[1]);
00073             
00074             //vérification si le somo est occupé à jouer une piste ou non
00075             if(busy_pin.read()<0.6)  
00076             {
00077                 BUSY=0x01;
00078                 busy_flag=1;
00079                 busy();
00080             }
00081             state = NULL;
00082             break;
00083         
00084         //état pour stopper la musique en cour de lecture
00085         case 0x4A3 :                
00086             somo.stopTrack();
00087             state = NULL;
00088             break;
00089                 
00090         //état pour changer le volume (0 a 30 en hexa)
00091         case 0x4A4 :                
00092             somo.volume(DATA[0]);
00093             state = NULL;
00094             break;
00095             
00096         //état pour mettre la lecture en pause
00097         case 0x4A5 :
00098             somo.pause();
00099             
00100             //vérification si le somo est occupé à jouer une piste ou non
00101             if(busy_pin.read()<0.6)  
00102             {
00103                 BUSY=0x01;
00104                 busy_flag=1;
00105                 busy();
00106             }
00107             state = NULL;
00108             break;
00109             
00110         //état pour reprendre la lecture
00111         case 0x4A6 :
00112             somo.resume();
00113             
00114             //vérification si le somo est occupé à jouer une piste ou non
00115             if(busy_pin.read()<0.6)  
00116             {
00117                 BUSY=0x01;
00118                 busy_flag=1;
00119                 busy();
00120             }
00121             state = NULL;
00122             break;
00123             
00124         //état pour remettre tout le paramêtre par défaut du somo (eq normal etc...)
00125         case 0x4A7 :
00126             somo.reset();
00127             
00128             //vérification si le somo est occupé à jouer une piste ou non
00129             if(busy_pin.read()<0.6)  
00130             {
00131                 BUSY=0x01;
00132                 busy_flag=1;
00133                 busy();
00134             }
00135             state = NULL;
00136             break;
00137             
00138         //état pour régler l'équalizer en lecture
00139         //0: Normal, 1: Pop, 2: Rock, 3: Jazz, 4: Classic, 5: Bass
00140         case 0x4A8 :                    
00141             somo.set_EQ(DATA[0]);
00142             
00143             //vérification si le somo est occupé à jouer une piste ou non
00144             if(busy_pin.read()<0.6)     
00145             {
00146                 BUSY=0x01;
00147                 busy_flag=1;
00148                 busy();
00149             }
00150             state = NULL;
00151             break;
00152         
00153         //vérification si le somo est occupé à jouer une piste ou non
00154         case 0x4A9 :                    
00155             somo.play_random();
00156             
00157             //vérification si le somo est occupé à jouer une piste ou non
00158             if(busy_pin.read()<0.6)     
00159             {
00160                 BUSY=0x01;
00161                 busy_flag=1;
00162                 busy();
00163             }
00164             state = NULL;
00165             break;
00166         
00167         //état pour jouer la prochaine piste de la liste    
00168         case 0x4AA :                    
00169             somo.next();
00170             
00171             //état pour jouer la prochaine piste de la liste
00172             if(busy_pin.read()<0.6)     
00173             {
00174                 BUSY=0x01;
00175                 busy_flag=1;
00176                 busy();
00177             }
00178             state = NULL;
00179             break;
00180         
00181         //état pour jouer la précédente piste de la liste    
00182         case 0x4AB :                    
00183             somo.previous();
00184             
00185             //vérification si le somo est occupé à jouer une piste ou non
00186             if(busy_pin.read()<0.6)     
00187             {
00188                 BUSY=0x01;
00189                 busy_flag=1;
00190                 busy();
00191             }
00192             state = NULL;
00193             break;
00194          
00195         //état pour jouer la dernière piste jouée en boucle
00196         case 0x4AC :                    
00197             somo.repeat();
00198             
00199             //vérification si le somo est occupé à jouer une piste ou non
00200             if(busy_pin.read()<0.6)     
00201             {
00202                 BUSY=0x01;
00203                 busy_flag=1;
00204                 busy();
00205             }
00206             state = NULL;
00207             break;
00208             
00209         //état par défaut de vérification de disponibilité    
00210         default :                       
00211             if(busy_flag==1)
00212             {
00213                 if(busy_pin.read()>0.8)
00214                 {
00215                     busy_flag=0;
00216                     BUSY=0x00;
00217                     not_busy();
00218                 }
00219             }       
00220             break;
00221     }
00222 }