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

Թվայնացրեք երգը Արդուինոյի հետ. 6 քայլ
Թվայնացրեք երգը Արդուինոյի հետ. 6 քայլ

Video: Թվայնացրեք երգը Արդուինոյի հետ. 6 քայլ

Video: Թվայնացրեք երգը Արդուինոյի հետ. 6 քայլ
Video: TASK AFTER TASK.... FIGHTS AFTER FIGHTS in Titanfall 2 - Part 4 2024, Հուլիսի
Anonim
Թվայնացրեք երգը Արդուինոյի հետ
Թվայնացրեք երգը Արդուինոյի հետ

Ես ուզում էի ստեղծել մի նախագիծ, որը միավորում էր իմ ամենասիրած երկու առարկաները ՝ գիտություն և երաժշտություն: Ես մտածեցի այս երկու տիրույթների համատեղման բոլոր եղանակների մասին և մտածեցի, որ հետաքրքիր կլինի Arduino- ի մորթե Elise պիես պատրաստել, երբ նոտայի սկիպիդարը ցուցադրում եմ Հերցում: Հիմա եկեք սկսենք կառուցել:

Ձեզ կպահանջվի մեկ Arduino Uno կամ Mega, շատ ցատկող մալուխներ, Piezo ազդանշան, տախտակ, 16*2 LCD էկրան ՝ բոլոր մաքրիչով ամրակներով տեղում և 10k Potentiometer (դուք կարող եք լսել, որ դրանք կոչվում են նաև չափիչ սարքեր)): Ավելի լավ է այս բոլոր պաշարները հավաքել նախքան շինարարությունը սկսելը:

Քայլ 1. Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների `ուշացման արժեքների

Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների. Ուշացման արժեքներ
Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների. Ուշացման արժեքներ

Գոյություն ունի նոտայից միավորից թվային տառադարձման թվային համարժեքի երկու քայլ: Նախ, մենք պետք է գրենք այն ժամանակը, երբ գրառումը տևում է միլիվայրկյաններով: Այս առաջադրանքի համար ես օգտագործել եմ գծապատկեր, որը գտնվել է առցանց: Ելնելով նրանից, թե արդյոք նոտան կիսով չափ էր, քառորդ նոտա, ութերորդ նոտա և այլն, ես նոտայի երկարությունը փոխանցեցի միլիվայրկյանների: Այս համարները կարող եք տեսնել իմ ծածկագրում որպես ուշացում (); գործառույթը և փակագծերում եղած թիվը կլինի ուշացման արժեքը միլիվայրկյաններում, որը մենք որոշեցինք այս քայլում:

Քայլ 2. Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների. Հերց արժեքներ

Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների. Հերցի արժեքներ
Երաժշտական ստեղծագործությունը փոխակերպեք թվային նշումների. Հերցի արժեքներ

Նախքան այս քայլը սկսելը, թույլ տվեք որոշ տեխնիկական տերմիններ սահմանել: Նոտայի «արժեքը» կարող է փոխարինելիորեն օգտագործվել «բարձրություն», «արժեք» և «նշում» բառերի հետ: Այժմ, դուք պետք է կարդաք երգի յուրաքանչյուր նոտա պարտիտուրայից: Այնուհետև ստիպված կլինեք յուրաքանչյուր նոտա թարգմանել Հերց ՝ օգտագործելով երաժշտություն Հերցի սեղանին, որը հեշտությամբ կարող եք գտնել առցանց: Մի բան պետք է հիշել, որ միջին C- ն սեղանի վրա նշված է որպես C4, իսկ օկտավայից բարձր C5 և այլն: Երբ այս նշումները բոլորը տառադարձվեն Հերցի վրա, դուք արժեքները կդնեք գործառույթի տոնով (x, y, z); որտեղ X- ը փին համարն է կամ const int- ը, փոփոխականների սահմանման եղանակ, որը ես ավելի ուշ կբացատրեմ: Y- ը կլինի Հերցի արժեքը, որը դուք պարզապես արտագրել եք, իսկ Z- ը կլինի նոտայի տևողությունը միլիվայրկյաններով ՝ կլորացված մինչև հարյուրերորդ հարյուրերորդական: Հետաձգում (); արժեքները կլինեն նոտայի տևողությունը: Այժմ, եկեք նախագծենք այն շրջանը, որը կարող է նվագել երաժշտությունը:

Քայլ 3: Շղթայի ձևավորում

Շղթայի ձևավորում
Շղթայի ձևավորում

Այժմ, երբ մենք բոլոր նշումները թարգմանել ենք թվային արժեքների, որոնք համակարգիչը կարող է հասկանալ, ժամանակն է կառուցել շրջանը: Սկսեք տախտակ վերցնելուց և LCD էկրանը տեղադրել առաջին շարասյունով (GND) տողում 14. Տեղադրեք ազդանշանը ցանկացած վայրում, որտեղ ցանկանում եք, և դրա կողքին տեղադրեք պոտենցիոմետր: Նպատակն է ամեն ինչ շարել, նվազագույնի հասցնել լարերի խառնաշփոթությունը: Տեղադրեք Arduino- ն սեղանի կողքին և միացրեք 5v կապը հացահատիկի դրական ռելսին, իսկ աղացած քորոցը `բացասական: Այժմ մենք պատրաստ ենք թռիչքները միացնել Arduino- ի և բաղադրիչների միջև:

