Բովանդակություն:

Microcontroller Fabric Tone Generator C- կոդով `8 քայլ (նկարներով)
Microcontroller Fabric Tone Generator C- կոդով `8 քայլ (նկարներով)

Video: Microcontroller Fabric Tone Generator C- կոդով `8 քայլ (նկարներով)

Video: Microcontroller Fabric Tone Generator C- կոդով `8 քայլ (նկարներով)
Video: Архитектура ЭВМ | Основы Операционных Систем 03 | Ассемблер 2024, Հուլիսի
Anonim
Microcontroller Fabric Tone Generator C- կոդով
Microcontroller Fabric Tone Generator C- կոդով

Անցյալ տարվա հոկտեմբերի վերջին carmissu- ի հրահանգավորվող օգտվողներն ինձ հաղորդագրություն ուղարկեցին, երբ տեսա իմ տուփի սինթեզը: Նրա ուղերձից. Ես դասավանդում եմ երաժշտություն տարրական դպրոցում: Մենք շատ ձայնագրիչ երաժշտություն ենք նվագում: այսինքն երեխաները նվագում են փոքրիկ ֆլեյտա …… Ես ունեմ մի քանի հատուկ կարիքներ ունեցող երեխաներ, ովքեր կարող են օգտագործել այս սև պաստառների տախտակները ՝ շրջանակներով, որոնց վրա գրված է գրառման անվանումը: Այս ուսանողները մղում են նոտաներով շրջանները, միևնույն ժամանակ մնացած ուսանողները երգ են նվագում….. Հատուկ կարիքներով երեխաների մեծ մասը կարող է դա անել բավականին լավ և ժամանակին երաժշտության հետ: Այն, ինչին ես ձգտում եմ, շատ պարզ ձայնային գեներատոր կառուցելն է, որպեսզի այս երեխաները կարողանան խաղալ նույն բարձրությամբ, ինչ նրանք, ովքեր խաղում էին ուսանողների կողմից իրենց ձայնագրիչների վրա: Ես կլինեի ընդամենը մի քանի խաղադաշտ: Մտածեցի, որ կարող եմ ինչ -որ փոքր կոճակ ամրացնել նրանց կլոր շրջանակների ներքևին, որպեսզի երբ դրանք սեղմեն, ձայնը դուրս գա փոքր բարձրախոսից, այնքան բարձր, որ լսեն: Ունենալով մայր, որը ուսուցիչ է և սիրում է դպրոցը, ինչպե՞ս կարող էի դիմադրել: Uthիշտն ասած, ես չէի կարող: Սա բավականին նախագծի տարեգրություն է և հրահանգներ, թե ինչպես կառուցել ձեր սեփականը:

Քայլ 1. Սկիզբը կամ ինչու չկարողացա մնալ անալոգային

Սկիզբը կամ ինչու չկարողացա մնալ անալոգային
Սկիզբը կամ ինչու չկարողացա մնալ անալոգային

