Բովանդակություն:
- Քայլ 1: Նյութեր և պատրաստում
- Քայլ 2. AVR- ի զոդում LED- ներին և բարձրախոսին
- Քայլ 3. mingրագրավորում Attiny13a
- Քայլ 4: Ստեղծեք որոնվածը Marioman- ի համար
- Քայլ 5: Թողնել Մարիոմանին ազատության մեջ
Video: Թարթում, երգում, Մարիոման ՝ 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:53
Օգտագործեք attiny13a, երկու LED և շնորհավորական բացիկի խոսնակ ՝ ստեղծելու համար թարթող Marioman, որը նվագում է Super Mario Brothers թեմայի երգը: Սա կարող է հեշտ էժան նախագիծ լինել բոլոր նրանց համար, ովքեր փնտրում են AVR ծրագրավորման մեջ ներխուժելու զվարճալի միջոց: Երգերի նոտաները գեներացվում են AVR միկրոկոնտրոլերի մեկ քորոցի վրա թողարկված քառակուսի ալիքի միջոցով: LED- ները, որոնք փոխարինվում են յուրաքանչյուր նոտայի վրա, միացված են նույն չիպից յուրաքանչյուրի 2 կապում:
Քայլ 1: Նյութեր և պատրաստում
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3d Արժեքը ՝ $ 1.40
- 2 LED - ցանկացած LED կանի
- 1 լիթիումի մետաղադրամով մարտկոց
www.sparkfun.com/commerce/product_info.php?products_id=338 Արժեքը ՝ $ 2.00
1 մետաղադրամի բջիջի սեփականատեր
www.sparkfun.com/commerce/product_info.php?products_id=8822 Արժեքը `$ 1.25
1 փոքր բարձրախոս երաժշտական շնորհավորական բացիկից
Նյութերի ընդհանուր արժեքը 5 5 դոլար Երկու LED- ները ուղղակիորեն ամրացված էին attain13A- ից յուրաքանչյուրի երկու կապում: Յուրաքանչյուր LED- ի համար օգտագործվում է երկու կապում, երկրորդ կապը ցածր է օգտագործվում որպես գետնին միանալու համար: AVR- ի I/O կապերի ընթացիկ սահմանը թույլ չի տա LED- ները չափից ավելի գծել, այնպես որ անհրաժեշտ չէ ռեզիստորը միացնել սերիա: Օգտագործված խոսնակը բնորոշ է երաժշտական բացիկի մեջ հայտնաբերվածին, որը կանի ցանկացած փոքր խոսնակ, հաշվի առնելով, որ սա թողարկում է քառակուսի ալիքի հնչերանգ, դա չափազանց կարևոր չէ անհանգստանալ բարձրախոսը վարելու կամ ձայնի որակի վրա:
Քայլ 2. AVR- ի զոդում LED- ներին և բարձրախոսին
Որպեսզի LED- ները գնան ձեռքերի պես, մեկ քորոց թեքված է AVR- ի վրա յուրաքանչյուր կողմում: Այս կերպ AVR- ով կողմնորոշվելը հեշտացնում է բարձրախոսին միանալը (երկրորդ պատկերը), քանի որ միացումները երկու ներքևի կապում են: Գեղագիտության համար դուք ցանկանում եք, որ չիպի դիմացի հատվածը դեպի դուրս լինի, այնպես որ համոզվեք, որ խոսնակը նույն կերպ է նայում, երբ այն կցված է:
Քայլ 3. mingրագրավորում Attiny13a
AVR- ների ծրագրավորման բազմաթիվ տարբերակներ կան: Այս նախագծի համար օգտագործվել է USBtiny- ն, որը հասանելի է որպես հավաքածու ladyada- ի կայքից https://www.ladyada.net/make/usbtinyisp/index.html կամ լարեր ամրացրեք կանացի վարդակին և միացրեք դրանք տախտակի մեջ, կամ ավելի լավ ՝ ձեռք բերեք այսպիսի էժան AVR ծրագրավորման ադապտեր:.
Քայլ 4: Ստեղծեք որոնվածը Marioman- ի համար
The attiny13A- ն ունի 1K ծրագրավորվող ֆլեշ և 64bytes SRAM: Կցված tar ֆայլը ունի սկզբնաղբյուր, ինչպես նաև ներբեռնման համար կազմված ծրագրակազմ: Երաժշտության ստեղծման համար c կոդի երեք զանգված է օգտագործվել
- freq - յուրաքանչյուր նոտայի հաճախականություններ
- երկարություն - յուրաքանչյուր գրառման երկարություն
- հետաձգում - դադար յուրաքանչյուր նոտայի միջև
Հաճախականությունների զանգվածը չունի իրական հաճախականություններ, այլ այն արժեքը, որը պետք է դնել TTCROB գրանցամատյանում ՝ PB0 պինից քառակուսի ալիք առաջացնելու համար: Ահա քառակուսի ալիքների առաջացման հաշվարկների և կապի կազմաձևի համառոտ պատկերը.
- The attiny13A- ն ունի ներքին տատանում `9.6 ՄՀց հաճախականությամբ
- IO- ի ներքին ժամացույցը տատանումն է `բաժանված 8 կամ 1.2 ՄՀց
- Ներքին ժամաչափը տեղադրված է 8 բիթանոց գրանցամատյանում ՝ յուրաքանչյուր ժամացույցի ցիկլը հաշվարկելու 8 -ով նախնական սանդղակով:
- Սա հանգեցնում է մեկ տիզի ՝ հավասար 1 / (1.2MHz / 8) =.006667 մգ
- The attiny13A- ն կազմաձևված է 8 բիթանոց TCCR0B գրանցամատյանում եղածը համեմատելու ժամաչափի հետ և միացնելու դեպքում քորոցը փոխելու ժամանակ:
- Օրինակ, 524 Հց հաճախականությամբ քառակուսի ալիք առաջացնելու համար (միջին օկտավայից մեկ միջին C- ից բարձր), որն ունի 1,908 մկ:
1.908ms = 286 ժամացույցի տիտղոս (1.908/.0067) 286 -ը բաժանեք 2 -ի ՝ t/2 -ում քորոցը փոխելու համար (286/2 = 143) Այս գրառումը ստեղծելու համար 143 -ը դրեք TTCR0B գրանցամատյանում: Սա բոլոր անհրաժեշտ ծածկագիրն է ժամաչափը կարգավորելու համար համեմատեք և թողարկեք քառակուսի ալիք.
TCCR0A | = (1 << WGM01); // կարգավորել ժամանակաչափ 1 CTC ռեժիմի համար TCCR0A | = (1 << COM0A0); // միացնել OC0A- ն TCCR0B համեմատման խաղի վրա = = (1 << CS01); // clk/8 prescale TTCR0B = 143; // առաջացնել քառակուսի ալիք 524 Հց հաճախականությամբՀնչյուններն ու դրանց միջև դադարները հետաձգելու համար կիրառվեց մի պարզ հետաձգման գործառույթ
դատարկ քուն (int ms) {int cnt; համար (cnt = 0; cnt <(ms); cnt ++) {int i = 150; մինչդեռ (i--) {_asm («NOP»); }}}Սա հաշվում է 150 -ից, որտեղ յուրաքանչյուր NOP ցիկլը մոտավորապես.006667ms է: Վերջին բանը, որ անում է ծածկագիրը, զանգվածների միջով անցնելն է, երաժշտություն առաջացնելը և երկու LED- ները թարթելը: Դա արվում է հետևյալ կոդով շարունակական օղակի համար
const uint8_t հաճախականություն PROGMEM = {… տվյալներ}; const uint8_t երկարություն PROGMEM = {… տվյալներ}; const uint8_t հետաձգում PROGMEM = {… տվյալներ};… մինչդեռ (1) {համար (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& հաճախականություն [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); քնել (pgm_read_byte (& երկարությունը [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // կանգառի ժամանակաչափ TCCR0B = 0; քնել (pgm_read_word (& delay [cnt])); // գործարկման ժամանակաչափ TCCR0B | = (1 << CS01); // clk/8 նախնական սանդղակ}}Հաճախականությունների/երկարությունների/հետաձգման զանգվածներում կան 156 տարրեր, այս հանգույցն անցնում է դրանք: PB3 և PB4 կապանքները յուրաքանչյուրը փոխված է, այնպես որ դրանք կփոխարինվեն յուրաքանչյուր նոտայի հետ: Առաջին քունն այն նոտայի երկարությունն է, որը մենք նվագում ենք OCR0A գրանցամատյանը համապատասխան արժեքին դնելուց հետո: Երկրորդ քունը դադար է մեր նվագած նոտաների միջև: Վերը նշված կոդի մեջ կարող եք նկատել երկու գործառույթներ ՝ Հաճախականության/ուշացման/երկարության բոլոր տվյալների համար օգտագործվող զանգվածները շատ ավելի մեծ են, քան 64 բայթ, և, հետևաբար, դրանք չեն կարող բեռնվել հիշողության մեջ: Օգտագործելով PROGMEM avr-gcc հատուկ հրահանգը, այս մեծ տվյալների զանգվածները կանխվում են հիշողության մեջ բեռնվելուց, փոխարենը դրանք կարդացվում են ֆլեշից:
Քայլ 5: Թողնել Մարիոմանին ազատության մեջ
Վերոնշյալ տեսանյութը ցույց է տալիս Մարիոմանին գործողության մեջ: Միջին էներգիայի սպառումը մոտ 25 մԱ է, այնպես որ նա կարող է թարթել և աղմուկ բարձրացնել մոտ 10 ժամ ՝ լիթիումի մետաղադրամը լիցքաթափելուց առաջ: Նրան միացնելու և անջատելու միակ միջոցը մետաղադրամների մարտկոցը հանելն է, նյութերում նշված ամուրը ՝ լավ հարմար է դրա համար: Անջատիչը կարող է ավելացվել, բայց այն պարզ պահելու համար ասելիք կա:
Խորհուրդ ենք տալիս:
Նորոգեք Creative Tactic3D Rage անլար ականջակալը (կապույտ թարթում, զուգավորում չկա, մարտկոցի փոխարինում). 11 քայլ
Վերանորոգեք Creative Tactic3D Rage անլար ականջակալը (կապույտ թարթում, առանց զուգավորում, մարտկոցի փոխարինում). Նկարներում այս ձեռնարկը Creative ականջակալներ ունեցողների համար է, որոնք կորցրել են USB հաղորդիչի հետ զուգակցումը և նորից զուգավորվելը չի աշխատում, քանի որ ականջակալները դանդաղորեն թարթում են կապույտ: և այլևս չարձագանքել կոճակներին: Այս վիճակում դուք ի վիճակի չեք
Arduino: Երգում ենք ծննդյան տուփ նվերների համար. 14 քայլ
Arduino. Singing Birthday Box for Presents: Happyնունդդ շնորհավոր երգ երգելու և LED լուսավորելու ունակությամբ
Blink Caos: Mapa Logístico Պատահական թարթում ՝ 5 քայլ
Blink Caos: Con el mapa log í stico, se enciende y apaga un led de forma aleatoria. Este puede servir simplemente de ejemplo de como a
Կառավարման լուսադիոդի թարթում պոտենցիոմետրով և OLED էկրանով ՝ 6 քայլ
Կառավարեք լուսադիոդի թարթումը պոտենցիոմետրով և OLED էկրանով. Այս ձեռնարկում մենք կսովորենք, թե ինչպես կառավարել լուսադիոդի թարթումը պոտենցիոմետրով և ցուցադրել զարկերակի հաճախականության արժեքը OLED էկրանին: Դիտեք ցուցադրական տեսանյութ
Երգում է Arduino շչելկուն. 8 քայլ
Երգում է Arduino Շչելկուն. Դա հեշտությամբ կարելի է անել մինչև 3 ժամվա ընթացքում, որպեսզի մուրացկանը մասերի կույտից անցնի երգող մշկընկույզ: Այս նախագծի համար ձեզ հարկավոր կլինի շարժական բերանով նախատիպ, նախատիպ