Այժմ, եկեք խոսենք LCD- ի կապում և ինչպես դրանք միացնել:

GND- ը նշանակում է հող, սա ուղիղ հոսանքի բացասական մետաղալարն է: Հաղորդալար GND- ը դեպի տախտակի բացասական երկաթուղին:

VCC- ն նշանակում է Լարման ընդհանուր կոլեկտորում, և այստեղ դուք միացնում եք ձեր 5 վոլտ էներգիայի աղբյուրը (դրական էներգիայի ռելս):

VO- ն նշանակում է հակադրություն, միացրեք այն պոտենցիոմետրի միջին քորոցին: Միացրեք պոտենցիոմետրի ձախ քորոցը դրական հզորության ռելսին, իսկ աջը ՝ գետնի հոսանքի ռելսին:

RS- ը նշանակում է Register Select, և դա օգտագործվում է Arduino- ի կողմից ՝ էկրանին տեղեկացնելու համար, թե որտեղ պետք է պահել տվյալները: Միացրեք այս կապը Arduino- ի 12 -րդ կապին:

RW- ը նշանակում է Read/Write pin, որը Arduino- ն օգտագործում է ՝ ստուգելու համար, թե արդյոք էկրանը ցուցադրու՞մ է այն, ինչ ծրագրել եք ցուցադրել: Միացրեք այս քորոցը բացօթյա սեղանի բացասական ռելսին:

E- ն նշանակում է Միացնել, որը LCD- ին ասում է, թե որ պիքսելներն է միացնել (միացնել) կամ անջատել (անջատել): Միացրեք այս կապը Arduino- ի 11 -րդ կապին:

D4, D5, D6 և D7- ը ցուցադրման կապում են, որոնք վերահսկում են ցուցադրվող տառերն ու տառերը: Միացրեք դրանք համապատասխանաբար Arduino- ի 5, 4, 3 և 2 կապումներին:

Pin A- ն, երբեմն պիտակավորված LED- ն, լուսադիոդային լուսադիոդային անոդն է: Միացրեք սա դրական էներգիայի ռելսին մետաղալարով կամ 220 օմ դիմադրիչով: Ռեզիստորն ավելի լավ է ավելի երկար օգտագործելու համար, քանի որ այն խնայում է LCD- ը, բայց եթե սարքը չի օգտագործվելու օր ու գիշեր, ապա ձեզ դիմադրության կարիք չկա:

Pin K- ը, երբեմն նաև (շփոթեցնող) պիտակավորված LED- ն, LED լուսադիոդային քորոցն է: Միացրեք սա ստորգետնյա էլեկտրակայանին:

Քայլ 4: Կոդի վերբեռնում. Ինչպես անել

Միացրեք ձեր Arduino- ն ձեր համակարգչի USB- ին: Վերբեռնեք հետևյալ կոդը ՝ օգտագործելով Arduino IDE ծրագրավորողը:

#ներառում

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