Լավ բաները սկսվում են հաջորդ էջից: Եթե ցանկանում եք իմանալ, թե ինչպես ես վերջացրեցի իմ կատարած մասերի օգտագործմամբ, կարդացեք: verշմարիտ ժմչփը. Նախագծին մի փոքր մտածելուց հետո ես անմիջապես մտածեցի պիեզո տոնային գեներատորի մասին `իմ անտառային ընդմիջումներ III գրքից: Թվում էր, թե դա լավ ճանապարհ է, դա պարզապես պիեզո է, 741 IC և մի քանի պասիվ բաղադրիչներ: Մեծ գործ չկա, ճիշտ է: Դե, այն ունի 2 խնդիր, 1) երբ անջատիչը սեղմում եք, հնարավոր է փոխել քայլը 2) կարգաբերելը գրեթե անհնար է: Առաջինը, ամենայն հավանականությամբ, կարող էր հաղթահարվել որոշ հեռացման տեխնոլոգիայով, չնայած ես չգիտեի, թե ինչպես դա անել առանց մեկ այլ հաշվիչ ավելացնելու: Դա կարող է լինել նաև պիեզո օգտագործելու խնդիր: Երկրորդ հարցը պարզապես անհանգիստ դարձավ, երբ սկսեցիք փորձել հարվածել որոշակի դաշտ: Ինչ վերաբերում է 555 -ին: Տվյալների թերթիկը ցույց է տալիս դիմադրության և կոնդենսատորների վրա հիմնված ժամանակի ձգման գործառույթը: Ինչը հիանալի է, մինչև չսկսեք մուտքագրել իրական աշխարհի մասերի իրական արժեքները, այդ ժամանակ դուք կգտնեք, որ 440 Հց սկիպիդարին հարվածելը մի փոքր դժվարանում է: Դուք կարող եք օգտագործել զարդարված կաթսաները `այն կարգավորելու համար, բայց ժամանակի ընթացքում նրանք հակված են շարժվել: Անընդհատ կարգավորելով գործիքը ՝ կազմված մասերի արժեքի և քանակի կտրուկ աճի վրա, և կինս, որը կոճակը սեղմելիս փոխում էր սկիպիդարը, այս նախագծի համար 555-ին սպանում էր: op-amps, քանի դեռ իմ ծնվելը: Որքա՞ն դժվար կարող էր լինել իսկապես պարզը ՝ քիչ մասերով և հատուկ նշումներով: Ավելի դժվար, քան կարծում էի: Այն նախագծերի մեծ մասը չափազանց բարդ են այս նախագծի համար: Synth դիզայներները դուրս են գալիս կատարյալ ալիքի ձևից/տոնից: Սա ուղղակիորեն հակասում է մի նախագծի, որը ենթադրվում է, որ բավական էժան կլինի դպրոցի կամ ուսուցիչների բյուջեների համար: Ստեղնաշար կառուցելը բավականին հեշտ է, դա պարզապես դիմադրիչների և հզորության փունջ է կամ դիոդների և հզորության մի փունջ: Դա մնացած սխեմաների դիզայնն է և անհատական համակարգիչների արժեքը, որոնք սկսում են վերահսկողությունից դուրս գալ ինչ -որ մեկի համար էլեկտրոնիկայի սկզբնական մակարդակում: Նախագծի վերաիմաստավորում. Այսպիսով, նախագիծը վերաիմաստավորվեց դեռևս իրականում գործի անցնելուց առաջ: Ինձ պետք էր մի բան, որը կարող էր ժամանակին փոխել կոճակը սեղմելով բարձրախոսի քորոցը: Ես չէի ուզում, որ ստիպված լինեմ նախագծել և գնել PCB: Սա պետք է հնարավորինս քիչ բաղադրիչ օգտագործեր և հավաքվեր որպես սկսնակների հավաքածու: Ամբողջ ժամանակ դա նայում էր դեմքիս: Duh !! Միկրոկոնտրոլեր: Միկրոկոնտրոլեր. Այսպիսով, ինչպես Deամանակակից սարքերի Bare Bones Arduino հավաքածուն, այնպես էլ Evil Mad Scientist Simple Target Board- ը գնելուց և թույլ տալով, որ նրանք ամիսներ շարունակ նստեն իմ գրասեղանին, չօգտագործված, ես ունեի կատարյալ ներածական նախագիծ: Ես սկսեցի նայել այն ժամանակին, որն անհրաժեշտ է երկուսն էլ համատեղելու համար ՝ ուսուցման կորը ծածկագրին, արժեքին, անհրաժեշտ լրացուցիչ մասերին և այն դարձնել այն, ինչ ուզում եմ և տեղավորվեց թիրախային տախտակի վրա: Արժեքը բավականին հավասար էր ՝ $ 15 գումարած $ 20 FTDI մալուխ Arduino- ի համար, $ 12 գումարած $ 22 USBtinyISP ծրագրավորող: Ես արդեն գիտեի C ++ - ը այն փոքրիկ քոլեջից, որին կարող էի դիմանալ և C- ն միկրոկառավարիչների համար այդքան էլ վատ չէր լինի, մինչդեռ լույսը թարթելուց բացի, որպեսզի համոզվեի, որ իմ հավաքածուն ճիշտ եմ հավաքել, ես Arduino- ի փորձ չունեի: Երկուսն էլ կարող էին տեղադրվել: Դա բավականին մեծ հարված էր, ուստի ես որոշեցի երկուսի ավելի քիչ մասերը `թիրախային տախտակը:

Քայլ 2. Ինչ Ձեզ անհրաժեշտ է Rev 1

Այն, ինչ ձեզ հարկավոր է Rev 1
Այն, ինչ ձեզ հարկավոր է Rev 1

Մասեր CostUSBtinyISP AVR ծրագրավորողի հավաքածու (USB SpokePOV Dongle) v2.0 $ 22.00 http Բարձրախոս (8 ohm Mini) 2.79 $ $ 2.79 $ 5) 3,49 դոլար (4 փաթեթ) https://www.radioshack.com/product/index.jsp?productId=2062539 AAA «Մարտկոցի կրող 1.79 դոլար» https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini Slide Switch (ըստ ցանկության հոսանքի անջատիչի համար) 2.69 $ (2 տուփ) https://www.radioshack.com/product/index.jsp?productId=2062490LED և ռեզիստոր (ըստ ցանկության, եթե ցանկանում եք հոսանքի լույս) $ պետք է լինի անվճար եթե նրանք պառկած են մետաղալարեր պետք է նաև պառկած լինեն Արծաթե զոդում (եթե դա երեխաների մոտ որևէ տեղ է գնում, հավանաբար չպետք է կապար օգտագործեք, ծնողները բավականին տարօրինակ են դառնում նման բաների համար;)) Ալկոհոլ քսել (նորից move flux) Եթե ցանկանում եք գումար խնայելու որոշ վայրեր, ապա պետք չէ մասեր ստանալ RadioShack- ից: Ես դա արեցի, քանի որ նրանք մոտ են և կանխատեսելի:

Քայլ 3. Համագումար Rev 1

Համագումար Rev 1
Համագումար Rev 1
Համագումար Rev 1
Համագումար Rev 1

Տեղադրեք ձեր մասերը, ինչպես ցույց է տրված: Համոզվեք, որ օգտագործեք ալկոհոլ և հոսքի խոզանակ, երբ ավարտեք, որպեսզի զերծ մնաք ցանկացած հոսքից: Սխեմատիկան ստորև նրանց համար է, ովքեր նախընտրում են այն: D1- ը և R1- ը կարող են լինել այն, ինչ ցանկանում եք, դա պարզապես հզորության լույս է: C1- ը պարզապես օգնելու է իշխանությունը մի փոքր ավելի հետևողական դարձնել: Ես օգտագործել եմ 10uF: Այս սխեմատիկան նույնն է վերջին տարբերակների համար, պարզապես փոխեք գործվածքների անջատիչների կոճակները: վերջին վերանայման ժամանակ ես անջատիչներ ավելացրեցի PC4- ին և PC5- ին կամ 27 և 28 կապում:

Քայլ 4: Ինչ է ձեզ հարկավոր Rev 2

Այն, ինչ ձեզ հարկավոր է Rev 2
Այն, ինչ ձեզ հարկավոր է Rev 2

Այսպիսով, դուք հիմնականում փոխում եք Radio Shack կոճակները ձեռագործ գործվածքների համար: Ձեզ անհրաժեշտ է `գործվածքների բազմակի գույներ, կամ մեկ գույն, եթե ցանկանում եք, որ յուրաքանչյուր նոտա նույն գույնի լինի: Գործվածքների ձեր ամենամոտ խանութի շղարշավոր հատվածը ամենալավ տեղն է սա էժան ձեռք բերելու համար: Quilting եռամսյակներ են $ 1.50, եւ դուք կարող եք ստանալ մի տոննա անջատիչներ մեկից: Հաղորդիչ հյուսվածք, ես առաջարկում եմ Flectron հյուսվածքը LessEMF- ից, դա 20 դոլար է 12 "x54" կտորի համար: Դուք կարող եք դրանք գնել շատ հյուսվածքների խանութներում էժան: JoAnn- ն ունի գործիք, իսկ 25 -ը ՝ 2 դոլարով: Դրա համար անհրաժեշտ կլինի մուրճ: Հաղորդալար, ես օգտագործել եմ 22AWG- ը, ես առաջարկում եմ ավելի փոքր, եթե այն ունեք: Միաձուլելով ՝ գունավոր և հաղորդիչ գործվածքը միասին կպչելու համար: Հարցրեք խանութից, և հավանաբար կարող եք այն գնել բակի մոտ: Սա, հավանաբար, լավ կաշխատի, չնայած ես առաջարկում եմ ինչ -որ մեկին հարցնել «atեծ», սկզբում ես իսկապես չամրացված իրեր էի օգտագործում, այնուհետև անցնում էի ավելի ամուր տրիկոտաժի: Ես առաջարկում եմ, որ դուք պարզապես փորձեք մի քանի տարբերակներ, մինչև չգտնեք, թե որն է ամենալավը: atերմային նեղացման խողովակները, սա ամբողջը շատ ավելի կառավարելի դարձրեց: ջերմությունը փոքրացնում է լարերը միասին, երբ դրանք անցնում են միմյանցից և դրանք շատ ավելի լավ կմնան:

