Բովանդակություն:
- Քայլ 1: onstուցադրման տեսանյութ
- Քայլ 2. Լույսի տվիչների մանրամասները
- Քայլ 3. HC-SR04 ուլտրաձայնային տվիչի մանրամասները
- Քայլ 4: The Aduino Circuit
- Քայլ 5: I/O ցուցակագրում
- Քայլ 6: Aduino ծածկագիրը
- Քայլ 7. MIDI հաղորդակցության հիմունքները
Video: EAL - Arduino MIDI վերահսկիչ ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Պատրաստված է Søren Østergaard Petersen- ի կողմից, OEAAM16EDA
Այս ձեռնարկը նկարագրում է arduino- ի վրա հիմնված MIDI վերահսկիչ: Սա դպրոցական նախագիծ է: Ձեռքի միջոցով կարող եք նվագել պարզ մեղեդիներ `MIDI միացման և միացված MIDI գործիքի միջոցով (կամ, ինչպես այս դեպքում` փափուկ համակարգչային ծրագրով աշխատող նոթատետր): Կարող եք նոտաներ նվագել C խոշոր մասշտաբով ՝ c-d-e-f-g-a-b-c: Որպեսզի կարողանաք MIDI վերահսկիչը միացնել նոթատետրին, ձեզ հարկավոր կլինի MIDI- ից USB ինտերֆեյս, ինչպես m-audio Uno- ն:
Քայլ 1: onstուցադրման տեսանյութ
Բարձրացրեք ձայնը և վայելեք:
Ինչպես է դա աշխատում:
MIDI վերահսկիչն օգտագործում է Arduino MEGA 2560 տախտակ: Երկու լույսի (LDR) սենսորներ, որոնք տեղադրված են 16 մմ էլեկտրական խողովակի մեջ, ստեղծում են կրկնակի տվիչների համակարգ և օգտագործվում են կայուն ձգան ստեղծելու համար ՝ առանց որևէ կեղծ կրկնակի հրահրման: Լապտերը ստեղծում է լույսի ճառագայթ, երբ ճառագայթը ընդհատվում է վերահսկիչով նվագարկող ձեռքով, ներքևի լույսի սենսորը զգում է բացակայող ճառագայթը, իսկ HC-SR04 ուլտրաձայնային տվիչը չափում է սենսորից մինչև ձեռք հեռավորությունը:
Չափվող հեռավորությունը օգտագործվում է Arduino ծրագրում `MIDI Note On հաղորդագրության և MIDI ինտերֆեյսի վրա փաթեթավորվող համապատասխան նշումի համարի արժեքի հաշվարկման և կարգավորման համար: MIDI ելքային ինտերֆեյսը օգտագործում է 74HC14 վեցանկյուն ինվերտոր և բավականին ստանդարտ միացում է: MIDI հաղորդակցությունն օգտագործում է serial1, ստանդարտ սերիական նավահանգիստը ՝ կարգաբերման համար:
Երբ ձեռքը շարժվում է ուղիղ դեպի վեր և հեռու լույսի ճառագայթից, վերին լուսային սենսորը կրկին զգում է լույսի ճառագայթը, և MIDI Note Off հաղորդագրությունը փաթեթավորված է և փոխանցվում է MIDI ելքի վրա:
Սենսորների միջև խաղային տարածքը մոտ 63 սմ է, իսկ MIDI վերահսկիչի ընդհանուր երկարությունը `մոտ 75 սմ:
Քայլ 2. Լույսի տվիչների մանրամասները
Երկու լուսային սենսորները տեղադրված են միմյանց վրա և ստեղծում են կրկնակի տվիչների համակարգ: Այն կանխում է կեղծ հրահրումը ծրագրաշարում ճիշտ օգտագործելիս: Լույսի յուրաքանչյուր ցուցիչ բաղկացած է 16 մմ ստանդարտ էլեկտրական խողովակի մեջ կառուցված լուսանկարների դիմադրության մոդուլից: Յուրաքանչյուր խողովակի մեջ տեղադրվում է անցք `սղոցով, և լուսանկարչական դիմադրության PCB- ն կարող է սեղմվել անցքի մեջ: Սենսորները կպչուն ժապավենով ամրացված են, ինչպես նաև ամրացված են փայտի մի ծայրին: Ոչ մի լույս չպետք է կարողանա հասնել սենսորներին հետևից: Լույսի տվիչները կառուցել են 10k ձգվող դիմադրիչներ:
Քայլ 3. HC-SR04 ուլտրաձայնային տվիչի մանրամասները
HC-SR04 ուլտրաձայնային տվիչը ամրագրված է MIDI վերահսկիչի մյուս ծայրում: Այստեղ նույնպես տեղադրված է պայծառ լապտեր, այն ստեղծում է անհրաժեշտ լույսի ճառագայթ:
Քայլ 4: The Aduino Circuit
MIDI ելքային շղթան հիմնականում ստանդարտ 74HC14 վեցանկյուն ինվերտոր է և մի քանի դիմադրողներ ՝ գումարած 5 փին DIN իգական միակցիչ: 74HC14 միացումն ապահովում է MIDI ելքը և միևնույն ժամանակ ապահովում է Arduino տախտակի պաշտպանության որոշ միջոցներ MIDI- ին միացված «իրական աշխարհից»: Լրացուցիչ գործնական հատկանիշը MIDI գործունեության LED- ն է, որը ազդանշան է տալիս տվյալների ուղարկման ժամանակ:
Ես օգտագործել եմ PCB- ի համապատասխան նախատիպը իմ սարքաշարի համար, քանի որ շատ խնդիրներ ունեի իմ տախտակի վրա վատ միացումների հետ: Սխեման պատրաստված է Fritzing- ում, բարձր լուծման pdf պատճենը կարելի է ներբեռնել ՝ սեղմելով ստորև բերված հղումը: Ես նախընտրում եմ օգտագործել համապատասխան սխեմատիկ ծրագիր, ինչպիսին է Kicad- ը, կարծում եմ, որ Fritzing- ը սահմանափակված է ամեն ինչով, բացի ամենապարզ փորձերից:
Օգտագործված նյութեր.
1 հատ Arduino MEGA 2560
2 հատ Լուսանկարիչ (LDR) ներկառուցված ձգվող դիմադրիչով (37 սենսորային հավաքածուից)
1 հատ HC-SR04 ուլտրաձայնային տվիչ
1 հատ 74HC14 վեցանկյուն ՝ շրջելով Schmitt ձգանը
2 հատ դիմադրություն 220 Օմ 0.25W
1 հատ դիմադրություն 1k Օմ 0.25W
1 հատ LED ցածր հոսանք 2 մԱ
1 հատ 100nF կերամիկական կոնդենսատոր (էլեկտրամատակարարման անջատման համար, անմիջապես 74HC14- ի հոսանքի կապում)
Breadboard կամ նախատիպ PCB
2 հատ 16 մմ էլեկտրական խողովակ, երկարությունը 65 մմ
Փայտ 1 հատ, երկարությունը ՝ 75 սմ
Սկոտչ
Լարերը
Քայլ 5: I/O ցուցակագրում
Քայլ 6: Aduino ծածկագիրը
Test_Midi6 ուրվագիծը օգտագործում է NewPing գրադարանը, որը դուք պետք է ներառեք ձեր Arduino ծրագրավորման միջավայրում ՝ HC-SC04 ուլտրաձայնային տվիչ օգտագործելու համար: Էսքիզը մեկնաբանվում է դանիերենով: Flowրագրի ընթացքը արտացոլված է MIDI վերահսկիչի հոսքագծի pdf- ում:
// 15-05-2017 տարբերակ ՝ test_Midi6
// SØren Østergaard Petesen // Arduino MEGA 2560 // Dette ծրագիրը օգտագործում է պարզ MIDI վերահսկիչ, որը կարող է օգտագործվել MIDI- ով, f.eks և softsynt համակարգչով: // MIDI controlleren kan sende toneanslag (նշում kommando- ի վրա) hhv. (նշեք kommando- ն) en oktav C-C, C dur skala- ի համար: // Der spilles med en "karate hånd" på et brædt // hvor sensorerne er monteret. MIDI kommandoerne- ն գործարկում է dobdelt LDR սենսորից, եթե այն գտնվում է սարքում, ինչպես նաև անջատում է սարքը (նշվում է), այնուհետև մենք պետք է որոշենք (նշումը անջատված է): // MIDI kommandoerne "note on" og "off off" består hver af 3 bytes someses på serial1 porten // uha det i hardware opbyggede MIDI interface. // Tonehøjden bestemmes vha ultralydssensor HC-SR04 #include // bibliotek til den anvendte ultralydssensor HC-SR04 #define TRIGGER_PIN 3 // Arduino pin til triger på ultrasonic sensor #define ECHO_PIN 2 // arduino pin pin սահմանել MAX_DISTANCE 100 // Առավելագույն դիմակայություն Ping #define Median 5 // Antal målinger der beregnes gennemsnit af for at få en sikker afstandsbestemmelse NewPing սոնար (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing օբյեկտի ստեղծում: int Senspin1 = 53; // Underste LDR1 føler int Senspin2 = 52; // teverste LDR2 føler byte MIDIByte2; // Variabel հայտարարություն MIDIByte2 bool klar_note_on = 1; // Variabel statement for klar_note_on, styrer afsendelse af note on kommando. Første kommando er en note on kommando bool klar_note_off = 0; // Variabel deklaration for klar_note_off, styrer afsendelse af note off kommando void setup () {pinMode (Senspin1, INPUT); // սենսորային մուտքի pinMode (Senspin2, INPUT); // s sensort տվիչի մուտքագրում Serial1.begin (31250); // Serial1 կապտուկներ մինչև MIDI kommunikation: 31250 bit/sekundt Serial.begin (9600); // սերիական մոնիտոր, մինչև փորձարկում} void loop () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - underte LDR bool Sensor2 = digitalRead (Senspin2); // læs LDR2 - øverste LDR if (Sensor1 && klar_note_on) // hvis LDR1 aktiveret og klar til note on {byte Note_Byte = Hent_tonehojde (); // Hent tone højde via ultralyds sensor MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Hent MidByte2, MIDI նշման համար, 0xFF er միջակայքից դուրս Send_Note_On (MIDIByte2); // kald Send_Note_On funktion klar_note_on = 0; // der skal kun sendes en note on kommando klar_note_off = 1; // næste kommando er note off} if (Sensor2 &&! Sensor1 && klar_note_off) // Hvis der skal sendes note off kommando gøres det her.. {Send_Note_Off (MIDIByte2); // ուղարկել գրառում kommando klar_note_off = 0; // der skal kun sendes en note off kommando} if (! Sensor1 &&! Sensor2) // her gøres klar til ny note on kommando, hånd er væk fra brædt {klar_note_on = 1; }} բայթ Hent_MidiByte2 (բայթ NoteByte) {// Denne funktion returnerer MIDI նշման համարը, որը պետք է օգտագործվի NoteByte բայթ MIDIB2; անջատիչ (NoteByte) // նրան սահմանում է MIDIByte2 արագությունը Note_Byte- ի միջոցով {case 0: {MIDIB2 = 0x3C; // տոննա 'C'} ընդմիջում; գործ 1: {MIDIB2 = 0x3E; // տոննա 'D'} ընդմիջում; գործ 2: {MIDIB2 = 0x40; // տոննա 'E'} ընդմիջում; դեպք 3: {MIDIB2 = 0x41; // տոննա 'F'} ընդմիջում; գործ 4: {MIDIB2 = 0x43; // տոննա 'G'} ընդմիջում; գործ 5: {MIDIB2 = 0x45; // տոննա 'A'} ընդմիջում; դեպք 6 ՝ {MIDIB2 = 0x47; // տոննա 'B'} ընդմիջում; դեպք 7 ՝ {MIDIB2 = 0x48; // տոննա 'C'} ընդմիջում; կանխադրված ՝ {MIDIB2 = 0xFF; // տիրույթից դուրս}} վերադարձ MIDIB2; // վերադարձող MIDI նշման համարը} բայթ Hent_tonehojde () {// Denne funktion henter resultatet at ultralydsmålingen unsigned int Tid_uS; // målt tid i uS բայթ Afstand; // beregnet afstand i cm բայթ resultat; // inddeling af spille område const float Omregningsfaktor = 58.3; // 2*(1/343 մ/վ)/100 = 58, 3uS/սմ, der ganges med 2 da tiden er summen af tiden frem og tilbage. Tid_uS = sonar.ping_median (միջին); // Ուղարկեք ping, եթե այն հետ է վերադարձվում iS, gennemsint af Median målinger Afstand = Tid_uS / Omregningsfaktor; // Omregn tid til afstand i սմ (0 = արտաքին հեռավորության տիրույթից) resultat = Afstand / 8; // Beregn resultat վերադարձի արդյունք; // Returner resultat} void Send_Note_On (byte tonenr) {// Denne ֆունկցիոնալ ուղարկողը նշում է kommando på MIDI interfacet const byte kommando = 0x90; // Նշում kommando på MIDI kanal 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // ուղարկել նշում kommando Serial1.write (tonenr); // ուղարկել համարի համարանիշ Serial1.write (volumen); // ուղարկել ծավալ (արագություն)} void Send_Note_Off (byte tonenr) {// Denne ֆունկցիոնալ ուղարկողի նշումը անջատված է kommando på MIDI interfacet const byte kommando = 0x80; // Նշում kommando på MIDI kanal 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // ուղարկել գրառում kommando Serial1.write (tonenr); // ուղարկել համարի համարանիշ Serial1.write (volumen); // ուղարկել ծավալ (արագություն)}
Քայլ 7. MIDI հաղորդակցության հիմունքները
MIDI (Երաժշտական գործիքների թվային ինտերֆեյս) էլեկտրոնային երաժշտական գործիքների և այլ սարքերի միացման ունիվերսալ սերիական հաղորդակցության արձանագրություն է: Օգտագործվում է սերիական հաղորդակցություն (31250 բիթ/վ, փոխանցման միջավայրը ընթացիկ օղակ է, օպտո-մեկուսացված ստացողի վերջում: Օգտագործվում են 5 պին DIN միակցիչներ: Մեկ տրամաբանական հաղորդակցության հնարավոր է 16 տրամաբանական հաղորդակցություն: MIDI- ում շատ հրամաններ են սահմանվում) ստանդարտ, այս նախագծում ես օգտագործում եմ երկու հրաման, այս հրամանները բաղկացած են 3 բայթից.
ա) Նշում հրամանատարության վերաբերյալ.
1. բայթ ուղարկեք = 0x90, որը նշանակում է նշում MIDI ալիքի 1 -ում
2. բայթ ուղարկելը = 0xZZ ZZ- ն նշման թիվ է, ես օգտագործում եմ 0x3C- ից 0x48 տիրույթը
3. բայթ ուղարկելու = 0xFF FF = 255 նշանակում է առավելագույն ծավալը, միջակայքը 0x00- ից 0xFF
բ) Նշում անջատելու հրաման. 1. բայթ ուղարկելը = 0x80 նշանակում է նշման անջատման հրաման MIDI ալիքի 1 -ում
2. բայթ ուղարկել = 0xZZ ZZ- ն նշման համար է, ես օգտագործում եմ 0x3C- ից 0x48 տիրույթը
3. բայթ ուղարկելու = 0xFF FF = 255 նշանակում է առավելագույն ծավալը, միջակայքը 0x00- ից 0xFF
Խորհուրդ ենք տալիս:
MicroBit սենյակի զբաղվածության հաշվիչ և վերահսկիչ `4 քայլ
MicroBit սենյակների զբաղվածության հաշվիչ և վերահսկիչ. Համաճարակի ժամանակ վիրուսի փոխանցումը նվազեցնելու միջոցներից մեկը մարդկանց միջև ֆիզիկական հեռավորության առավելագույնացումն է: Սենյակներում կամ խանութներում օգտակար կլիներ իմանալ, թե որքան մարդ է փակ տարածքներում ցանկացած պահի: Այս նախագիծը օգտագործում է զույգ
Կատարեք ժապավենի վերահսկիչ. 11 քայլ (նկարներով)
Կատարեք ժապավենի վերահսկիչ. Ժապավենի կարգավորիչները հիանալի միջոց են սինթեզը վերահսկելու համար: Դրանք բաղկացած են հպման զգայուն ժապավենից, որը թույլ է տալիս անընդհատ վերահսկել բարձրությունը: «Վելոստատ» կոչվող էլեկտրական հաղորդիչ ժապավենը, որն արձագանքում է լարման կամ դիմադրության փոփոխություններին
Սենյակի լույսի և օդափոխիչի ավտոմատ վերահսկիչ `երկկողմանի այցելուների հաշվիչով` 3 քայլ
Սենյակի լույսի և օդափոխիչի ավտոմատ վերահսկիչ `երկկողմանի այցելուների հաշվիչով. Այսօր մենք այստեղ ենք սենյակի լուսավորության վերահսկիչի ավտոմատ նախագծով ՝ երկկողմանի այցելուների հաշվիչով
Ստեղծեք այլընտրանքային MIDI վերահսկիչ `օգտագործելով Makey-Makey և ջուր. 6 քայլ
Ստեղծեք այլընտրանքային MIDI վերահսկիչ `օգտագործելով Makey-Makey և ջուր. Օգտագործելով Makey-Makey- ն ՝ սովորական և ստեղծագործական ներածումներ ստեղծելու համար, աներևակայելի հեշտ է: Մինչ շատ մարդիկ, ովքեր օգտագործում են ապարատը, ստեղծում են իրենց սեփական գործիքը ՝ օգտագործելով Makey-Makey- ի մուտքերը ՝ ձայներ կամ նշումներ առաջացնելու համար, մենք որոշեցինք, որ կարող ենք ավելին անել:
Microbit Midi CC անլար վերահսկիչ. 5 քայլ (նկարներով)
Microbit Midi CC Wireless Controller. Այս ուղեցույցում մենք կստեղծենք անլար midi CC վերահսկիչ, որը թույլ կտա ձեզ օգտագործել ձեր Microbit- ը որպես midi վերահսկիչ և միացնել այն ձեր նախընտրած երաժշտական ծրագրակազմին: Ի՞նչ է Midi CC- ն: Հաճախ կրճատ CC, մինչդեռ ճիշտ տերմինն է " Վերահսկիչ