void setup () {

// կարգավորել LCD- ի սյունակների և տողերի քանակը. lcd.begin (16, 2); // Տպել հաղորդագրություն LCD- ին: lcd.print («Hertz Pitch:!»); ուշացում (1000); void loop () {// նվագարկել e4 հետաձգում (600); // դադար 0,6 վայրկյան տոնով (10, 329.63, 300); // նվագարկել e ազդանշանին ազդանշան 10 -ում, վերջին.3 վայրկյան lcd.print (" 329.63 "); // ցուցադրել հաղորդագրություն LCD- ում" 329.63"

ուշացում (350); //.35 վայրկյան հետաձգում

lcd.clear (); // մաքրել LCD և զրոյացնել հաջորդ հաղորդագրության համար // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (350); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (350); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (350); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (350); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.66, 300); lcd.print ("293.66"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // նվագարկել d3 տոնով (10, 146.83, 300); lcd.print ("146.63"); ուշացում (350); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); lcd.print ("174.61"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 300); lcd.print ("220"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 900); lcd.print ("246.94"); ուշացում (1000); lcd. հստակ ();

// խաղալ e3

տոնայնություն (10, 164.81, 300); lcd.print ("164.81"); ուշացում (400); lcd. հստակ (); // նվագել g3# տոնով (10, 207.65, 300); lcd.print ("207.65"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 900); lcd.print ("261.63"); ուշացում (1000); lcd. հստակ (); // նվագել e տոնով (10, 164.81, 300); lcd.print ("164.81"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.66, 300); lcd.print ("293.66"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd. հստակ (); // նվագել d3 տոնով (10, 146.83, 300); lcd.print ("146.83"); ուշացում (400); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); // eeprom 20–6 yesno, flash 65–0 noyes lcd.print («174.61»); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 300); lcd.print ("220.0"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 900); lcd.print ("246.94"); ուշացում (1000); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); lcd.print ("174.61"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.66, 300); lcd.print ("293.66"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 900); lcd.print ("329.63"); ուշացում (1000); lcd. հստակ (); // նվագել g3 տոնով (10, 196, 300); lcd.print ("196.0"); ուշացում (400); lcd. հստակ (); // նվագել f4 տոնով (10, 349.23, 300); lcd.print ("349.23"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.23, 300); lcd.print ("329.23"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.63, 900); lcd.print ("293.63"); ուշացում (1000); lcd. հստակ (); // նվագել e3 տոնով (10, 164.81, 300); lcd.print ("164.81"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.63, 300); lcd.print ("293.63"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 900); lcd.print ("261.63"); ուշացում (1000); lcd. հստակ (); // նվագել d3 տոնով (10, 146.83, 300); lcd.print ("146.83"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.63, 300); lcd.print ("293.63"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 900); lcd.print ("246.94"); ուշացում (1000); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (350); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (350); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (350); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (350); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.66, 300); lcd.print ("293.66"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd. հստակ (); // նվագել d3 տոնով (10, 146.83, 300); lcd.print ("146.83"); ուշացում (350); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); lcd.print ("174.61"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 300); lcd.print ("220.0"); ուշացում (400); // խաղալ b3 lcd.clear (); տոն (10, 246.94, 900); lcd.print ("246.94"); ուշացում (1000); lcd. հստակ (); // նվագել e3 տոնով (10, 164.81, 300); lcd.print ("164.81"); ուշացում (400); lcd. հստակ (); // նվագել g#3 տոնով (10, 207.65, 300); lcd.print ("207.65"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 900); lcd.print ("261.63"); ուշացում (1000); ուշացում (300); lcd. հստակ (); // նվագել e3 տոնով (10, 164.81, 300); lcd.print ("164.81"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագարկել d4# տոնով (10, 311.13, 300); lcd.print ("311.13"); ուշացում (400); lcd. հստակ (); // նվագել e4 տոնով (10, 329.63, 300); lcd.print ("329.63"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագարկել d4 տոնով (10, 293.66, 300); lcd.print ("293.66"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd. հստակ (); // նվագել d3 տոնով (10, 146.83, 300); lcd.print ("146.83"); ուշացում (400); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); lcd.print ("174.61"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 300); lcd.print ("220.0"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 900); lcd.print ("246.94"); ուշացում (1000); lcd. հստակ (); // նվագարկել f3 տոնով (10, 174.61, 300); lcd.print ("174.61"); ուշացում (400); lcd. հստակ (); // նվագել c4 տոնով (10, 261.63, 300); lcd.print ("261.63"); ուշացում (400); lcd. հստակ (); // նվագել b3 տոնով (10, 246.94, 300); lcd.print ("246.94"); ուշացում (400); lcd. հստակ (); // նվագել a3 տոնով (10, 220, 900); lcd.print ("220.0"); ուշացում (1000); lcd. հստակ (); }

Քայլ 5. Կոդի վերբեռնում. Ի՞նչ է նշանակում այդ ամենը:

Եկեք որոշ գործառույթներ սահմանենք անգլերենով, այնպես որ կարող եք հասկանալ ծածկագիրը:

տոնայնություն (x, y, z); = նվագել հնչերանգ y Hertz- ի ձայնով, ազդանշանի վրա ՝ x pin- ում, z միլիվայրկյաններով:

lcd.print («XYZ»); = տպեք հաղորդագրություն XYZ նիշերով LCD էկրանին: (օրինակ ՝ ցուցադրել Հերցի սկիպիդարը)

ուշացում (x); = դադար x միլիվայրկյան:

const int X = Y = սահմանել X հաստատուն փոփոխական Y- ի համար, և օգտագործել X- ը կամ Y- ը `սարքին առաջադրանքներ նշանակելու համար:

lcd. հստակ (); = մաքրել LCD էկրանը և վերականգնել նոր ցուցադրման համար

pinMode (X, OUTPUT); = սահմանել P X- ը ելքային ռեժիմի համար

Այս բոլոր գործառույթները հասկանալուց հետո կարող եք հեշտությամբ փոփոխականները փոխարինել այն երգերով, որոնք հավաքում եք երգ թարգմանելիս, այնուհետև կարող եք կոդավորել ձեր սեփական երգը:

Քայլ 6: Ավարտվեց !

Ավարտվեց !!!
Ավարտվեց !!!
Ավարտվեց !!!
Ավարտվեց !!!

Դուք կամ ունեք Arduino, որը խաղում է Fur Elise- ը և ցուցադրում է նոտայի արժեքները Հերցում, կամ դուք պատրաստել եք Arduino, որը նվագում է ձեր ընտրած երգի մեղեդին և ցուցադրում է տեքստ, որը ցանկանում էիք ցուցադրել: Շնորհակալություն այս ձեռնարկը այցելելու համար, և ես հույս ունեմ ձեզ, որ այս նախագիծը Arduino- ում է:

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