Քայլ 5. Համագումար Rev 2

Համագումար Rev 2
Համագումար Rev 2
Համագումար Rev 2
Համագումար Rev 2
Համագումար Rev 2
Համագումար Rev 2

Տեղադրեք բազմագույն գործվածքը միմյանց վրա և կտրեք քառակուսի, այն պարտադիր չէ, որ կատարյալ լինի: Արդուկեք կտորը ՝ ցանկացած ծալք ստանալու համար, նորից շերտավորեք դրանք միմյանց վրա և համոզվեք, որ եզրերը համընկնում են: Կտրեք այն եզրերը, որոնք չեն: Կտրեք վերին և ստորին կլորները ՝ ձախ և աջ կողմերն ուղիղ թողնելով: Դուք կարելուց հետո անջատիչը կշրջեք, այնպես որ կլորացված կողմերը չափազանց կլոր մի արեք և թողեք բավականաչափ բարձրություն հարթ կողմերում, որպեսզի ավարտը հեշտությամբ մղվի անջատիչն ավարտելուց հետո: Կլորացրեք առաջին և վերջին անջատիչի հարթ կողմը: Գլուխը դրեք ձեր կարի մեքենայի վրա և երկու պտույտ դրեք միասին, որպեսզի լավ կողմը կանգնի միմյանց վրա և կարեք հարթ մասերի կարը: Մեկ անգամ կոճակների գագաթներն են կարել, հաղորդիչ կտորից կտրել քառակուսիներ և միացնել մի կողմը: Կտրեք մետաղալարը երկարությամբ և շերտավորեք մի ծայրը: ամրացրեք մետաղալարերը ակնոցներից մեկի շուրջը: (զոդը, ամենայն հավանականությամբ, կպչուն չի լինի ակնակապակին): Կտրեք մի փոքր կտոր կտորի մեջ մի անկյունում և մուրճով ամրացրեք կոպը `կտորն ու մետաղալարը ամրացնելու համար: հեռացրեք հենարանը միաձուլումից և միացրեք հաղորդիչ գործվածքը գունավոր կտորի հետևի մասում: Կրկնեք բոլոր անջատիչների համար: Ամեն ինչ ավելի դյուրին դարձնելու համար կարող եք լարերը փոքր -ինչ փոքրացնել միմյանց հետ, երբ մեկ մետաղալարն անցնում է հաջորդ անջատիչի մետաղալարով: Ստացեք կամ գործվածքների կտոր պատրաստեք անջատիչի հավաքածուի երկարությամբ և կտրեք հաղորդիչ հյուսվածքի ժապավենը դրա երկարությամբ: Ի տարբերություն գունավոր անջատիչների, սա մեկ երկար կտոր է: Սա կլինի այն, ինչ կոճակները դիպչում են կապ հաստատելու համար: Կտրեք մի փոքր ճեղք և մի մետաղալար ամրացրեք դրա վրա, ինչպես գունավոր անջատիչ գագաթները: Միացրեք այն ներքևի կտորի հետևի մասում: Կարել վերևը և ներքևը ՝ դեպի դուրս ուղղված հաղորդիչ գործվածքով, բակի փայտով կարելուց հետո հավաքածուն շրջել: Կտրեք մի քանի փոքր անցքեր ծեծի մեջ, ես ստացա փայտիկ: մի շրջան, ապա պարզապես հանեք փայտիկը և կտրեք այն: Կտրեք դրանք ձևի մեջ և տեղադրեք դրանք անջատիչների մեջ: Սա այն է, ինչ պահում է հաղորդիչ հյուսվածքը: Հնարավոր է, որ ավելի հեշտ լինի դաջվածքը տեղադրել, երբ անջատիչները շրջում եք դրա փոխարեն: Այն նյութերը, որոնք ես օգտագործում էի, բավականին վատ էին պատռվում, երբ այն մտցնում էի, և ես ստիպված էի տարբեր ծեծեր ստանալ: Վերջապես լարերը միացրեք թիրախային տախտակին, և ամեն ինչ պատրաստ է: Երկար ներքևի շերտը մանրացված կլինի:

Քայլ 6: Ի՞նչ է ձեզ հարկավոր Rev 3

Այն, ինչ ձեզ հարկավոր է Rev 3
Այն, ինչ ձեզ հարկավոր է Rev 3

Rev 3 -ում ես անջատիչները դարձրեցի անկախ լարերից: Սա խնայեց մի տոննա ժամանակ: Ինձ նաև շատ ավելի է դուր գալիս պատրաստի արդյունքի տեսքը: Այսպիսով, ահա ձեզ անհրաժեշտ նոր մասերը ՝ Snaps, Just goted from JoAnn's: Նրանք եկան տեղադրման գործիքով, որը վատ չէ 7 դոլարով: Ես փոխարենը կառաջարկեի տափակաբերանոցի գործիքներից մեկը, քանի որ ես ստիպված էի իմ գործիքը հեռացնել `մեջտեղում ամրակները տեղադրելու համար: Կարելը լավ այլընտրանք կլիներ, թեև դրանց կպչելը ավելի երկար է տևում: Հաղորդիչ թել, Spark Fun- ն ունի իրեր, որոնք կարող են տեղավորվել ձեր կարի մեքենայում: Ես ստիպված էի իսկապես դանդաղ քայլել իմ մեքենայի մեջ, հակառակ դեպքում շարանը կփչանա: Ձեր վազքը կարող է տարբեր լինել

