projektas_nr.9
Skirtumai
Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
| Abiejų pusių ankstesnis pataisymasPrevious revisionKitas pataisymas | Previous revision | ||
| projektas_nr.9 [2015/10/25 18:02] – 193.219.47.27 | projektas_nr.9 [2016/01/03 12:18] (esamas) – simonas | ||
|---|---|---|---|
| Linija 1: | Linija 1: | ||
| ====== Projektas Nr. 9. Muzika – Pjezo signalizatoriai ====== | ====== Projektas Nr. 9. Muzika – Pjezo signalizatoriai ====== | ||
| + | |||
| + | **Ką darome?** | ||
| + | Šiuo metu mes jau kontroliuojame šviesas, judesį ir elektronus. Galime pereiti prie garso. Bet garsas yra analoginis reiškinys, kaip su juo susidoros skaitmeninis Arduino? Mes vėl remsimės jo neįtikėtinu greičiu, kuris leis ją imituoti analoginiu elgesiu. Norėdami tai padaryti, mes pridėsime piezo elementą į vieną iš minėtųjų Arduino skaitmeninių kaiščių. Piezo elementas daro spragtelėjimą kiekvieną kartą, kai jis gauna srovės impulsą. Jei mes duosime jam impulsą tinkamu dažnumu (pvz. 440 kartų per sekundę sukurti užrašo vidurį A) šie paspaudimai bus paleisti kartu, siekiant parengti pastabas. Eksperimentuokite su juo ir gaukite savo Arduino muziką " | ||
| + | |||
| + | **Grandinės dalys:** | ||
| + | * CIRC-06 Montavimo | ||
| + | * 2 Pino galvutė x4 | ||
| + | * Piezo Elementasx1 | ||
| + | * Laidas x4 | ||
| + | |||
| + | **Grandininė schema** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Grandinės šablonas** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Surinkta grandinė** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Šaltiniai** | ||
| + | [[http:// | ||
| + | [[http:// | ||
| + | |||
| + | **Programos kodas** (nereikia visko perrašyti) | ||
| + | Atsisiųsti programos kodą: [[http:// | ||
| + | (Nukopijuoti tekstą ir įklijuoti į tuščia Arduino langą) | ||
| + | < | ||
| + | /* Melodija | ||
| + | * (peskelta) 2005 D. Cuartielles iš K3 | ||
| + | * | ||
| + | * Šis pavyzdys naudoja Piezo garsiakalbį groti melodijai. Jis siunčia kvadratines bangas atitinkamu dažnumu piezo, kad jis generuotų atitinkamus tonus. | ||
| + | * | ||
| + | * Tonų apskaičiavimas yra padaromas remiantis sekančiomis matematinėmis funkcijomis: | ||
| + | * | ||
| + | | ||
| + | * | ||
| + | * kur skirting tonai yra apibūdinami kaip lentelėje: | ||
| + | * | ||
| + | * pažymimas dažnumo periodas | ||
| + | * c 261 Hz 3830 1915 | ||
| + | * d 294 Hz 3400 1700 | ||
| + | * e 329 Hz 3038 1519 | ||
| + | * f 349 Hz 2864 1432 | ||
| + | * g 392 Hz 2550 1275 | ||
| + | * a 440 Hz 2272 1136 | ||
| + | * b 493 Hz 2028 1014 | ||
| + | * C 523 Hz 1912 956 | ||
| + | * | ||
| + | * http:// | ||
| + | */ | ||
| + | |||
| + | int speakerPin = 9; | ||
| + | |||
| + | int length = 15; // numerio pažymėjimas | ||
| + | char notes[] = " | ||
| + | int beats[] = { 1, | ||
| + | int tempo = 300; | ||
| + | |||
| + | void playTone(int tone, int duration) { | ||
| + | for (long i = 0; i < duration * 1000L; i += tone * 2) { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void playNote(char note, int duration) { | ||
| + | char names[] = { ' | ||
| + | int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; | ||
| + | |||
| + | // groti toną atitinkantƳ užraso pavadinimą | ||
| + | for (int i = 0; i < 8; i++) { | ||
| + | if (names[i] == note) { | ||
| + | playTone(tones[i], | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void setup() { | ||
| + | pinMode(speakerPin, | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | for (int i = 0; i < length; i++) { | ||
| + | if (notes[i] == ' ') { | ||
| + | delay(beats[i] * tempo); // rest | ||
| + | } else { | ||
| + | playNote(notes[i], | ||
| + | } | ||
| + | | ||
| + | // pause tarp užrašų | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Neveikia? | ||
| + | |||
| + | **Nėra garso** | ||
| + | Atsižvelgiant į tai, dydį ir formą piezo elementai lengvai praleidžia tinkamas skyles ant ' | ||
| + | |||
| + | **Negali galvoti kol groja melodija?** | ||
| + | Ištraukite piezo elementus kol galvojate, pakraukite savo programą ir vėl juos įkiškite. | ||
| + | |||
| + | **Pavargai nuo ' | ||
| + | Kodas yra parašytas, todėl tu gali lengvai pridėti savo dainų, patikrink žemiau esantį kodą pradėdamas. | ||
| + | |||
| + | **Argi negeriau?** | ||
| + | |||
| + | **Žaidimas su greičiu:** | ||
| + | Kiekvieno užrašo laikas skaičiuojamas remiantis kintamuoju, kaip, pavyzdžiui, | ||
| + | |||
| + | < | ||
| + | int tempas = 300; ---> Int tempas = (naujas #) | ||
| + | </ | ||
| + | |||
| + | Pakeisti didesnio numerio melodijąƳ lėtesnę ar mažesnio numerio melodiją į greitesnę. | ||
| + | |||
| + | **Užrašų nustatymai: | ||
| + | Jei esate susirūpinę pastabomis čia yra naudingos informacijos. Pastabos buvo apskaičiuotos remiantis formule į komentaro bloką programos viršuje. Bet komponuoti atskirus užrašus galite tiesiog keisdami savo tonų vertes. [] masyvas aukštyn arba žemyn, kol jie skambės gerai. (kiekviena nata yra suderinta jo pavadinimo pavadinimuose [] (masyvas ty. c = 1915) | ||
| + | < | ||
| + | char names[] = { ' | ||
| + | int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; | ||
| + | </ | ||
| + | |||
| + | **Komponuokite savo melodijas: | ||
| + | Programa yra iš anksto nustatyti groti " | ||
| + | |||
| + | ** Mirganti Mirganti Maža Žvaigždutė** | ||
| + | < | ||
| + | int length = 15; | ||
| + | char notes[] = " | ||
| + | int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, | ||
| + | 1, 1, 2, 4 }; | ||
| + | Happy Birthday (pirma linija) | ||
| + | int length = 13; | ||
| + | char notes[] = " | ||
| + | int beats[] = {1, | ||
| + | </ | ||
| [[projektas_nr.10|Kitas projektas. Sintezatorius su potenciometru.]] | [[projektas_nr.10|Kitas projektas. Sintezatorius su potenciometru.]] | ||
| [[arduivadas_projektai|Atgal į projektus]] | [[arduivadas_projektai|Atgal į projektus]] | ||
projektas_nr.9.1445788972.txt.gz · Keista: vartotojo 193.219.47.27
