ዝርዝር ሁኔታ:

EAL - Arduino MIDI መቆጣጠሪያ 7 ደረጃዎች
EAL - Arduino MIDI መቆጣጠሪያ 7 ደረጃዎች

ቪዲዮ: EAL - Arduino MIDI መቆጣጠሪያ 7 ደረጃዎች

ቪዲዮ: EAL - Arduino MIDI መቆጣጠሪያ 7 ደረጃዎች
ቪዲዮ: MKS Monster8 - Basics 2024, ህዳር
Anonim
EAL - Arduino MIDI ተቆጣጣሪ
EAL - Arduino MIDI ተቆጣጣሪ

በ Søren Østergaard Petersen ፣ OEAAM16EDA የተሰራ

ይህ ትምህርት ሰጪው አርዱዲኖ ላይ የተመሠረተ የ MIDI መቆጣጠሪያን ይገልጻል። ይህ የትምህርት ቤት ፕሮጀክት ነው። እጅዎን በመጠቀም በ MIDI ግንኙነት እና በተገናኘ የ MIDI መሣሪያ በኩል ቀላል ዜማዎችን ማጫወት ይችላሉ (ወይም በዚህ ሁኔታ የሶፍትዌር ሶፍትዌርን የሚያሄድ ማስታወሻ ደብተር)። ማስታወሻዎችን ከ C ዋና ልኬት ፣ c-d-e-f-g-a-b-c ማጫወት ይችላሉ። የ MIDI መቆጣጠሪያን ከማስታወሻ ደብተር ጋር ለማገናኘት እንደ ኤም-ኦዲዮ ዩኖ ወደ ዩኤስቢ በይነገጽ MIDI ያስፈልግዎታል።

ደረጃ 1: የማሳያ ቪዲዮ

Image
Image

ድምጹን ከፍ ያድርጉ እና ይደሰቱ!

እንዴት እንደሚሰራ:

የ MIDI መቆጣጠሪያው የአርዱዲኖ MEGA 2560 ሰሌዳ ይጠቀማል። በ 16 ሚሜ ኤሌክትሪክ ቱቦ ውስጥ የተገነቡ ሁለት ብርሃን (ኤልአርዲ) ዳሳሾች ባለሁለት አነፍናፊ ስርዓት ይፈጥራሉ እና ምንም የሐሰት ድርብ ቀስቃሽ ሳይኖር የተረጋጋ ቀስቅሴ ለመፍጠር ያገለግላሉ። የእጅ ባትሪ የብርሃን ጨረር እየፈጠረ ነው ፣ ተቆጣጣሪው በሚጫወትበት እጅ ጨረሩ ሲቋረጥ ፣ የታችኛው የብርሃን ዳሳሽ የጠፋውን ጨረር ይሰማዋል ፣ እና የ HC-SR04 ultrasonic ዳሳሽ ከአነፍናፊ ወደ እጅ ያለውን ርቀት ይለካል።

የሚለካው ርቀት በ MIDI ማስታወሻ ላይ በመልዕክት እና በ MIDI በይነገጽ ላይ ለማስተላለፍ ተገቢውን የማስታወሻ ቁጥር እሴትን ለማስላት እና ለማቀናበር በአርዱኖ ፕሮግራም ውስጥ ጥቅም ላይ ይውላል። የ MIDI ውፅዓት በይነገጽ 74HC14 ሄክስ ኢንቨርተርን ይጠቀማል እና በጣም ብዙ መደበኛ ወረዳ ነው። የ MIDI ግንኙነት ተከታታይ 1 ይጠቀማል ፣ መደበኛው ተከታታይ ወደብ ለማረም ያገለግላል።

እጁ በቀጥታ ወደ ላይ ሲንቀሳቀስ እና ከብርሃን ጨረር ሲርቅ ፣ የላይኛው የብርሃን ዳሳሽ እንደገና የብርሃን ጨረሩን ይሰማል እና የ MIDI ማስታወሻ ጠፍቷል መልእክት በ MIDI ውፅዓት ላይ ተሞልቶ ይተላለፋል።

በአነፍናፊዎቹ መካከል ያለው የመጫወቻ ቦታ 63 ሴ.ሜ ያህል ነው ፣ እና የ MIDI መቆጣጠሪያ አጠቃላይ ርዝመት 75 ሴ.ሜ ነው።

ደረጃ 2 - የብርሃን ዳሳሾች ዝርዝሮች

የብርሃን ዳሳሾች ዝርዝሮች
የብርሃን ዳሳሾች ዝርዝሮች
የብርሃን ዳሳሾች ዝርዝሮች
የብርሃን ዳሳሾች ዝርዝሮች

ሁለቱ የብርሃን ዳሳሾች እርስ በእርስ በላዩ ላይ ተጭነው ባለሁለት ዳሳሽ ስርዓት ለመመስረት። በሶፍትዌሩ ውስጥ በትክክል ጥቅም ላይ ሲውል የሐሰት ማስነሳትን ይከላከላል። እያንዳንዱ የብርሃን ዳሳሽ በ 16 ሚሜ መደበኛ የኤሌክትሪክ ቱቦ ውስጥ የተገነባውን የፎቶ ተከላካይ ሞዱል ያካትታል። በእያንዲንደ ቱቦ ውስጥ መሰኪያ በ hacksaw የተሠራ ሲሆን የፎቶው ተከላካይ ፒሲቢ ወደ ማስገቢያው ሊጫን ይችላል። አነፍናፊዎቹ ከተጣራ ቴፕ ጋር አንድ ላይ ተቀርፀው እንዲሁም በእንጨት አንድ ጫፍ ላይ ተስተካክለዋል። ምንም ብርሃን ከበስተጀርባ ዳሳሾቹን መድረስ መቻል የለበትም። የብርሃን ዳሳሾች በ 10 ኪ መጎተቻ ተከላካዮች ውስጥ ገንብተዋል።

ደረጃ 3 የ HC-SR04 Ultrasonic Sensor ዝርዝሮች

የ HC-SR04 Ultrasonic Senser ዝርዝሮች
የ HC-SR04 Ultrasonic Senser ዝርዝሮች

HC-SR04 እጅግ በጣም sonic ዳሳሽ በ MIDI መቆጣጠሪያ በሌላኛው ጫፍ ላይ ተስተካክሏል። ደማቅ የእጅ ባትሪ እዚህም ይቀመጣል ፣ አስፈላጊውን የብርሃን ጨረር ይፈጥራል።

ደረጃ 4 - የአዱኖ ወረዳ

የአዱኒኖ ወረዳ
የአዱኒኖ ወረዳ
የአዱኒኖ ወረዳ
የአዱኒኖ ወረዳ

የ MIDI ውፅዓት ወረዳ በመሰረቱ መደበኛ 74HC14 ሄክስ ኢንቬተር እና ጥቂት ተቃዋሚዎች ሲደመር 5 ፒን ዲን የሴት አያያዥ ነው። የ 74HC14 ወረዳው የ MIDI ን ውጤት የሚያንቀሳቅስ ሲሆን በተመሳሳይ ጊዜ ከአርዲኖ ቦርድ ጋር ከ “MIDI” ጋር በተገናኘው “በእውነተኛው ዓለም” ላይ አንዳንድ የመከላከያ ዘዴዎችን ይሰጣል። አንድ ተጨማሪ ተግባራዊ ባህሪ መረጃ ሲላክ የሚያመለክተው የ MIDI እንቅስቃሴ LED ነው።

በእኔ ዳቦ ሰሌዳ ላይ ከመጥፎ ግንኙነቶች ጋር ብዙ ችግሮች ስላሉብኝ ለኔ ሃርድዌር ተገቢውን የቅድመ -ምሳሌ PCB ን ተጠቀምኩ። ዘዴው በፍሪቲንግ ውስጥ የተሠራ ነው ፣ ከፍተኛ ጥራት ያለው የፒዲኤፍ ቅጂ ከዚህ በታች ያለውን አገናኝ በመጫን ማውረድ ይችላል። እንደ ኪካድን የመሰለ ትክክለኛ የመርሃግብር መርሃ ግብርን መጠቀም እመርጣለሁ ፣ እኔ በጣም ቀላል ከሆኑት ሙከራዎች በስተቀር ለማንኛውም ነገር መገደብ ይመስለኛል።

ያገለገሉ ቁሳቁሶች;

1 ኮምፒተሮች አርዱinoኖ MEGA 2560

2 ኮምፒተሮች የፎቶ ተከላካይ (ኤልአርዲአር) አብሮገነብ መጎተቻ ተከላካይ (ከ 37 ዳሳሽ ኪት)

1 pcs HC-SR04 ultrasonic sensor

1 ኮምፒተሮች 74HC14 ሄክስክ ሽሚት ቀስቅሴ

2 pcs resistor 220 Ohm 0.25W

1 pcs resistor 1k Ohm 0.25W

1 pcs LED low current 2mA

1 pcs 100nF የሴራሚክ capacitor (ለኃይል አቅርቦት ማረም ፣ በቀጥታ በ 74HC14 የኃይል ፒኖች)

የዳቦ ሰሌዳ ወይም ናሙና PCB

2 pcs 16 ሚሜ የኤሌክትሪክ ቱቦ ፣ ርዝመት 65 ሚሜ

1 pcs እንጨት ፣ ርዝመት 75 ሴ.ሜ

የተጣራ ቴፕ

ሽቦዎች

ደረጃ 5 - እኔ/ኦ ዝርዝር

እኔ/ኦ ዝርዝር
እኔ/ኦ ዝርዝር

ደረጃ 6 - የአዱኖ ኮድ

የንድፍ ሙከራው_Midi6 የኤች.ሲ.ሲ. -00 የአልትራሳውንድ ዳሳሽ ለመጠቀም በአርዱዲኖ የፕሮግራም አከባቢዎ ውስጥ ማካተት ያለብዎትን የኒው ፒንግ ቤተ-መጽሐፍትን ይጠቀማል። ንድፉ በዴንማርክ አስተያየት ተሰጥቶታል ፣ ይቅርታ። ንድፉ በደንብ የተዋቀረ እንዲሆን ፣ የተናጠል ተግባራት ለተለያዩ የንድፍ አመክንዮ ክፍሎች የተሠሩ ናቸው እና ዓለም አቀፍ ተለዋዋጮች በአብዛኛው ይርቃሉ። በፕሮግራሙ ፍሰት ውስጥ በ MIDI መቆጣጠሪያ ፍሎክርት ፒዲኤፍ ውስጥ ይታያል።

// 15-05-2017 ስሪት: test_Midi6

// Søren Østergaard Petesen // Arduino MEGA 2560 // Dette ፕሮግራም udgør en simpel MIDI መቆጣጠሪያ ሶም kan styre en ekstern MIDI enhed, f.eks en softsynt på en PC. // MIDI controlleren kan sende toneanslag (ማስታወሻ በ kommando ላይ) hhv. (ማስታወሻ ጠፍቷል kommando) ለ en oktav C-C ፣ C dur skala። // ደር spilles med en "karate hånd" på et brædt // hvor sensorerne er monteret. የ MIDI kommandoerne ቀስቅሷል በ en dobbelt LDR ዳሳሽ ፣ ዳ ደር ስካል ላቭስ en ሲክከር // መፈለጊያ af både når hånden lander på brættet (ማስታወሻ ላይ) ፣ samt når hånden fjernes igen (ማስታወሻ ጠፍቷል)። // MIDI kommandoerne “og on note note” består hver af 3 ባይት ሶም ይልካል på serial1 porten // vha det i hardware opbyggede MIDI በይነገጽ። // Tonehøjden bestemmes vha ultralydssensor HC-SR04 #ያካትቱ // bibliotek til den anvendte ultralydssensor HC-SR04 #define TRIGGER_PIN 3 // አርዱinoኖ ፒን እስከ መቀስቀሻ ፒን ለአልትራሳውንድ ዳሳሽ #ጥራት ECHO_PIN 2 // Arduino pin til echo pin på መግለፅ MAX_DISTANCE 100 // ለፒንግ #ዴፊኔ ሚዲያን 5 // ከፍተኛው የመቋቋም አቅም / Antal målinger der beregnes gennemsnit af for at få en sikker afstandsbestemmelse NewPing sonar (TRIGGER_PIN ፣ ECHO_PIN ፣ MAX_DISTANCE); // የኒው ፒንግ ነገርን መፍጠር። int Senspin1 = 53; // Underste LDR1 føler int Senspin2 = 52; // Øverste LDR2 føler byte MIDIByte2; // Variabel deklaration ለ MIDIByte2 bool klar_note_on = 1; // Variabel deklaration ለ klar_note_on ፣ styrer afsendelse af note kommando. Første kommando er en ማስታወሻ ላይ kommando bool klar_note_off = 0; // Variabel deklaration ለ klar_note_off ፣ styrer afsendelse af note off kommando ባዶ ባዶ ማዋቀር () {pinMode (Senspin1 ፣ INPUT) ፤ // sæt ዳሳሽ ግብዓት ፒን ሞዶ (Senspin2 ፣ INPUT); // sæt ዳሳሽ ግብዓት Serial1.begin (31250); // Serial1 bruges til MIDI kommunikation: 31250 ቢት/sekundt Serial.begin (9600); // ተከታታይ ማሳያ ፣ እስከ ሙከራ} ባዶ ባዶ ዙር () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - የ LDR bool Sensor2 = digitalRead (Senspin2) ን ይረዱ። // læs LDR2 - øverste LDR ከሆነ (Sensor1 && klar_note_on) // hvis LDR1 aktiveret og klar til note በ {byte Note_Byte = Hent_tonehojde (); // የተደበቀ ቃና højde በ ultralyds ዳሳሽ MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Hent MidByte2 ፣ MIDI ማስታወሻ ቁጥር ፣ værdien 0xFF er ከክልል Send_Note_On (MIDIByte2); // kald ላክ_Note_On funktion klar_note_on = 0; // ደር skal kun kommando klar_note_off = 1 ላይ ማስታወሻ ይልካል። // næste kommando er note off} ከሆነ (Sensor2 &&! Sensor1 && klar_note_off) // Hvis der skal noteeses off off kommando gøres det her.. {Send_Note_Off (MIDIByte2); // ማስታወሻ ላክ kommando klar_note_off = 0; // ደር skal kun ይልካል en ማስታወሻ ጠፍቷል kommando} ከሆነ (! Sensor1 &&! Sensor2) // የእሷ gøres klar til ny note kommando ላይ ፣ hånd er væk fra brædt {klar_note_on = 1; }} ባይት Hent_MidiByte2 (ባይት NoteByte) {// Denne funktion returnerer MIDI note number, valgt ud fra NoteByte byte MIDIB2; ማብሪያ (ማስታወሻቢይት) // የእሷን መግለጫዎች hvilken værdi MIDIByte2 skal have ud fra værdien af Note_Byte {case 0: {MIDIB2 = 0x3C; // tonen 'C'} እረፍት; ጉዳይ 1 ፦ {MIDIB2 = 0x3E; // tonen 'D'} እረፍት; ጉዳይ 2 ፦ {MIDIB2 = 0x40; // tonen 'E'} መሰበር; ጉዳይ 3 ፦ {MIDIB2 = 0x41; // tonen 'F'} እረፍት; ጉዳይ 4 ፦ {MIDIB2 = 0x43; // tonen 'G'} እረፍት; ጉዳይ 5 ፦ {MIDIB2 = 0x45; // tonen 'A'} እረፍት; ጉዳይ 6 ፦ {MIDIB2 = 0x47; // tonen 'B'} እረፍት; ጉዳይ 7 ፦ {MIDIB2 = 0x48; // tonen 'C'} እረፍት; ነባሪ ፦ {MIDIB2 = 0xFF; // ከክልል ውጭ}} MIDIB2 ን ይመልሱ ፤ // ተመላሽ የ MIDI ማስታወሻ ቁጥር} ባይት Hent_tonehojde () {// Denne funktion henter resultatet af ultralydsmålingen unigned un int Tid_uS; // målt tid i uS byte Afstand; // beregnet afstand i cm byte resultat; // inddeling af spille område const ተንሳፈፈ Omregningsfaktor = 58.3; // 2*(1/343 ሜ/ሰ)/100 = 58 ፣ 3 ዩኤስ/ሴሜ ፣ ደር ganges med 2 da tiden er summen af tiden frem og tilbage. Tid_uS = sonar.ping_median (ሚዲያን); // ፒንግ ላክ ፣ få tid retur i uS ፣ gennemsint af Median målinger Afstand = Tid_uS / Omregningsfaktor; // Omregn tid til afstand i cm (0 = ውጪ ርቀት ክልል) resultat = Afstand / 8; // Beregn resultat መመለስ resultat; // የመመለሻ ውጤት} ባዶነት ላክ_Note_On (ባይት ቶኔነር) {// Denne funktion ላኪ en ማስታወሻ ላይ kommando på MIDI በይነገጽ 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); // volumen ላክ (ፍጥነት)} ባዶ ላክ_Note_Off (ባይት ቶኔነር) {// Denne funktion ላኪ ማስታወሻ ከ kommando på MIDI በይነገጽ const byte kommando = 0x80; // ማስታወሻ ጠፍቷል kommando på MIDI kanal 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // ማስታወሻውን ከኮማንዶ ላክ Serial1.write (tonenr); // የድምፅ ቁጥር ላክ Serial1.write (volumen); // ጥራዝ ላክ (ፍጥነት)}

ደረጃ 7 - የሚዲአይ ግንኙነት መሠረታዊ ነገሮች

ሚዲአይ (የሙዚቃ መሣሪያ ዲጂታል በይነገጽ) የኤሌክትሮኒክ የሙዚቃ መሳሪያዎችን እና ሌሎች መሣሪያዎችን ለማገናኘት ዓለም አቀፍ ተከታታይ የግንኙነት ፕሮቶኮል ነው። ተከታታይ ግንኙነት ጥቅም ላይ ውሏል (31250 ቢት/ሰ ፣ የማስተላለፊያ መካከለኛ የአሁኑ ዑደት ነው ፣ በተቀባዩ መጨረሻ ላይ ኦፕቶ ተነጥሏል። 5pin DIN አያያorsች ጥቅም ላይ ይውላሉ። በአንድ አካላዊ MIDI ግንኙነት ውስጥ 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

የሚመከር: