Sadržaj:

Registar izmjena 74HC164 i vaš Arduino: 9 koraka
Registar izmjena 74HC164 i vaš Arduino: 9 koraka

Video: Registar izmjena 74HC164 i vaš Arduino: 9 koraka

Video: Registar izmjena 74HC164 i vaš Arduino: 9 koraka
Video: Leap Motion SDK 2024, Novembar
Anonim
Registar izmjena 74HC164 i vaš Arduino
Registar izmjena 74HC164 i vaš Arduino
Registar izmjena 74HC164 i vaš Arduino
Registar izmjena 74HC164 i vaš Arduino

Registri pomaka vrlo su važan dio digitalne logike, djeluju kao ljepilo između paralelnog i serijskog svijeta. Smanjuju broj žica, upotrebu pinova, pa čak i pomažu u skidanju opterećenja s vašeg procesora tako što mogu pohraniti njihove podatke. Dolaze u različitim veličinama, s različitim modelima za različite namjene i različitim značajkama. Ono o čemu ću danas raspravljati je 74HC164 8 -bitni, serijski paralelno izlaz, bez zaključavanja, pomak u registru. Zašto? Pa, za jedno, to je jedan od najosnovnijih registara pomaka koji olakšava učenje o tome, ali slučajno je to bio jedini koji sam imao (lol!) Ova instrukcija pokriva kako ovaj čip radi, kako ga spojiti, i povežite ga s arduinom, uključujući neke uzorke skica i LED sklopove. Nadam se da ćete svi uživati!

Korak 1: Dakle, šta su registri pomaka?

Dakle, šta su registri pomaka?
Dakle, šta su registri pomaka?

Kao što je ranije spomenuto, oni dolaze u svim različitim okusima, a spomenuo sam i da koristim 8 -bitni 74HC164, serijski paralelno izlaz, bez zaključavanja, pomak registara, pa što to sve znači?!? Prvo, ime 74-znači njegov dio logičke porodice 74xx, a budući da svojom logikom ne može izravno kontrolirati jako veliku struju (16-20 ma za cijeli čip je uobičajeno), samo prenosi signale, ali to ne znači taj signal ne ide na tranzistor koji može prebaciti veće strujno opterećenje. HC znači da je to CMOS uređaj velike brzine, o tome možete pročitati na donjoj poveznici, ali ono što u osnovi trebate znati je da je niska uređaj za napajanje i radit će od 2 do 5 volti (pa ako koristite arduino od 3,3 volti, u redu) Također može raditi ispravno pri velikim brzinama. Ovaj čip ima tipičnu brzinu od 78 MHz, ali možete ići i sporo ili brzo (dok se ne počne gušiti) kako želite www.kpsec.freeuk.com/components/74series.htm164 je broj modela ovog čipa, postoji njihov veliki grafikon na wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits Sljedeća, 8 bita Registar pomaka se sastoji od flip flop kola, flip flop je 1 bit memorije, ovaj ha s 8 (ili 1 bajt memorije). Budući da se radi o memoriji, ako ne morate ažurirati registar, možete jednostavno prestati "razgovarati" s njim i on će ostati u onom stanju u kojem ste ga ostavili, sve dok s njim ponovo "ne razgovarate" ili resetirate napajanje. drugi registri logičke serije pomaka 7400 mogu paralelno izlaziti do 16 -bitnog serijskog izlaza. To znači da vaš arduino šalje podatke serijski (pri uključivanju impulsa jedan za drugim) i registar pomaka postavlja svaki bit na ispravan izlazni pin. Ovaj model zahtijeva samo 2 žice za kontrolu, tako da možete koristiti 2 digitalna pina na arduinu i razbiti ta 2 na još 8 digitalnih izlaza, neki drugi modeli su paralelni u serijskom izlazu, rade istu stvar, ali kao ulazi na arduino (na primjer NES gamepad) bez zaključavanja Ovo može biti kvar ovog čipa ako vam zatreba. Kako podaci ulaze u registar pomaka putem serijske jedinice, oni se pojavljuju na prvom izlaznom pinu, kada uđe impuls sata, prvi bit se pomiče za 1 mjesto, stvarajući efekt pomicanja na izlazima, na primjer 00000001 će se pojaviti na izlazima kao 101001000100001000001000000100000001Ako razgovarate s drugim logičkim uređajima koji dijele isti sat i to ne očekuju, to bi moglo uzrokovati probleme. Zaključani registri pomaka imaju dodatni skup memorije, pa kada podaci završe s unosom u registar, možete okrenuti prekidač i prikazati izlaze, ali dodaje još jednu žicu, softver i stvari s kojima treba držati korak. U slučaju ove upute kontroliramo LED zaslone, efekt pomicanja se događa tako brzo da ga ne vidite (osim kada prvi put uključite čip), a kada se bajt nađe u registru pomaka, nema više pomicanja. Mi ćemo kontrolirati tip grafika, 7 segmenata i 16LED matrica matrice 4x4 s ovim čipom i softverom na arduinu koristeći samo 2 digitalna pina (+ napajanje i uzemljenje)

