Sisällysluettelo:
- Vaihe 1: Esittelyvideo
- Vaihe 2: Valoanturien tiedot
- Vaihe 3: Tiedot HC-SR04-ultraäänianturista
- Vaihe 4: Aduino -piiri
- Vaihe 5: I/O -luettelo
- Vaihe 6: Aduino -koodi
- Vaihe 7: MIDI -viestinnän perusteet
Video: EAL - Arduino MIDI -ohjain: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Valmistaja Søren Østergaard Petersen, OEAAM16EDA
Tässä ohjeessa kuvataan arduino -pohjainen MIDI -ohjain. Tämä on kouluprojekti. Kädelläsi voit toistaa yksinkertaisia melodioita MIDI -liitännän ja siihen liitetyn MIDI -instrumentin (tai kuten tässä tapauksessa kannettavan tietokoneen, jossa on softsynth -ohjelmisto) kautta. Voit toistaa nuotteja C-duurista, c-d-e-f-g-a-b-c. Jotta voit liittää MIDI-ohjaimen Notebookiin, tarvitset MIDI-USB-liitännän, kuten m-audio Uno.
Vaihe 1: Esittelyvideo
Lisää äänenvoimakkuutta ja nauti!
Kuinka se toimii:
MIDI -ohjain käyttää Arduino MEGA 2560 -korttia. Kaksi valo (LDR) -anturia, jotka on rakennettu 16 mm: n sähköputkeen, muodostavat kaksoisanturijärjestelmän, ja niitä käytetään luomaan vakaa liipaisin ilman vääriä kaksoisliipaisimia. Taskulamppu luo valonsäteen, kun säde keskeytetään ohjainta toistavalla kädellä.
Mitattua etäisyyttä käytetään Arduino -ohjelmassa laskettaessa ja määritettäessä asianmukainen nuotin numeroarvo, joka pakataan MIDI Note On -viestiin ja lähetetään MIDI -liitännässä. MIDI -lähtöliitäntä käyttää 74HC14 -heksataajuusmuuttajaa ja on melko vakiopiiri. MIDI -tiedonsiirto käyttää sarjaa1, vakio -sarjaporttia käytetään virheenkorjaukseen.
Kun kättä siirretään suoraan ylöspäin ja poispäin valonsäteestä, ylempi valotunnistin tunnistaa valonsäteen uudelleen ja MIDI Note Off -viesti pakataan ja lähetetään MIDI -lähtöön.
Anturien välinen pelialue on noin 63 cm ja MIDI -ohjaimen kokonaispituus on noin 75 cm.
Vaihe 2: Valoanturien tiedot
Kaksi valoanturia on asennettu päällekkäin kaksoisanturijärjestelmän muodostamiseksi. Se estää väärän laukaisun, kun sitä käytetään oikein ohjelmistossa. Jokainen valoanturi koostuu valokuvavastusmoduulista, joka on sisäänrakennettu 16 mm: n vakiosähköputkeen. Kussakin putkessa on rako rautasahalla ja valokuvavastuspiirilevy voidaan painaa uraan. Anturit on teipattu yhteen teipillä ja kiinnitetty myös puukappaleen toiseen päähän. Valo ei saa päästä käsiksi antureihin takaa.
Vaihe 3: Tiedot HC-SR04-ultraäänianturista
Ultraääni-HC-SR04-anturi on kiinnitetty MIDI-ohjaimen toiseen päähän. Myös kirkas taskulamppu on sijoitettu tähän, se luo tarvittavan valonsäteen.
Vaihe 4: Aduino -piiri
MIDI -lähtöpiiri on pohjimmiltaan vakio 74HC14 -kuusioinvertteri ja muutama vastus sekä 5 -nastainen DIN -naarasliitin. 74HC14 -piiri ohjaa MIDI -lähtöä ja samalla suojaa Arduino -korttia "todellista maailmaa" vastaan, joka on kytketty MIDI -lähtöön. Ylimääräinen käytännöllinen ominaisuus on MIDI -toimintavalo, joka ilmoittaa, kun data lähetetään.
Olen käyttänyt laitteistolleni asianmukaista prototyyppipiirilevyä, koska minulla oli paljon ongelmia leipälevyn huonojen yhteyksien kanssa. Kaavio on tehty Fritzing -muodossa, korkean resoluution pdf -kopio voidaan ladata painamalla alla olevaa linkkiä. Käytän mieluummin oikeaa kaavio -ohjelmaa, kuten Kicad, mielestäni Fritzing on rajoitettu kaikkeen paitsi yksinkertaisimpiin kokeisiin.
Käytetyt materiaalit:
1 kpl Arduino MEGA 2560
2 kpl Valovastus (LDR), jossa sisäänrakennettu vetovastus (37 anturisarjasta)
1 kpl HC-SR04-ultraäänianturi
1 kpl 74HC14 hex -käänteinen Schmitt -liipaisin
2 kpl vastus 220 ohmia 0,25 W
1 kpl vastus 1k ohmia 0,25W
1 kpl LED -pienvirta 2mA
1 kpl 100nF keraaminen kondensaattori (virtalähteen irrotukseen, suoraan 74HC14: n virtalähteisiin)
Leipälevy tai piirilevyn prototyyppi
2 kpl 16mm sähköputki, pituus 65mm
1 kpl puuta, pituus 75 cm
Ilmastointiteippi
Johdot
Vaihe 5: I/O -luettelo
Vaihe 6: Aduino -koodi
Luonnos test_Midi6 käyttää NewPing-kirjastoa, joka sinun on sisällytettävä Arduino-ohjelmointiympäristöön, jotta voit käyttää HC-SC04-ultraäänianturia. Luonnos kommentoidaan tanskaksi, anteeksi.. Jotta luonnos pysyisi hyvin jäsenneltynä, luonnoksen eri loogisille osille tehdään erilliset toiminnot ja globaaleja muuttujia vältetään. Ohjelman kulku visualisoidaan MIDI -ohjaimen vuokaaviossa pdf.
// 15.5.2017 versio: test_Midi6
// Søren Østergaard Petesen // Arduino MEGA 2560 // Dette -ohjelma, joka on yksinkertainen MIDI -ohjain som kan styre ja ulkoinen MIDI enhed, f.eks ja softsynt PC. // MIDI controlleren kan sende toneanslag (huomautus kommandossa) hhv. (huomautus pois kommandosta) for oktav C-C, C dur skala. // Der spilles med en "karate hånd" på et brædt // hvor sensorerne er monteret. MIDI kommandoerne laukaisee LDB -anturin, da der skal laves en sikker // detektering af både når hånden lander på brættet (huomautus päällä), samt når hånden fjernes kyllä (huomautus pois). // MIDI kommandoerne "note on" og "note off" består hver af 3 bytes som sendes på serial1 porten // vha 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 to trigger pin ultrasonic sensor #define ECHO_PIN 2 // Arduino pin til echo pin på ultrasound sensor # define MAX_DISTANCE 100 // Pingin enimmäiskesto #define Median 5 // Antal målinger der beregnes gennemsnit af for få en sikker afstandsbestemmelse NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing -objektin luominen. int Senspin1 = 53; // Underste LDR1 føler int Senspin2 = 52; // Øverste LDR2 føler byte MIDIByte2; // Variabel -ilmoitus MIDIByte2 -boolille klar_note_on = 1; // Variabel deklaration for klar_note_on, styrer afsendelse af note on kommando. Første kommando er en note on kommando bool klar_note_off = 0; // Variabel -ilmoitus klar_note_off, styrer afsendelse af note off kommando void setup () {pinMode (Senspin1, INPUT); // sæt sensor input pinMode (Senspin2, INPUT); // anturin tulo Serial1.begin (31250); // Serial1 bruges to MIDI communication: 31250 bit/sekundt Serial.begin (9600); // sarjamonitori, kunnes testi} void loop () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - undere 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 ultralyds -anturin kautta MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Hent MidByte2, MIDI -muistiinpanon numero, 0xFF er alueen ulkopuolella Send_Note_On (MIDIByte2); // kald Send_Note_On toiminto klar_note_on = 0; // der skal kun sendes en note on kommando klar_note_off = 1; // poista kommando er note off} if (Sensor2 &&! Sensor1 && klar_note_off) // Hvis der skal lähettää muistiinpanon kommando gøres det her.. {Send_Note_Off (MIDIByte2); // lähetä muistiinpano 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; }} tavu Hent_MidiByte2 (tavu NoteByte) {// Denne -funktion palauttaja MIDI -muistiinpanon numero, valgt ud fra NoteByte -tavu MIDIB2; kytkin (NoteByte) // hänen määritelmät hvilken værdi MIDIByte2 skal have ud fra værdien af Note_Byte {case 0: {MIDIB2 = 0x3C; // tonen 'C'} tauko; tapaus 1: {MIDIB2 = 0x3E; // tonen 'D'} break; tapaus 2: {MIDIB2 = 0x40; // tonen 'E'} tauko; tapaus 3: {MIDIB2 = 0x41; // tonen 'F'} break; tapaus 4: {MIDIB2 = 0x43; // tonen 'G'} break; tapaus 5: {MIDIB2 = 0x45; // tonen 'A'} break; tapaus 6: {MIDIB2 = 0x47; // tonen 'B'} break; tapaus 7: {MIDIB2 = 0x48; // tonen 'C'} tauko; oletus: {MIDIB2 = 0xFF; // alueen ulkopuolella}} palauta MIDIB2; // returner MIDI note number} tavu Hent_tonehojde () {// Denne funktion henter resultatet af ultralydsmålingen unsigned int Tid_uS; // målt tid i uS byte Afstand; // beregnet afstand i cm tavu resultat; // inddeling af spille område const float Omregningsfaktor = 58,3; // 2*(1/343 m/s)/100 = 58, 3uS/cm, der medges med 2 da tiden er summen af tiden frem og tilbage. Tid_uS = sonar.ping_median (mediaani); // Lähetä ping, få tid retur i uS, gennemsint af Median målinger Afstand = Tid_uS / Omregningsfaktor; // Omregn tid til afstand i cm (0 = etäisyysalueen ulkopuolella) resultat = Afstand / 8; // Beregn resultat return resultat; // Palautustulos} void Send_Note_On (byte tonenr) {// Denne funktion sender en note on kommando på MIDI interfacet const byte kommando = 0x90; // Huomautus kommandosta på MIDI -kanava 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // lähetä huomautus kommandosta Serial1.write (tonenr); // lähetysäänen numero Serial1.write (volumen); // lähetä tilavuus (nopeus)} void Send_Note_Off (tavu toner) {// Denne -funktion lähettäjän huomautus pois kommando på MIDI interfacet const byte kommando = 0x80; // Note off kommando på MIDI kanal 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // lähetä muistiinpano kommando Serial1.write (tonenr); // lähetysäänen numero Serial1.write (volumen); // lähetä tilavuus (nopeus)}
Vaihe 7: MIDI -viestinnän perusteet
MIDI (Musical Instrument Digital Interface) on universaali sarjaliikenneprotokolla elektronisten soittimien ja muiden laitteiden liittämiseen. Käytetään sarjaliikennettä (31250 bit/s, siirtoväline on virtasilmukka, optoeristetty vastaanottimen päässä. Käytetään 5-nastaisia DIN-liittimiä. Yhdessä fyysisessä MIDI-yhteydessä on mahdollista 16 loogista tiedonsiirtokanavaa. MIDI: ssä on monia komentoja standardi, käytän tässä projektissa kahta komentoa, nämä komennot koostuvat 3 tavusta:
a) Huomautus komennosta:
1. tavun lähetys = 0x90, joka tarkoittaa huomautusta MIDI -kanavan 1 komennosta
2. tavun lähetys = 0xZZ ZZ on muistiinpanon numero, käytän aluetta 0x3C - 0x48
3. tavun lähetys = 0xFF FF = 255, mikä tarkoittaa enimmäistilavuutta, alue 0x00 - 0xFF
b) Huomautus Pois -komento: 1. tavun lähetys = 0x80 merkitsee muistiinpanokomentoa MIDI -kanavalla 1
2. tavun lähetys = 0xZZ ZZ on muistiinpanon numero, käytän aluetta 0x3C - 0x48
3. tavun lähetys = 0xFF FF = 255, mikä tarkoittaa enimmäistilavuutta, alue 0x00 - 0xFF
Suositeltava:
EAL - Industry 4.0 GPS -tiedonkeruu Rc -autossa: 4 vaihetta
EAL - Industry 4.0 GPS -tiedonkeruu Rc Car -autossa: Tässä Instructable -ohjelmassa puhumme siitä, miten asennamme GPS -moduulin RC -autoon ja postitamme kerätyt tiedot verkkosivulle helpon valvonnan varmistamiseksi. Olemme aiemmin tehneet ohjeen siitä, miten teimme RC -auton, joka löytyy täältä. Tämä käyttää
EAL- sulautettu - yhdistelmälukko: 4 vaihetta
EAL- Embedded- Yhdistelmälukko: Tämä projekti on yksi kouluprojekti, jonka olen valinnut oppiaineeksi 2.1 C-ohjelmointi EAL: ssa. Tämä on ensimmäinen kerta, kun tein Arduino-projektin ja C-ohjelmoinnin. Tämä on projekti, jossa esitetään yhdistelmälukko. Yhdistelmälukko
EAL- sulautettu sisäilma: 5 vaihetta
EAL-sulautettu sisäilma: Kouluprojektimme tehtävänä oli integroida arduino automaattiseen järjestelmään. Valitsimme tehdä sisäilma -anturin, joka tunnistaa lämpötilan, kosteuden ja desibelin tason sisätiloissa. Porasimme pari reikää kaappiin
EAL - SmartStorage: 3 vaihetta
EAL - SmartStorage: Tämä on Kasper Borger Tuliniusin SmartStorage -projekti
EAL - Teollinen 4.0 Lämpö ja kosteus: 9 vaihetta
EAL - Industrial 4.0 Heat & Kosteus: Määritän projektin, jossa on maskin säätölaitteita, säädöksiä ja fugtigheden i et rommi ja opsamler data for forbedre indeklimaet i rommi fremtiden. Den g ø r brug af 4 ohjelmoijaohjelmistoa ja kirjoituslaitteistoa