Sadržaj:
- Korak 1: Video demonstracije
- Korak 2: Detalji o svjetlosnim senzorima
- Korak 3: Detalji o ultrazvučnom senzoru HC-SR04
- Korak 4: Aduino kolo
- Korak 5: I/O listanje
- Korak 6: Aduino kod
- Korak 7: Osnove MIDI komunikacije
Video: EAL - Arduino MIDI kontroler: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Proizvođač Søren Østergaard Petersen, OEAAM16EDA
Ova instrukcija opisuje MIDI kontroler zasnovan na arduinu. Ovo je školski projekat. Rukom možete reproducirati jednostavne melodije putem MIDI veze i povezanog MIDI instrumenta (ili kao u ovom slučaju prijenosnog računara sa softverskim softverom). Možete svirati note iz C-dura, c-d-e-f-g-a-b-c. Da biste mogli spojiti MIDI kontroler na prijenosno računalo, trebat će vam MIDI na USB sučelje poput m-audio Uno.
Korak 1: Video demonstracije
Pojačajte zvuk i uživajte!
Kako radi:
MIDI kontroler koristi Arduino MEGA 2560 ploču. Dva svjetlosna senzora (LDR) ugrađena u 16 mm električnu cijev čine dvostruki senzorski sistem i koriste se za stvaranje stabilnog okidača bez lažnog dvostrukog okidanja. Svjetiljka stvara svjetlosni snop, kada snop prekine ruka koja igra s kontrolerom, donji senzor osvjetljenja osjeti nedostajući snop, a HC-SR04 ultrazvučni senzor mjeri udaljenost od senzora do ruke.
Izmjerena udaljenost se koristi u programu Arduino za izračunavanje i postavljanje odgovarajuće vrijednosti bilješke koja se pakira u poruku MIDI Note On i odašiljač na MIDI sučelju. MIDI izlazno sučelje koristi šesterokutni pretvarač 74HC14 i prilično je standardno kolo. MIDI komunikacija koristi serial1, standardni serijski port se koristi za otklanjanje grešaka.
Kada se ruka pomakne ravno prema gore i dalje od svjetlosnog snopa, gornji svjetlosni senzor ponovo osjeća snop svjetlosti i poruka MIDI Note Off se pakuje i prenosi na MIDI izlaz.
Područje za igru između senzora je oko 63 cm, a ukupna dužina MIDI kontrolera je oko 75 cm.
Korak 2: Detalji o svjetlosnim senzorima
Dva svjetlosna senzora montirana su jedan preko drugog kako bi formirali dvostruki senzorski sistem. Sprječava lažno aktiviranje ako se pravilno koristi u softveru. Svaki svjetlosni senzor sastoji se od fotootpornog modula ugrađenog u 16 mm standardnu električnu cijev. U svakoj cijevi s nožicom je napravljen prorez, a foto otpornik PCB može se utisnuti u utor. Senzori su zalijepljeni ljepljivom trakom i pričvršćeni na jedan kraj komada drveta. Senzori sa stražnje strane ne smiju doprijeti do svjetla. Senzori za svjetlo imaju ugrađene 10k pull-up otpornike.
Korak 3: Detalji o ultrazvučnom senzoru HC-SR04
Ultrazvučni senzor HC-SR04 pričvršćen je na drugom kraju MIDI kontrolera. I ovdje je postavljena jaka svjetiljka koja stvara potreban snop svjetlosti.
Korak 4: Aduino kolo
MIDI izlazni krug je u osnovi standardni šesterokutni pretvarač 74HC14 i nekoliko otpornika plus 5 -polni ženski DIN konektor. Krug 74HC14 pokreće MIDI izlaz i istovremeno pruža neka sredstva zaštite za Arduino ploču od "stvarnog svijeta" spojenog na MIDI izlaz. Dodatna praktična značajka je LED za MIDI aktivnost koji signalizira kada se šalju podaci.
Koristio sam odgovarajući prototip PCB -a za svoj hardver jer sam imao dosta problema sa lošim vezama na matičnoj ploči. Shema je napravljena u Fritzingu, pdf kopiju visoke rezolucije možete preuzeti pritiskom na donju vezu. Više volim koristiti odgovarajući program za sheme poput Kicada, mislim da je Fritzing ograničen na sve osim na najjednostavnije eksperimente.
Upotrebljeni materijali:
1 kom Arduino MEGA 2560
2 kom. Foto otpornik (LDR) sa ugrađenim otpornikom na izvlačenje (od 37 senzorskih kompleta)
1 kom HC-SR04 ultrazvučni senzor
1 kom 74HC14 šesterokutni Schmittov okidač
2 kom otpornika 220 Ohm 0,25W
1 kom otpornik 1k Ohm 0,25W
1 kom LED slabe struje 2mA
1 kom 100nF keramički kondenzator (za odvajanje napajanja, direktno na priključcima za napajanje 74HC14)
Matična ploča ili prototip PCB -a
2 kom 16 mm električne cijevi, dužine 65 mm
1 komad drveta, dužine 75 cm
Ljepljiva traka
Žice
Korak 5: I/O listanje
Korak 6: Aduino kod
Skica test_Midi6 koristi biblioteku NewPing koju morate uključiti u svoju programsku sredinu Arduino, za korištenje ultrazvučnog senzora HC-SC04. Skica je komentirana na danskom, oprostite. Kako bi skica bila dobro strukturirana, odvojene funkcije se sastoje od različitih logičkih dijelova skice, a globalne varijable se uglavnom izbjegavaju. Tok programa je vizualiziran u dijagramu toka MIDI kontrolera pdf.
// 15.05.2017 verzija: test_Midi6
// Søren Østergaard Petesen // Arduino MEGA 2560 // Preuzmite program na jednostavan MIDI kontroler kako biste mogli stilizirati i eksterno MIDI enhed, f.eks i softverski na računaru. // MIDI kontroler može poslati tonske oznake (napomena o komandi) hhv. (Napomena kommando) za en oktav C-C, C dur skala. // Der spilles med en "karate hånd" på et brædt // hvor sensorerne er monteret. MIDI komandno upravljanje aktivira LOB senzor na dobbelt -u, da der skalira laves i sikker // detekcija både når hånden lander på brættet (napomena na), sam niti nånd fjernes igen (napomena isključena). // MIDI komandna naredba "bilješka o" ili "napomena isključena" najbolje nakon 3 bajta poslana na serijski1 porton // u hardverskom opbyggede MIDI sučelju. // Tonehøjden bestemmes vha ultralydssensor HC-SR04 #include // biblioteka do anvendte ultralydssensor HC-SR04 #define TRIGGER_PIN 3 // Arduino pin do pin okidača na ultrazvučnom senzoru #define ECHO_PIN 2 // Arduino pin do echo pin na ultrazvučni senzor # definirati MAX_DISTANCE 100 // Maksimalno držanje za Ping #define Median 5 // Antal målinger der beregnes gennemsnit af for at få en sikker afstandsbestemmelse NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Kreiranje NewPing objekta. int Senspin1 = 53; // Donja LDR1 kartica int Senspin2 = 52; // Obrni LDR2 bajt veći od MIDIByte2; // Variabel deklaracija za MIDIByte2 bool klar_note_on = 1; // Varijabel deklaracija za klar_note_on, styler nakon dodavanja bilješke na komandu. Prijemjerite komandu i zabilježite na komandnoj bool klar_note_off = 0; // Varijabel deklaracija za klar_note_off, styler nakon dodavanja napomene isključuje kommando void setup () {pinMode (Senspin1, INPUT); // provjerava pinMode senzora (Senspin2, INPUT); // sset senzorski ulaz Serial1.begin (31250); // Serial1 je dostupan do MIDI komunikacije: 31250 bit/sekunda Serial.begin (9600); // serijski monitor, do testa} void loop () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - ispod LDR bool senzora2 = digitalRead (Senspin2); // sadrži LDR2 - premjesti LDR ako (Sensor1 && klar_note_on) // hvis LDR1 aktivan i klar u bilješci na {byte Note_Byte = Hent_tonehojde (); // Poslali ton preko ultrazvučnog senzora MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Poslali MidByte2, broj bilješke MIDI, 0xFF izvan raspona Send_Note_On (MIDIByte2); // kald Send_Note_On function klar_note_on = 0; // der skal kun šalje bilješku o komandi klar_note_off = 1; // najnovije komande su napomene isključene} if (Sensor2 &&! Sensor1 && klar_note_off) // Hvis der skal šalje notu off kommando gøres det her.. {Send_Note_Off (MIDIByte2); // šalje bilješku off kommando klar_note_off = 0; // der skal kun sendes en note off kommando} if (! Sensor1 &&! Sensor2) // njen glavni kôd do najnovije bilješke o kommandu, hånd er væk fra brædt {klar_note_on = 1; }} bajt Hent_MidiByte2 (bajt NoteByte) {// Denne funkcija vraća MIDI broj bilješke, vrijedi za NoteByte bajt MIDIB2; switch (NoteByte) // njena definicija uključuje MIDIByte2 skalu koja sadrži frazu Note_Byte {slučaj 0: {MIDIB2 = 0x3C; // ton "C"} break; slučaj 1: {MIDIB2 = 0x3E; // ton "D"} break; slučaj 2: {MIDIB2 = 0x40; // ton "E"} break; slučaj 3: {MIDIB2 = 0x41; // tonn 'F'} prekid; slučaj 4: {MIDIB2 = 0x43; // ton "G"} break; slučaj 5: {MIDIB2 = 0x45; // ton "A"} break; slučaj 6: {MIDIB2 = 0x47; // ton "B"} break; slučaj 7: {MIDIB2 = 0x48; // ton "C"} break; zadano: {MIDIB2 = 0xFF; // izvan dometa}} return MIDIB2; // povratni broj MIDI bilješke} bajt Hent_tonehojde () {// Denne funkcije pronalaze rezultate kao rezultat ultralydsmålingen nepotpisanog int Tid_uS; // målt tid i uS byte Afstand; // beregnet afstand i cm byte resultat; // poništavanje igara område const float Omregningsfaktor = 58,3; // 2*(1/343 m/s)/100 = 58, 3uS/cm, der ganges med 2 da tiden er summes off tiden frem og tilbage. Tid_uS = sonar.ping_median (srednji); // Pošaljite ping, ako se ne vratite u SAD, gennemsint iz srednjeg prosjeka Podijeli = Tid_uS / Omregningsfaktor; // Omregn tid do visine i cm (0 = vanjski raspon udaljenosti) rezultat = Afstand / 8; // Beregn resultat return resultat; // Rezultat povratnika} void Send_Note_On (byte tonenr) {// Denne funkcija pošiljatelja i bilješka o komandama na MIDI sučelju const byte kommando = 0x90; // Bilješka o kommando på MIDI kanalu 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // šalje bilješku o kommando Serial1.write (tonenr); // šalje broj tona Serial1.write (volumen); // slanje volumena (velocity)} void Send_Note_Off (byte tonenr) {// Denne funkcija pošiljatelja napomena isključena komanda na MIDI sučelju const byte kommando = 0x80; // Bilješka o kommando på MIDI kanalu 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // šalje bilješku kommando Serial1.write (tonenr); // šalje broj tona Serial1.write (volumen); // slanje volumena (brzina)}
Korak 7: Osnove MIDI komunikacije
MIDI (digitalni interfejs za muzičke instrumente) je univerzalni serijski komunikacijski protokol za povezivanje elektronskih muzičkih instrumenata i drugih uređaja. Koristi se serijska komunikacija (31250 bit/s, prijenosni medij je strujna petlja, opto izolirana na kraju prijemnika. Koriste se 5pin DIN konektori. Moguće je 16 logičkih komunikacijskih kanala u jednoj fizičkoj MIDI vezi. Mnoge naredbe definirane su u MIDI standardno, u ovom projektu koristim dvije naredbe, ove naredbe se sastoje od 3 bajta:
a) Napomena Na komandu:
1. slanje bajtova = 0x90 što znači napomenu o naredbi na MIDI kanalu 1
2. slanje bajtova = 0xZZ ZZ je broj note, koristim raspon od 0x3C do 0x48
3. slanje bajtova = 0xFF FF = 255 što znači maksimalni volumen, raspon 0x00 do 0xFF
b) Napomena Komanda za isključivanje: 1. byte send = 0x80 znači naredba za isključivanje bilješke na MIDI kanalu 1
2. slanje bajtova = 0xZZ ZZ je broj note, koristim raspon od 0x3C do 0x48
3. slanje bajtova = 0xFF FF = 255 što znači maksimalni volumen, raspon 0x00 do 0xFF
Preporučuje se:
DIY MIDI KONTROLER USB Plug & Play (NADOGRADI NEOPIXEL PRSTEN): 12 koraka
DIY MIDI KONTROLER USB Plug & Play (NADOGRADI NEOPIXEL PRSTEN): Strastveni MAO i elektronska muzika, ali i uvid u mogućnost stvaranja personaliziranog Midi sučelja, napravio sam mine6 potenciometre i 12 tipki (uključivanje / isključivanje), ali kako bi mjesto bilo teže da je već bilo, želim dodati vizualnu oznaku
Beskontaktni midi kontroler: 6 koraka (sa slikama)
Midi kontroler bez kontakta: U današnje vrijeme trend je učiniti beskontaktnim. Napravio sam jednostavan midi kontroler koristeći Arduino Pro micro i neku ploču za detektore IR-blizine koja ima ugrađeni komparator, ovo bi trebalo biti dostupno prilično jednostavno i jeftino. Ovaj projekat može
Lune - MIDI kontroler sa Arduinom (za DJ -a ili muzičara): 5 koraka (sa slikama)
Lune - MIDI kontroler sa Arduinom (za DJ -a ili muzičara): Ovo je moj prvi arduino (mikrokontroler) naziv projekta Lune. Htio sam naučiti arduino s korisnim i velikim projektom pa sam odlučio napraviti midi DJ kontroler koji ima sve funkcije potrebne za samostalno miješanje. Svaka vrsta senzora (potencio
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: 4 koraka
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: Zdravo proizvođači, nedavno sam počeo uzgajati gljive kod kuće, bukovače, ali već sam 3 puta imao ove kontrolere kod kuće za kontrolu temperature fermentatora za moju domaću marinu, supruga sada radi i ovu Kombucha stvar, a kao termostat za toplinu
MIDI 5V LED kontroler svjetla za Spielatron ili drugi MIDI Synth: 7 koraka (sa slikama)
MIDI 5V LED svjetlosni kontroler za Spielatron ili drugi MIDI Synth: Ovaj kontroler treperi trobojna LED svjetla za 50mS po bilješci. Plavo za G5 do D#6, crveno za E6 do B6 i zeleno za C7 do G7. Kontroler je ALSA MIDI uređaj tako da MIDI softver može izlaziti na LED diode istovremeno sa MIDI sintetičkim uređajem