Korak 2: Osnovno ožičenje i rad

Osnovno ožičenje i rad
Osnovno ožičenje i rad
Osnovno ožičenje i rad
Osnovno ožičenje i rad

Ožičenje 74HC164 je 14 -pinski čip, ima 4 ulazna pina, 8 izlaznih pinova, napajanje i uzemljenje, pa krenimo od vrha. Pinovi 1 i 2 su oba serijska ulaza, postavljeni su kao logička vrata I, što znači da oboje moraju biti logički visoki (tj. 5 volti) da bi se bit mogao vidjeti kao 1, nisko stanje (0 volti) na oba će se čitati kao nula. Ovo nam zaista ne treba i lakše se rješava u softveru, pa odaberite jedan i povežite ga s V+ tako da uvijek čita visoko. Odlučio sam se za korištenje kratkospojnika od pina 1 do pina 14 (V+) jer jednostavno možete preskočiti kratkospojnik za ploču preko čipa. Jedan preostali serijski ulaz (pin 2 u mojim shemama) će ići na digitalni pin 2 arduina. Igle 3, 4, 5 i 6 iz 74HC164 su prva 4 bajta izlaza Pin 7 se povezuje sa zemljom Skok udesno, pin 8 je pin sata, ovako shift registar zna da je sljedeći serijski bit spreman za čitanje, ovo bi trebalo biti spojeno na digitalni pin 3 na arduinu. Pin 9 je da obriše cijeli registar odjednom, ako se spusti, imate mogućnost da ga koristite, ali ništa u ovom nedokučivom ne radi, pa ga vežite za V+pinove 10, 11 12 i 13 su posljednja 4 bajta izlazne pinove 14 je napajanje čipova Operacija Prvo morate postaviti serijski ulaz registra (digitalni pin 2 na arduinu) visoko ili nisko, zatim morate okrenuti iglu sata (digitalni pin 3) s niskog na visoko, registar pomaka će pročitati podatke na serijskom ulazu i pomaknuti izlazne pinove za 1, ponovite 8 puta i postavili ste svih 8 izlaza. To se može učiniti ručno pomoću for petlji i digitalnog pisanja u arduino IDE -u, ali budući da t To je vrlo uobičajena komunikacija na hardverskom nivou (SPI) koja ima jednu funkciju koja to radi umjesto vas. shiftOut (dataPin, clockPin, bitOrder, value) Samo mu recite gdje su podaci i pinovi sata spojeni na arduino, na koji način slati podatke i šta slati, a za vas se brine (zgodno)

Korak 3: Projekti

Projekti
Projekti

U redu, dosta predavanja i teorije, napravimo zabavne stvari s ovim čipom! Postoje 3 projekta koja možete isprobati u ovom uputstvu, prva 2 su laka i mogu se izraditi u trenu. Treći, 4x4 LED matrica, zahtijeva više vremena i razmišljanja o izgradnji, zbog LED ožičenja. Popis dijelova Projekt 1: '2 Wire' bargraf LED kontroler zaslona 1 * 74HC164 Registar pomaka1 * lemljena ploča1 * arduino ili arduino kompatibilan (5v) 1 * 330 ohm otpornik 1/4 vata 8 * normalni izlaz crvena LED -ica 12 * kratkospojne žice Projekt 2: '2 -žilni' 7 -segmentni kontroler zaslona 1 * 74HC164 Registar pomaka1 * matična ploča bez lemljenja1 * kompatibilna s arduinom ili arduinom (5v) 1 * 330 ohm otpornik 1/4 vata 1 * displej sa zajedničkom katodom, sedam segmenata9 * kratkospojne žice Projekt 3: '2 -žilni' 4x4 LED matrični zaslon 1 * 74HC164 Registar pomaka1 * arduino ili arduino kompatibilan (5v) 4 * 150 ohma 1 Otpornik 1/4 vata 8 * 1Kohm otpornik 1/8 vata (ili veći) 8 * NpN tranzistor (2n3904 ili bolji) 16 * normalna crvena LED dioda je sredstvo za njegovu konstrukciju i reguliranu snagu od 5 volti koja može podnijeti 160+ma (možete uključite sve LED diode odjednom poput kočionog svjetla)

Korak 4: Projekat 1 [pt 1]: Hardverski kontroler Bargraph LED ekrana za '2 žice'

Projekat 1 [pt 1]: Hardverski kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 1]: Hardverski kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 1]: Hardverski kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 1]: Hardverski kontroler bargraf LED ekrana za '2 žice'

Spojite arduino i shift registar prema shemi, već imam 10 -segmentni bargrafski prikaz spreman za upotrebu na ploči i to ćete vidjeti na slici, ali možete učiniti istu stvar s pojedinačnim LED diodama Na drugoj stranici Izjavio sam da to nisu upravljački uređaji, već logički uređaji, sa malim količinama struje koje mogu proći kroz njih. Da bi se radilo sa 8 LED dioda, uz održavanje kruga jednostavnim, a ne kuhanjem registara pomaka, potrebno je da prilično ograničimo struju. LED diode su ožičene paralelno i dijele zajedničku masu (zajednička katoda), prije nego što uđu u napajanje opskrbnu masu koju trebaju proći kroz otpornik od 330 ohma, ograničavajući ukupnu količinu struje koju bi sve LED diode mogle iskoristiti na 10 mA (na 5 volti). Zbog toga LED diode ostaju u bolesnom stanju, ali svijetle i služe za ovaj primjer, kako biste LED diode napajali odgovarajućom strujom, morat ćete umetnuti tranzistor u kojem registar pomaka može uključiti / isključiti izvor veće struje (vidi projekt 3) Potreban je podatkovni pin registra pomaka (pin 2) za povezivanje sa arduino digitalnim pinom # 2 Pin sata za promjenu registra (pin 8) mora se povezati s arduino digitalnim pinom # 3

Korak 5: Projekt 1 [pt 2]: '2 Wire' Bargraph LED kontroler softver za prikaz

Projekat 1 [pt 2]: Softver za kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 2]: Softver za kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 2]: Softver za kontroler bargraf LED ekrana za '2 žice'
Projekat 1 [pt 2]: Softver za kontroler bargraf LED ekrana za '2 žice'

Primjer 1: Otvorite datoteku "_164_bas_ex.pde" Unutar arduino IDE -a, to je jednostavna skica koja vam omogućuje samo definiranje uključivanja ili isključivanja LED dioda na bargrafu. Prva 2 retka definiraju brojeve pinova koje ćemo koristiti za podatke i sat, ja koristite #define preko const integer, lakše se sjećam i nema prednosti za jedno ili drugo nakon sastavljanja #define data 2 #define clock 3 next je funkcija postavljanja void, radi samo jednom, pa se arduino okreće on, postavlja registar pomaka i nema šta drugo raditi. Unutar funkcije postavljanja void -a postavljamo sat i pinove podataka kao OUTPUT pinove, a zatim pomoću funkcije shiftOut šaljemo podatke u registar pomaka void setup () {pinMode (clock, OUTPUT); // čini pin sata izlaznim pinMode (podaci, OUTPUT); // čini pin podataka izlaznim shiftOut (data, clock, LSBFIRST, B10101010); // pošaljite ovu binarnu vrijednost u registar pomaka} U funkciji shiftOut možete vidjeti njene argumentedata je pin podataka, clock je pin sata LSBFIRST upućuje na to kojim se redoslijedom nalazi, prilikom ispisivanja u binarnom zapisu (Bxxxxxxxx) 7. element pored B je najmanji bitni bit Prvo se unosi prvi, pa završava na posljednjem izlazu nakon što se svih 8 bitova unese u B10101010 je binarna vrijednost koja se šalje u registar pomaka i uključit će svako neparno svjetlo, pokušajte se igrati s različitim vrijednostima za uključivanje ili isključivanje različitih uzoraka i na kraju prazna void petlja (jer vam je potrebna čak i ako je ne koristite) void loop () {} // za sada prazna petlja Primjer 2: prvih 8 redaka je isto kao i prvih 8 redova prvog primjera, u stvari se neće promijeniti za bilo koji drugi projekt, pa #define data 2 #definirajte sat 3void setup () {pinMode (clock, OUTPUT); // čini pin sata izlaznim pinMode (podaci, OUTPUT); // Učinite pin podataka izlaznim. No, pri postavljanju void -a postoji petlja 8 brojeva za petlju, koja uzima prazan bajt i pomiče 1 bit u isto vrijeme počevši od krajnjeg lijevog bita i krećući se desno. Ovo je unatrag od prvog primjera gdje smo krenuli od krajnjeg desnog bita i radili lijevo, ali pomoću MSBFIRST -a funkcija shift out šalje podatke na ispravan način. Također dodajemo kašnjenje u for petlji tako da se usporava dovoljno da bude vidljivo. for (int i = 0; i <8; ++ i) // za 0 - 7 do {shiftOut (podaci, sat, MSBFIRST, 1 << i); // pomak bita logičke visoke (1) vrijednosti za i delay (100); // odgodite 100 ms ili ga ne biste mogli vidjeti}} void loop () {} // prazna petlja za sada otpremite skriptu i sada biste trebali vidjeti da graf svijetli jedno po jedno svjetlo

Korak 6: Projekat 2: '2 Wire' 7 -segmentni kontroler prikaza

Projekt 2: '2 Wire' 7 -segmentni kontroler prikaza
Projekt 2: '2 Wire' 7 -segmentni kontroler prikaza
Projekt 2: '2 Wire' 7 -segmentni kontroler prikaza
Projekt 2: '2 Wire' 7 -segmentni kontroler prikaza

