Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 }
Generated on Wed Aug 17 2022 22:36:26 by
1.7.2