Kviz izveden pomocu mikrokontrolera NUCLEO-F103RB, 16x2 LCD-a i 3 tipkala.

Dependencies:   mbed Pitanja TextLCD

Upute za igranje kviza:

Kviz pocinje pritiskom na tipkalo USER_BUTTON na mikrokontroleru. Zatim se na LCD-u ispisuje pitanje(3s vremena za procitati) te 3 odgovora(svaki 2s). Nakon toga odgovoriti na pitanje treba u 2.5s. Kviz ima 10 pitanja, kada se kviz zavrsi na LCD-u se prikaze broj tocnih odgovora. Kviz se ponovo pokrece pritiskom na tipkalo RESET na mikrokontroleru.

https://os.mbed.com/media/uploads/sdenadija/slika_sklopa.png Na slici vidimo kako sklop izgleda.

Committer:
sdenadija
Date:
Wed Feb 05 22:33:07 2020 +0000
Revision:
0:e7a3d130037a
Kviz final version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sdenadija 0:e7a3d130037a 1 #include "mbed.h"
sdenadija 0:e7a3d130037a 2 #include "pitanja.h"
sdenadija 0:e7a3d130037a 3 #include "TextLCD.h"
sdenadija 0:e7a3d130037a 4
sdenadija 0:e7a3d130037a 5 DigitalOut myled(LED1);
sdenadija 0:e7a3d130037a 6 TextLCD lcd(PA_0,PA_1,PA_4,PB_0,PC_1,PC_0); // Rs, E, D4-D7
sdenadija 0:e7a3d130037a 7 InterruptIn button(USER_BUTTON);
sdenadija 0:e7a3d130037a 8 DigitalIn buttonC(PA_9);
sdenadija 0:e7a3d130037a 9 DigitalIn buttonB(PC_7);
sdenadija 0:e7a3d130037a 10 DigitalIn buttonA(PB_6);
sdenadija 0:e7a3d130037a 11 Timer timer;
sdenadija 0:e7a3d130037a 12 int i = 1;
sdenadija 0:e7a3d130037a 13 int brojTocnih = 0;
sdenadija 0:e7a3d130037a 14
sdenadija 0:e7a3d130037a 15 void start();
sdenadija 0:e7a3d130037a 16 void zapocniKviz();
sdenadija 0:e7a3d130037a 17 void postaviPitanje(string pitanjeA,string pitanjeB, string odgA, string odgB, string odgC, string tocanOdg);
sdenadija 0:e7a3d130037a 18
sdenadija 0:e7a3d130037a 19 int main()
sdenadija 0:e7a3d130037a 20 {
sdenadija 0:e7a3d130037a 21 std::vector<Pitanje> pitanja = Pitanje::init();
sdenadija 0:e7a3d130037a 22 myled = 0;
sdenadija 0:e7a3d130037a 23 string pitanjeA;
sdenadija 0:e7a3d130037a 24 string pitanjeB;
sdenadija 0:e7a3d130037a 25 string odgA;
sdenadija 0:e7a3d130037a 26 string odgB;
sdenadija 0:e7a3d130037a 27 string odgC;
sdenadija 0:e7a3d130037a 28 string tocanOdg;
sdenadija 0:e7a3d130037a 29
sdenadija 0:e7a3d130037a 30 zapocniKviz();
sdenadija 0:e7a3d130037a 31 int j = 1;
sdenadija 0:e7a3d130037a 32 while(j) {
sdenadija 0:e7a3d130037a 33 Pitanje* iter = pitanja.begin();
sdenadija 0:e7a3d130037a 34 int i = 1;
sdenadija 0:e7a3d130037a 35 for ( ; iter != pitanja.end(); iter++) {
sdenadija 0:e7a3d130037a 36 pitanjeA = (*iter).getPitanjeA();
sdenadija 0:e7a3d130037a 37 pitanjeB = (*iter).getPitanjeB();
sdenadija 0:e7a3d130037a 38 odgA = (*iter).getOdgA();
sdenadija 0:e7a3d130037a 39 odgB = (*iter).getOdgB();
sdenadija 0:e7a3d130037a 40 odgC = (*iter).getOdgC();
sdenadija 0:e7a3d130037a 41 lcd.cls();
sdenadija 0:e7a3d130037a 42 tocanOdg = (*iter).getTocanOdg();
sdenadija 0:e7a3d130037a 43 lcd.printf("%d. pitanje:",i);
sdenadija 0:e7a3d130037a 44 wait(1.5);
sdenadija 0:e7a3d130037a 45 lcd.cls();
sdenadija 0:e7a3d130037a 46 i++;
sdenadija 0:e7a3d130037a 47
sdenadija 0:e7a3d130037a 48 postaviPitanje(pitanjeA, pitanjeB, odgA, odgB, odgC, tocanOdg);
sdenadija 0:e7a3d130037a 49
sdenadija 0:e7a3d130037a 50 if(i == 10) {
sdenadija 0:e7a3d130037a 51 j = 0;
sdenadija 0:e7a3d130037a 52 }
sdenadija 0:e7a3d130037a 53 }
sdenadija 0:e7a3d130037a 54 }
sdenadija 0:e7a3d130037a 55 lcd.cls();
sdenadija 0:e7a3d130037a 56 lcd.printf("Kviz zavrsen!");
sdenadija 0:e7a3d130037a 57 lcd.locate(3,1);
sdenadija 0:e7a3d130037a 58 lcd.printf("Tocno %d/10", brojTocnih);
sdenadija 0:e7a3d130037a 59 wait(3);
sdenadija 0:e7a3d130037a 60 }
sdenadija 0:e7a3d130037a 61
sdenadija 0:e7a3d130037a 62 void start()
sdenadija 0:e7a3d130037a 63 {
sdenadija 0:e7a3d130037a 64 i = 0;
sdenadija 0:e7a3d130037a 65 }
sdenadija 0:e7a3d130037a 66
sdenadija 0:e7a3d130037a 67 void zapocniKviz()
sdenadija 0:e7a3d130037a 68 {
sdenadija 0:e7a3d130037a 69 lcd.locate(2,0);
sdenadija 0:e7a3d130037a 70 lcd.printf("Zapocni kviz");
sdenadija 0:e7a3d130037a 71 lcd.locate(5,1);
sdenadija 0:e7a3d130037a 72 lcd.printf("Sretno!");
sdenadija 0:e7a3d130037a 73 while(i) {
sdenadija 0:e7a3d130037a 74 button.rise(&start);
sdenadija 0:e7a3d130037a 75 }
sdenadija 0:e7a3d130037a 76 lcd.cls();
sdenadija 0:e7a3d130037a 77 }
sdenadija 0:e7a3d130037a 78
sdenadija 0:e7a3d130037a 79 void postaviPitanje(string pitanjeA,string pitanjeB, string odgA, string odgB, string odgC, string tocanOdg)
sdenadija 0:e7a3d130037a 80 {
sdenadija 0:e7a3d130037a 81 lcd.cls();
sdenadija 0:e7a3d130037a 82 lcd.locate(0,0);
sdenadija 0:e7a3d130037a 83 lcd.printf("%s",pitanjeA.c_str());
sdenadija 0:e7a3d130037a 84 lcd.locate(0,1);
sdenadija 0:e7a3d130037a 85 lcd.printf("%s",pitanjeB.c_str());
sdenadija 0:e7a3d130037a 86 wait(3);
sdenadija 0:e7a3d130037a 87 lcd.cls();
sdenadija 0:e7a3d130037a 88
sdenadija 0:e7a3d130037a 89 lcd.printf("A)%s",odgA.c_str());
sdenadija 0:e7a3d130037a 90 wait(2);
sdenadija 0:e7a3d130037a 91 lcd.cls();
sdenadija 0:e7a3d130037a 92
sdenadija 0:e7a3d130037a 93 lcd.printf("B)%s",odgB.c_str());
sdenadija 0:e7a3d130037a 94 wait(2);
sdenadija 0:e7a3d130037a 95 lcd.cls();
sdenadija 0:e7a3d130037a 96
sdenadija 0:e7a3d130037a 97 lcd.printf("C)%s",odgC.c_str());
sdenadija 0:e7a3d130037a 98 wait(2);
sdenadija 0:e7a3d130037a 99 lcd.cls();
sdenadija 0:e7a3d130037a 100
sdenadija 0:e7a3d130037a 101 timer.reset();
sdenadija 0:e7a3d130037a 102 timer.start();
sdenadija 0:e7a3d130037a 103 lcd.printf("Vas odgovor je?");
sdenadija 0:e7a3d130037a 104 while(timer.read_ms() < 3500) {
sdenadija 0:e7a3d130037a 105 if(buttonA || buttonB || buttonC) {
sdenadija 0:e7a3d130037a 106 if (buttonA &&(tocanOdg == odgA)) {
sdenadija 0:e7a3d130037a 107 lcd.cls();
sdenadija 0:e7a3d130037a 108 lcd.locate(5,0);
sdenadija 0:e7a3d130037a 109 lcd.printf("Tocno");
sdenadija 0:e7a3d130037a 110 wait(1);
sdenadija 0:e7a3d130037a 111 brojTocnih++;
sdenadija 0:e7a3d130037a 112 break;
sdenadija 0:e7a3d130037a 113 }
sdenadija 0:e7a3d130037a 114 if (buttonB &&(tocanOdg == odgB)) {
sdenadija 0:e7a3d130037a 115 lcd.cls();
sdenadija 0:e7a3d130037a 116 lcd.locate(5,0);
sdenadija 0:e7a3d130037a 117 lcd.printf("Tocno");
sdenadija 0:e7a3d130037a 118 wait(1);
sdenadija 0:e7a3d130037a 119 brojTocnih++;
sdenadija 0:e7a3d130037a 120 break;
sdenadija 0:e7a3d130037a 121 }
sdenadija 0:e7a3d130037a 122 if (buttonC &&(tocanOdg == odgC)) {
sdenadija 0:e7a3d130037a 123 lcd.cls();
sdenadija 0:e7a3d130037a 124 lcd.locate(5,0);
sdenadija 0:e7a3d130037a 125 lcd.printf("Tocno");
sdenadija 0:e7a3d130037a 126 wait(1);
sdenadija 0:e7a3d130037a 127 brojTocnih++;
sdenadija 0:e7a3d130037a 128 break;
sdenadija 0:e7a3d130037a 129 } else {
sdenadija 0:e7a3d130037a 130 lcd.cls();
sdenadija 0:e7a3d130037a 131 lcd.locate(5,0);
sdenadija 0:e7a3d130037a 132 lcd.printf("Krivo");
sdenadija 0:e7a3d130037a 133 wait(1);
sdenadija 0:e7a3d130037a 134 break;
sdenadija 0:e7a3d130037a 135 }
sdenadija 0:e7a3d130037a 136 }
sdenadija 0:e7a3d130037a 137 if (timer.read_ms() >2500) {
sdenadija 0:e7a3d130037a 138 lcd.cls();
sdenadija 0:e7a3d130037a 139 lcd.printf("Isteklo vrijeme");
sdenadija 0:e7a3d130037a 140 wait(1);
sdenadija 0:e7a3d130037a 141 break;
sdenadija 0:e7a3d130037a 142 }
sdenadija 0:e7a3d130037a 143 }
sdenadija 0:e7a3d130037a 144 }