Pogledajte isječak vašeg 7 -segmentnog ekrana (imao sam samo dvostruki, ali samo polovicu) i upotrijebite donji crtež za povezivanje svakog segmenta na ispravan bit na registru pomakabit 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (ako želite koristiti decimalni zarez) I katodu ekrana kroz otpornik od 330 ohma i za napajanje uzemljite sada otvorite seven_seg_demo.pde u arduino IDEF -u prvo vidite gdje definiramo podatke i pinove sata #define data 2 #define clock 3 Zatim postavljamo sve obrasce karaktera u binarnom obliku, ovo je prilično jednostavno, pogledajte donji crtež, ako vam je potreban srednji segment upišite jedan, sljedeći vam je potreban gornji segment, ako je tako, upišite drugi, nastavite to raditi dok ne pokrijete svih 8 segmenata, primijetite da je moj krajnji desni bit (bit 8) uvijek 0, to je zato što nikad ne palim decimalu tačka. bajt nula = B01111110; bajt jedan = B00000110; bajt dva = B11011010; bajt tri = B11010110; bajt četiri = B10100110; bajt pet = B11110100; bajt šest = B11111100; bajt sedam = B01000110; bajt osam = B11111110; bajt devet sljedeći u void setup -u postavljamo naše podatke i pinove sata na izlaze void setup () {pinMode (clock, OUTPUT); // čini pin sata izlaznim pinMode (podaci, OUTPUT); // učinimo da je pin podataka izlaz3} onda u void petlji koristimo shiftOut za prikaz svakog uzorka (broja) čekamo 1/2 sekunde i prikazujemo sljedeći, 0 do 9, budući da se to radi u funkciji void loop on će se računati 0-9 i ponavljajte zauvijek. void loop () {shiftOut (podaci, sat, LSBFIRST, nula); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, jedan); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, dva); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, tri); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, četiri); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, pet); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, šest); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, sedam); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, osam); kašnjenje (500); shiftOut (podaci, sat, LSBFIRST, devet); kašnjenje (500);}

Korak 7: Projekat 3 [pt 1]: '2 Wire' 4x4 LED matrični ekran

Projekt 3 [pt 1]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 1]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 1]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 1]: '2 Wire' 4x4 LED matrični zaslon

Projekt LED matrice 4x4 prilično je složeniji, ali gotovo je u izgradnji, biram da rudnik bude lemljen na ploči, ali bi trebalo biti moguće replicirati ga na matičnoj ploči, samo puno više razmaknutih. razlikuje se po tome što registar pomaka ne upravlja izravno LED diodama, nego se izlazi registra registra pomaka šalju kroz otpornik od 1Kohm na podnožje NpN tranzistora, kada je izlaz bita visok, propušta dovoljno struje i napona u tranzistora za prebacivanje veze između kolektora i emitera, kolektori su vezani na "čvrste" regulirane 5 volte. Emiteri tranzistora su spojeni na otpornike od 150 ohma, a otpornici su vezani na anode 4 LED -a u nizu i ograničava red na 20 mAma, iako je pri crtanju slika na ekranu uključen samo jedan LED dioda, pa samim time i pri punoj svjetlini (u blizini se brzo uključuju i isključuju kako bi činili cijelu sliku) Postoje 4 retka i 4 kolona, svaka red dobije otpornik i tranzistor, na svakoj koloni LED katode su vezane zajedno, naletele na kolektor tranzistora, čija je baza također kontrolirana registrom pomaka, i na kraju uzemljene. Velika verzija sheme www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Korak 8: Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon

Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon
Projekt 3 [pt 2]: '2 Wire' 4x4 LED matrični zaslon