Քայլ 7: Համագումար Rev 3

Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3
Համագումար Rev 3

Այս վերանայումը շատ ավելի լավն էր, քան նախորդը `մինչև կառուցման ժամանակը: Բացի այդ, շարժական անջատիչներ ունենալը մեկ անգամ չէ, որ փրկեց իմ ողջամտությունը: Սկսեք հիմքը դարձնելով: Դա ընդամենը մեկ շիկացած եռամսյակ է ՝ կիսով չափ ծալված: Վերևում դրեք ծեծի շերտ և կարեք ՝ թողնելով անցք այն շրջելու համար: Հրել իրը անցքի միջով, և դուք հիմնականում բարձի տիպ ունեք: Ես այն ծածկեցի, այնպես որ ավելի հեշտ էր աշխատել: Օգտագործեք պարզ թել և ընկճվեք: Այս մեկի վրա ես ադամանդներ պատրաստեցի, բայց գուցե հաջորդ անգամ վիշապին մեջք դնեմ կամ ինչ -որ զով բան: Հիմա, անջատիչներին: Ինձ դուր է գալիս այս դիզայնը, որովհետև դուք կարող եք ժամանակին պատրաստել դրանցից մի տոննա և պարզապես օգտագործել ձեր ուզածը: սկսեք ստվարաթղթի, թղթի կամ գործվածքների կտորից և կտրեք տանձի ձևը դրանից: Օգտագործեք դա որպես ուղեցույց ՝ յուրաքանչյուր անջատիչի վերևի և ներքևի հատվածը կտրելու համար: Ես կտրում եմ մեկ գույն յուրաքանչյուր ներքևի համար և մեկ այլ գույն ՝ գագաթների համար, բայց դուք կարող եք լինել ստեղծագործ և անել այն, ինչ ցանկանում եք: Կտրեք ձեր ուղեցույցը շուշանի ձևի, որը հեշտությամբ տեղավորվում է անջատիչի ներսում: Երկարացրեք «փայտիկը», որպեսզի այն կարողանա փաթաթվել «տանձի» եզրին: Կտրեք ձևը միաձուլող և հաղորդիչ հյուսվածքից և միացրեք հաղորդիչ գործվածքի մի կողմը: Հեռացրեք թիկնոցը միաձուլման նյութից և միացրեք այն հյուսվածքի վերևին, որը կլինի ներքևի մասում և հյուսվածքի ներքևում, որը կլինի վերևում: Լրացուցիչ կտորը փաթաթեք վերևի շուրջը: Գնացեք դեպի ձեր կարի մեքենան և վերևի և ներքևի կտորի միջև անցքեր դրեք: Կարել հաղորդիչ հյուսվածքից դուրս և բաց թողնել անջատիչի «փայտիկ» հատվածը: Ես պարզեցի, որ հնարավոր է կարել վերին հաղորդիչ հյուսվածքը ներքևի մասում ՝ ստեղծելով կարճ: Ավելի լավ է չկարի հաղորդիչ հյուսվածքի միջով: Կցեք ամրացումներ և անջատիչը պատրաստ է: Ես ավելի հեշտ գտա օգտագործել արական սեղմիչը ներքևի/GND միացումների համար, իսկ էգը ՝ բոլոր գագաթների համար: Սա բոլոր անջատիչները փոխանակելի է դարձնում: Շրջանակը. Կլորների կտրման բանը այն է, որ դուք ունեք շատ լրացուցիչ բիթեր: Ես վերցրեցի իմ մնացորդները, միաձուլման մեծ կտորները հասցրեցի հաղորդիչ գործվածքների մեծ կտորների և դրանցով կտրեցի այն փոքր ուղղանկյունները, որոնք ես օգտագործել էի որպես բարձիկներ: Մոտավորապես տեղադրեք ձեր անջատիչները և միացրեք բարձիկները հիմքին այնքան տեղով, որ կարողանաք դրանց համար գիծ կարել և արագ բռնել: Կարի մեքենայի ոտքը, որը ես օգտագործում էի, բարությամբ չէր վերաբերվում լուսանկարին, ուստի դա մտքում պահեք և որոշ տեղ տվեք ինքներդ ձեզ: Քանի որ ես ձեռք բերեցի հաղորդիչ թել, որը կարող էր մտնել իմ կարի մեքենայի մեջ, ես պարզապես կարեցի մի գիծ բարձիկից պահոց և հետև: Ես ստիպված էի դանդաղ գնալ, հակառակ դեպքում թելը կփչանա, բայց դա մի տոննայով ավելի արագ էր, քան ձեռքով կարելը: Նաև բոբինի և ասեղի վրա հաղորդիչ թելով ես իսկապես լավ ամուր կապ ստացա: Իրերը խելագարի պես քայքայվում են, բայց մի փոքր արհեստական սոսինձ կամ Էլմերսը հենց դա է մաքրում: Փորձեք տողերը միմյանցից լավ հեռու պահել, և որևէ խնդիր չպետք է ունենաք: Վերջնական հավաքում. Կպցրեք ձեր բոլոր անջատիչներին, միացրեք տախտակը, բեռնեք կոդը և ավարտված եք: Ես մետաղալարով տախտակից հասնում էի բարձիկ, իսկ հետո պարզապես ձեռքով կարում էի մետաղալարը հիմքին: Հաջորդ տարբերակի համար ես տախտակը կտեղադրեմ պլաստմասե տուփի մեջ, ամրակներով, որպեսզի այն ամրացնեմ հիմքին, որպեսզի անգործուն մատները չկտրեն այն:

Քայլ 8: Կոդ

Կոդ
Կոդ

Եթե նախկինում երբևէ չիպ չեք ծրագրավորել, սա մի փոքր սարսափելի խնդիր է: Դա չի օգնում, որ գործիքները շերտավոր են, և ժամանակի մեծ մասը պետք է մի քանի անգամ կատարել նույն գործողությունը: Երկու լավագույն ռեսուրսները, որոնք ես գտել եմ ՝ հասկանալու, թե ինչ է կատարվում, USBtinyISP- ի էջն է ՝ https://www.ladyada.net/make/usbtinyisp/ և աղմուկի խաղալիքի ծրագրավորման վթարի դասընթացը, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Սրանք պետք է կարողանան սկսել ձեզ:

Շատերն են սիրում Arduino- ն այս կոդավորման համար, և դրա օգտագործման մեջ ոչ մի վատ բան չկա, բացառությամբ այն բանի, որ ես զգում եմ, որ այն շատ փչոց է ավելացնում սովորաբար պարզ ծրագրին: Բացի այդ, ես գիտեի C- ն և չեմ ճանաչում Արդուինոյին: Միգուցե մի օր, եթե ժամանակ լինի::) Կոդ ՝ {{{ # #ներառել // Օգտագործեք քորոց ՝ SPK /// Typedefs ////////// typedef անստորագիր char u8; int հիմնական (անվավեր) {u8 btnState0; u8 btn Պետություն 1; u8 btn Պետություն 2; u8 btn Պետություն 3; u8 btn Պետություն 4; u8 btn Պետություն 5; u8 btn Պետություն 6; DDRB = (1 << DDB6); // Սահմանեք SPK ելքային PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Set Button High PORTC = (1 << PC4) | (1 << PC6]; TCCR2B = (1 << CS21); // Կարգավորել ժամաչափը (1) {btnState0 = ~ PINC & (1 << PC5); btnState1 = IN PINC & (1 << PC4); btnState2 = ~ PIND & (1 << PD0); btnState3 = ~ PIND & (1 << PD1); btnState4 = ~ PIND & (1 << PD2); btnState5 = ~ PIND & (1 << PD3); btnState6 = ~ PIND & (1 << PD4); if (btnState0) {if (TCNT2> = 190) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Շրջել SPK Pin TCNT2 = 0; }}}}}}} Որտեղի՞ց են խաղադաշտերը: Մի փոքր մաթեմատիկա էր պետք: Atmega 168- ի ժամաչափի ժամացույցը աշխատում է 1 ՄՀց հաճախականությամբ: Դա չափազանց արագ է աուդիոյի համար, այնպես որ մենք պետք է օգտագործենք նախնական /8 -ը: Հետո, քանի որ մենք պետք է ելքային քորոցը շրջենք բարձր, ապա ցածր `1 ցիկլ կազմելու համար, մենք պետք է պատասխանը բաժանենք 2 -ի, որպեսզի ստանանք ճիշտ սկիպիդար: Բանաձևը այսպիսին է. Սկիպիդար ՝ մուտքագրելու համար = (1000000/8)/(Թիրախային հաճախականությունը*2) A- ի համար (440) սա 125000/880 = 142.045 կամ 142 է մեր նպատակների համար, քանի որ արժեքը պետք է լինի ամբողջ թիվ. Գրառումների նպատակային հաճախականությունները կարելի է գտնել գրեթե ցանկացած վայրում առցանց և ընդհանրապես նույնն են: Ես դեռ ուզում եմ մի դեպք ավելացնել, եթե ոչ մի փունջ օգտագործել և օգտագործել PWM- ը `ավելի լավ վերահսկելու բարձրախոսի ձայնը և բարձրությունը, բայց առայժմ սա աշխատում է:

Խորհուրդ ենք տալիս: