TVZ2020 / Mbed 2 deprecated Marijan_Milinovic_Jukebox

Dependencies:   mbed TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Jukebox.cpp Source File

Jukebox.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 #include "Ledice.h"
00004 InterruptIn button(PC_13);
00005 Ticker turn_me_on1, turn_me_on2, turn_me_on3; //probati napraviti zaglavlje i cpp za funkcije, te zaglavlje i cpp za frekvencije pjesama :D
00006 Timer vrijeme;
00007 PwmOut buzzer(PB_4);
00008 Serial pc(USBTX, USBRX);
00009 //frekvencija melodije "Lijepa naša"
00010 float f1[]= {659.3, 659.3, 659.3, 587.3, 587.3, 523.3, 523.3, 392, 349.2, 329.6, 349.2,
00011              392, 440, 392, 349.2, 329.6, 349.2, 392, 659.3, 659.3, 659.3, 587.3, 587.3, 523.3, 523.3, 392,
00012              349.2, 329.6, 349.2, 392, 440, 493.9, 493.9, 587.3, 523.3, 493.9, 493.9, 493.9, 440, 493.9,
00013              493.9, 523.3, 587.3, 493.9, 587.3, 587.3, 587.3, 587.3, 587.3, 523.3, 493.9, 440, 392, 659.3,
00014              659.3, 659.3, 587.3, 587.3, 523.3, 523.3, 392, 349.2, 329.6, 349.2, 392, 440, 493.9, 493.9,
00015              587.3, 523.3
00016             };//70 notes
00017 //trajanje nota
00018 float b1[]= {1, 1, 1.5, 0.5, 0.5, 0.5, 1, 2, 0.5, 0.5, 0.5, 0.5, 2, 0.5, 0.5, 0.5, 0.5, 2, 1, 1, 1.5, 0.5,
00019              0.5, 0.5, 1, 2, 0.5, 0.5, 0.5, 0.5, 2, 0.5, 0.5, 1, 2, 1, 1, 1.5, 0.5, 1, 0.5, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5,
00020              0.5, 1, 1, 1, 1, 2, 1, 1, 1.5, 0.5, 0.5, 0.5, 1, 2, 0.5, 0.5, 0.5, 0.5, 2, 0.5, 0.5, 1, 2, 0.5
00021             }; //70 notes
00022 //frekvencija melodije "Zvončići"
00023 float f2[]= {329.6, 329.6, 329.6, 329.6, 329.6, 329.6, 329.6, 392, 261.6, 293.6, 329.6, 349.2, 349.2, 349.2, 349.2, 349.2,
00024              329.6, 329.6, 329.6, 329.6, 329.6, 293.6, 293.6, 329.6, 293.6, 392, 329.6, 329.6, 329.6, 329.6, 329.6, 329.6,
00025              329.6, 392, 261.6, 293.6, 329.6, 349.2, 349.2, 349.2, 349.2, 349.2, 329.6, 329.6, 329.6, 329.6,392, 392, 349.2,
00026              293.6, 261.6
00027             }; //51 notes
00028 //trajanje nota
00029 float b2[]= {1, 1, 2, 1, 1, 2, 1, 1, 1.5, 0.5, 4, 1, 1, 1.5, 0.5, 1, 1, 1, 0.5, 0.5, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1,
00030              1.5, 0.5, 4, 1, 1, 1.5, 0.5, 1, 1, 1, 0.5, 0.5, 1, 1, 1, 1, 4
00031             };//51 notes
00032 //frekvencija melodije "Dvadesete"
00033 float f3[]= {1, 523.3, 587.3, 659.3, 659.3, 659.3, 659.3, 587.3, 523.3, 659.3, 587.3, 587.3, 1, 587.3, 659.3, 698.5, 698.5, 659.3,
00034              659.3, 587.3, 523.3, 523.3, 659.3, 587.3, 440, 440, 1, 523.3, 587.3, 659.3, 659.3, 659.3, 659.3, 587.3, 523.3, 659.3,
00035              587.3, 587.3, 1, 587.3, 659.3, 698.5, 698.5, 659.3, 659.3, 587.3, 523.3, 523.3, 659.3, 587.3, 440, 440, 440, 1
00036             }; //53 notes
00037 //trajanje nota
00038 float b3[]= {2, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 1, 0.5, 0.5, 0.5, 1, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 1,
00039              0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 1, 0.5, 0.5, 0.5, 1, 0.5, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 1, 1
00040             };//53 notes
00041 //frekvencija melodije "Moj Ivane"
00042 float f4[]= {493.9, 587.3, 523.3, 523.3, 698.5, 659.3, 659.3, 587.3, 587.3, 523.3, 587.3, 587.3, 523.3, 587.3, 698.5, 659.3, 659.3, 587.3,
00043              587.3, 523.3, 523.3, 587.3, 523.3, 493.9, 493.9, 587.3, 523.3, 523.3, 698.5, 659.3, 659.3, 587.3, 587.3, 523.3, 587.3, 587.3,
00044              523.3, 587.3, 698.5, 659.3, 659.3, 587.3, 587.3, 523.3, 523.3, 587.3, 523.3, 493.9, 587.3, 523.3, 523.3
00045             };//51 notes
00046 //trajanje nota
00047 float b4[]= {1, 1, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5,
00048              1, 1, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.5, 0.5, 0.5, 0.5, 0.5,
00049              0.5, 0.5, 3
00050             };//51 notes
00051 
00052 TextLCD lcd(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0); // rs, e, d4-d7
00053 int x=0;
00054 int y=0;
00055 int s=0;
00056 int z=0;
00057 int t=0;
00058 int i=0;
00059 int pjesma1=50, pjesma2=60, pjesma3=90;
00060 char c;
00061 void ometac(void);
00062 void led (void);
00063 void led1 (void);
00064 void led2 (void);
00065 void led3 (void);
00066 void led4 (void);
00067 void svegori(void);
00068 void knightrider(void);
00069 Ledice redled(PA_10);
00070 Ledice yellowled(PB_3);
00071 Ledice greenled(PB_5);
00072 int main()
00073 {
00074     vrijeme.start();
00075     button.rise(&ometac);
00076     lcd.locate(0,0);
00077     srand(time(0)); //current time as seed of random number generator
00078     x = (rand() %51);
00079     y = (rand() %51);
00080     z = (rand() %51);
00081     pc.printf("\n\rMate je odlucio naruciti pjesmu za ekipu, ali zaboravio je novcanik.\n\rZamolio je svoja tri prijatelja Jozu, Peru i Ivu da mu posude odredjeni iznos novca kako bi mogao naruciti zeljenu pjesmu.\n\rKvaka je ta da svaka pjesma ima odredjni iznos. Zato ce Mate moci pustiti pjesmu ovisno o donacijama svojih prijatelja.\n\r");
00082     pc.printf("\n\rJozo je dao Mati %d kn\n", x);
00083     lcd.printf("Jozo je dao\nMati %d kn", x);
00084     wait(2);
00085     lcd.cls();
00086     pc.printf("\n\rPero je dao Mati %d kn\n", y);
00087     lcd.printf("Pero je dao\nMati %d kn", y);
00088     wait(2);
00089     lcd.cls();
00090     pc.printf("\n\rIvo je dao Mati %d kn\n", z);
00091     lcd.printf("Ivo je dao\nMati %d kn", z);
00092     wait(2);
00093     lcd.cls();
00094     s=x+y+z;
00095     pc.printf("\n\rMate sad posjeduje %d kn. Kao takav, upucuje se ka Jukebox-u!\n\r",s);
00096     lcd.printf("Mate sad ima\n%d kn!", s);
00097     wait(2);
00098     lcd.cls();
00099     lcd.printf("Slijedi izbor\npjesme");
00100     wait(2);
00101     lcd.cls();
00102     pc.printf("\n\rNa jukebox-u svaka pjesma ima svoj odredjeni iznos koji se mora uplatiti kako bi ju se pustilo.\n\rIzbor je slijedeci:\n\ra. Lijepa nasa  50kn\n\rb. Zvoncici  60kn\n\rc. Cajka majka  90kn\n\rSad slijedi Matin izbor...\n\r");
00103     pc.printf("\n\rJukebox ispisuje vas raspolozivi iznos:\n\rImate na raspolaganju %d kn", s);
00104 //ovdje samo ide poruka da ništa od pjesme
00105     if (s < pjesma1) {
00106         led();
00107         pc.printf("\n\rPrijatelju, neces ti nista pustati veceras. Vrati se za svoj stol!\n\r");
00108         lcd.printf("Nema za tebe\nnista!");
00109         wait(2);
00110         lcd.cls();
00111         t=vrijeme.read();
00112         lcd.printf("Potrosio si\n%ds na ovo!", t);
00113         wait(2);
00114         lcd.cls();
00115     }
00116 //ovdje kreće loop s jednom pjesmom
00117     else if ((s > pjesma1) && (s < pjesma2)) {
00118         lcd.cls();
00119         pc.printf("\n\rMozes dobiti samo prvu pjesmu. Sviram: Lijepa nasa...\n");
00120         lcd.printf("Moze samo prva\npjesma!");
00121         wait(1);
00122         lcd.cls();
00123         turn_me_on1.attach(&led1, 0.2);
00124         for (i=0; i<=70; i++) {
00125             lcd.printf("Svira:\nLijepa nasa...");
00126             buzzer.period(1/(f1[i])); // set PWM period
00127             buzzer=0.5; // set duty cycle
00128             wait(0.5*b1[i]);
00129             buzzer=0.0;
00130             lcd.cls();
00131             if (i==70) {
00132                 lcd.printf("To bi bilo to!");
00133                 pc.printf("\n\rTo je to za danas!\n\r");
00134                 wait(2);
00135                 lcd.cls();
00136                 t=vrijeme.read();
00137                 lcd.printf("Potrosio si\n%ds na ovo!", t);
00138                 wait(2);
00139                 lcd.cls();
00140             }
00141         }
00142         led();
00143     }
00144 //ovdje kreće loop s dvije pjesme
00145     else if ((s > pjesma2) && (s < pjesma3)) {
00146         pc.printf("\n\rMozes dobiti prvu ili drugu pjesmu pjesmu. Odaberi sto ces:\n\r");
00147         lcd.printf("Moze prva ili\ndruga pjesma!");
00148         lcd.cls();
00149         lcd.printf("Odaberi pjesmu..");
00150         wait(1);
00151         lcd.cls();
00152         c=pc.getc();
00153         if (c=='a') {
00154             pc.printf("\n\rDobar odabir! Svira: Lijepa nasa...\n\r");
00155             turn_me_on1.attach(&led1, 0.2);
00156             for (i=0; i<=70; i++) {
00157                 lcd.printf("Svira:\nLijepa nasa...");
00158                 buzzer.period(1/(f1[i])); // set PWM period
00159                 buzzer=0.5; // set duty cycle
00160                 wait(0.5*b1[i]);
00161                 buzzer=0.0;
00162                 lcd.cls();
00163                 if (i==70) {
00164                     lcd.printf("To bi bilo to!");
00165                     pc.printf("\n\rTo je to za danas!\n");
00166                     wait(2);
00167                     lcd.cls();
00168                     t=vrijeme.read();
00169                     lcd.printf("Potrosio si\n%ds na ovo!", t);
00170                     wait(2);
00171                     lcd.cls();
00172                 }
00173             }
00174             led();
00175         } else if (c=='b') {
00176             pc.printf("\n\rDobar odabir! Svira: Zvoncici...\n\r");
00177             turn_me_on2.attach(&led2, 0.2);
00178             for (i=0; i<=51; i++) {
00179                 lcd.printf("Svira:\nZvoncici...");
00180                 buzzer.period(1/(f2[i])); // set PWM period
00181                 buzzer=0.5; // set duty cycle
00182                 wait(0.25*b2[i]);
00183                 buzzer=0.0;
00184                 lcd.cls();
00185                 if (i==51) {
00186                     lcd.printf("To bi bilo to!");
00187                     pc.printf("\n\rTo je to za danas!\n\r");
00188                     wait(2);
00189                     lcd.cls();
00190                     t=vrijeme.read();
00191                     lcd.printf("Potrosio si\n%ds na ovo!", t);
00192                     wait(2);
00193                     lcd.cls();
00194                 }
00195             }
00196             led();
00197         } else {
00198             pc.printf("\n\rNisi odabrao nista od ponudjenog.\n\rAj bok\n\r!");
00199             lcd.printf("Krivi odabir!\nZbogom momce!");
00200             wait(2);
00201             lcd.cls();
00202             t=vrijeme.read();
00203             lcd.printf("Potrosio si\n%ds na ovo!", t);
00204             wait(2);
00205             lcd.cls();
00206         }
00207     }
00208 //Ovdje kreće loop s tri pjesme
00209     if ((s >= pjesma3)) {
00210         pc.printf("\n\rMozes dobiti bilo koju pjesmu. Odaberi koju ces:\n\r");
00211         lcd.printf("Mogu sve\npjesme!");
00212         lcd.cls();
00213         lcd.printf("Odaberi pjesmu..");
00214         wait(1);
00215         lcd.cls();
00216         c=pc.getc();
00217         if (c=='a') {
00218             pc.printf("\n\rDobar odabir! Svira: Lijepa nasa...\n\r");
00219             turn_me_on1.attach(&led1, 0.2);
00220             for (i=0; i<=70; i++) {
00221                 lcd.printf("Svira:\nLijepa nasa...");
00222                 buzzer.period(1/(f1[i])); // set PWM period
00223                 buzzer=0.5; // set duty cycle
00224                 wait(0.5*b1[i]);
00225                 buzzer=0.0;
00226                 lcd.cls();
00227                 if (i==70) {
00228                     lcd.printf("To bi bilo to!");
00229                     pc.printf("\n\rTo je to za danas!\n\r");
00230                     wait(2);
00231                     lcd.cls();
00232                     t=vrijeme.read();
00233                     lcd.printf("Potrosio si\n%ds na ovo!", t);
00234                     wait(2);
00235                     lcd.cls();
00236                 }
00237             }
00238             led();
00239         } else if (c=='b') {
00240             pc.printf("\n\rDobar odabir! Svira: Zvoncici...\n\r");
00241             turn_me_on2.attach(&led2, 0.2);
00242             for (i=0; i<=51; i++) {
00243                 lcd.printf("Svira:\nZvoncici...");
00244                 buzzer.period(1/(f2[i])); // set PWM period
00245                 buzzer=0.5; // set duty cycle
00246                 wait(0.25*b2[i]);
00247                 buzzer=0.0;
00248                 lcd.cls();
00249                 if (i==51) {
00250                     lcd.printf("To bi bilo to!");
00251                     pc.printf("\n\rTo je to za danas!\n\r");
00252                     wait(2);
00253                     lcd.cls();
00254                     t=vrijeme.read();
00255                     lcd.printf("Potrosio si\n%ds na ovo!", t);
00256                     wait(2);
00257                     lcd.cls();
00258                 }
00259             }
00260             led();
00261         } else if (c=='c') {
00262             pc.printf("\n\rMogao si bolje izabrati! Svira: Cajka majka...\n\r");
00263             turn_me_on3.attach(&svegori, 0.2);
00264             for (i=0; i<=53; i++) {
00265                 lcd.printf("Svira:\nCajka majka...");
00266                 buzzer.period(1/(f3[i])); // set PWM period
00267                 buzzer=0.5; // set duty cycle
00268                 wait(0.5*b3[i]);
00269                 buzzer=0.0;
00270                 lcd.cls();
00271                 if (i==53) {
00272                     lcd.printf("To bi bilo to!");
00273                     pc.printf("\n\rTo je to za danas!\n\r");
00274                     wait(2);
00275                     lcd.cls();
00276                     t=vrijeme.read();
00277                     lcd.printf("Potrosio si\n%ds na ovo!", t);
00278                     wait(2);
00279                     lcd.cls();
00280                 }
00281             }
00282             led();
00283         } else {
00284             pc.printf("\n\rNisi odabrao nista od ponudjenog.\n\rAj bok!\n\r");
00285             lcd.printf("Krivi odabir!\nZbogom momce!");
00286             wait(2);
00287             lcd.cls();
00288             t=vrijeme.read();
00289             lcd.printf("Potrosio si\n%ds na ovo!", t);
00290             wait(2);
00291             lcd.cls();
00292         }
00293     }
00294 }
00295 void ometac()
00296 {
00297     lcd.cls();
00298     pc.printf("\n\rBrateee, pusti nesto od ToNsonaaa!\n\r");
00299     lcd.printf("Brate,pusti\nToNsonaaa!");
00300     wait(2);
00301     lcd.cls();
00302     led4();
00303     for (i=0; i<=51; i++) {
00304         lcd.printf("Evo ti ga!");
00305         buzzer.period(1/(f4[i])); // set PWM period
00306         buzzer=0.5; // set duty cycle
00307         wait(0.5*b4[i]);
00308         buzzer=0.0;
00309         lcd.cls();
00310         if (i==51) {
00311             lcd.printf("Ajmo sad dalje!");
00312             pc.printf("\n\rNastavljamo dalje!\n\r");
00313             wait(2);
00314             lcd.cls();
00315         }
00316     }
00317     led();
00318 }
00319 void led1 ()
00320 {
00321     for(int i=0; i<3; i++) {
00322         redled.boom();
00323         yellowled.off();
00324         greenled.boom();
00325         wait(0.25);
00326         redled.off();
00327         yellowled.boom();
00328         greenled.off();
00329         wait(0.25);
00330         redled.boom();
00331         yellowled.off();
00332         greenled.boom();
00333         wait(0.25);
00334     }
00335     turn_me_on1.detach();
00336 }
00337 void led2 ()
00338 {
00339     for(int i=0; i<3; i++) {
00340         redled.off();
00341         yellowled.boom();
00342         greenled.off();
00343         wait(0.25);
00344         redled.boom();
00345         yellowled.off();
00346         greenled.boom();
00347         wait(0.25);
00348         redled.off();
00349         yellowled.boom();
00350         greenled.off();
00351         wait(0.25);
00352     }
00353     turn_me_on2.detach();
00354 }
00355 void led3 ()
00356 {
00357     knightrider();
00358 }
00359 void led4 ()
00360 {
00361     for(int i=0; i<3; i++) {
00362         svegori();
00363         wait(0.25);
00364         led();
00365         wait(0.25);
00366         svegori();
00367         wait(0.25);
00368         led();
00369         wait(0.25);
00370     }
00371 }
00372 void led ()
00373 {
00374     redled.off();
00375     yellowled.off();
00376     greenled.off();
00377 }
00378 void svegori ()
00379 {
00380     redled.boom();
00381     yellowled.boom();
00382     greenled.boom();
00383     turn_me_on3.detach();
00384 }
00385 void knightrider ()
00386 {
00387     while (1) {
00388         redled.boom();
00389         yellowled.off();
00390         greenled.off();
00391         wait(0.25);
00392         redled.off();
00393         yellowled.boom();
00394         greenled.off();
00395         wait(0.25);
00396         redled.off();
00397         yellowled.off();
00398         greenled.boom();
00399         wait(0.25);
00400         redled.off();
00401         yellowled.boom();
00402         greenled.off();
00403         wait(0.25);
00404         redled.boom();
00405         yellowled.off();
00406         greenled.off();
00407         wait(0.25);
00408     }
00409 }