Registar pomaka kontrolira anodu i katode LED dioda u YX formatu, pogledajte sljedeći bit 1 = stupac 1 (krajnji desni) bit 2 = stupac 2bit 3 = stupac 3bit 4 = stupac 4bit 5 = red 1 (gornji) bit 6 = red 2bit 7 = red 3bit 8 = red 4Da biste sliku iscrtali na dimenzionalnom papiru kvadrata 4x4 i popunili koje želite prikazati, napravite YX tablicu. Ispod ćete vidjeti mapiranje za usporedbu, kao i najbolje što možete učiniti na 4x4 "piksela". Za svaki popunjeni odjeljak zapisujem u kojoj se koloni (Y) nalazi, zatim u kojem se redu nalazi (X) Sada otvorite u datoteci _4x4.pde u arduino IDE -u vidjet ćete naša 2 prijatelja #define data 2 #definirati sat 3 zatim niz cijelih brojeva int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Ako pogledate samo popis mojih zapisanih YX koordinata, bila bi velika muka u ruci pretvoriti te vrijednosti ručno, a mi imamo kompjuter … neka to uradi! naši satovi i pinovi za podatke OUTPUTS void setup () {pinMode (clock, OUTPUT); // čini pin sata izlaznim pinMode (podaci, OUTPUT); // učinimo da pin podataka bude izlaz3} I zbunjujuća void petlja, za početak stvari moramo deklarirati neke lokalne varijable void loop () {int Y; int X; byte out; Zatim for petlja, ova petlja mora biti dugačka koliko je unosa u img nizu, za ovu sliku sam koristio samo 6 piksela, tako da čini 12 YX koordinata. Omogućujem da preskoči svaki drugi broj pomoću i += 2, jer čitamo 2 koordinate po petlji za (int i = 0; i <12; i += 2) // broj tačaka u img nizu, u ovom slučaju 12 {Sada čitamo Y unos na u nizu i oduzimamo jedan od njegove vrijednosti, jer bajtovi ne počinju na jednom, počinju na nuli, ali smo računali od 1 // dobijemo prvi par YX kabela Y = (img - 1); // oduzimamo jedan jer broj bitova počinje od 0 Zatim čitamo X unos na [i + 1] u nizu i oduzimamo jedan od njegove vrijednosti, iz istog razloga X = (img [i + 1] - 1); Nakon što dobijemo YX vrijednosti piksela, radimo nešto po bitovima ili matematički i pomjeramo se ulijevo. Prvo moramo pročitati vrijednost X i bez obzira na njenu vrijednost pomaknemo je za toliko mjesta + 4 lijevo, pa ako je X 4 i dodajte 4 to je bit 8 (MSB), ponovo gledate grafikon … bit 1 = stupac 1 (krajnji desni) bit 2 = stupac 2bit 3 = stupac 3bit 4 = stupac 4bit 5 = red 1 (gornji) bit 6 = red 2bit 7 = red 3bit 8 = red 4Bit 8 je posljednji redSljedeća je vrijednost Y također pomaknuta ulijevo, ovaj put samo od sebe, ništa se ne dodaje. Konačno su ta dva or'ed zajedno u 1 bajt umjesto u 2 pola bajta (gricka), koristeći bitove ili (simbol |) uzima dva bajta i u osnovi ih zbraja, pretpostavimo da je X = 10000000Y = 00000001 -------------------- ILI = 10000001row 4 kolona 1 out = 1 << (X + 4) | 1 << Y; I na kraju shiftOut za prikaz trenutne slike i nastavite to raditi sve dok nemamo više podataka u nizu … odgodite trenutak i petlju zauvijek, jer smo podatke premještali ulijevo i treba nam MSB da bude na zadnjem izlaznom pinu izmjenskog registra prvo ga pošaljite. shiftOut (podaci, sat, MSBFIRST, izlaz); // pomaknemo bajt prema našem kašnjenju registra (1); // Odgodite ga tako da ima priliku ostaviti svjetlosnu mrlju u vašim očima. Slobodno napravite vlastite slike i efekte, postoje 3 uzorka datoteka, nasmijano lice i šahovnica (koja više liči na pruge), i na kraju nasumični proizvođač sjaja

Korak 9: Zaključak

Zaključak
Zaključak
Zaključak
Zaključak
Zaključak
Zaključak

Sve ovo je prilično zgodan mali čip, i drago mi je što sam ga skinuo sa starog komada elektronike koji je otišao u smeće. Može se koristiti i za druge stvari osim sistema za prikaz, ali svi vole svjetla i trenutne povratne informacije ovo što se dešava izuzetno je korisno za vizuelne mislioce poput mene. Takođe, oprostite mi kod, ja imam arduino tek od treće sedmice oktobra, i to je bio prilično veliki kurs. Ali to je sjajna stvar u vezi sa sistemom, ako sjednete i radite s njim, pun je urednih funkcija koje čine upravljanje svijetom pomoću 8 -bitnog mikrokontrolera prilično lakim. Kao i uvijek, pitanja i komentari su dobrodošli i hvala na čitajući, nadam se da ste puno naučili

Preporučuje se: