Sadržaj:
- Korak 1: Demonstracijski video
- Korak 2: Pojedinosti o svjetlosnim senzorima
- Korak 3: Pojedinosti o ultrazvučnom senzoru HC-SR04
- Korak 4: Krug Aduino
- Korak 5: I/O popis
- Korak 6: Aduino kod
- Korak 7: Osnove MIDI komunikacije
Video: EAL - Arduino MIDI kontroler: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Proizvođač Søren Østergaard Petersen, OEAAM16EDA
Ova instrukcija opisuje MIDI kontroler zasnovan na arduinu. Ovo je školski projekt. Rukom možete reproducirati jednostavne melodije putem MIDI veze i spojenog MIDI instrumenta (ili kao u ovom slučaju prijenosnog računala sa softverskim softverom). Možete svirati note iz C-dur ljestvice, 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: Demonstracijski video
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 tvore dvostruki senzorski sustav 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 koristi se u programu Arduino za izračun i postavljanje odgovarajuće vrijednosti bilješke koja se pakira u poruku MIDI Note On i odašilje na MIDI sučelju. MIDI izlazno sučelje koristi šesterokutni pretvarač 74HC14 i prilično je standardni krug. MIDI komunikacija koristi serial1, standardni serijski port se koristi za ispravljanje pogrešaka.
Kad se ruka pomakne ravno prema gore i dalje od svjetlosnog snopa, gornji svjetlosni senzor ponovno osjeti svjetlosni snop i poruka MIDI Note Off je zapakirana i prenesena na MIDI izlaz.
Područje za igru između senzora je oko 63 cm, a ukupna duljina MIDI kontrolera je oko 75 cm.
Korak 2: Pojedinosti o svjetlosnim senzorima
Dva svjetlosna senzora montirana su jedan na drugi kako bi tvorili dvostruki senzorski sustav. Sprječava lažno aktiviranje ako se pravilno koristi u softveru. Svaki svjetlosni senzor sastoji se od fotootpornog modula ugrađenog u standardnu električnu cijev od 16 mm. 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. Svjetlo ne smije doprijeti do senzora s leđa. Senzori svjetla imaju ugrađene 10k pull-up otpornika.
Korak 3: Pojedinosti o ultrazvučnom senzoru HC-SR04
Ultrazvučni senzor HC-SR04 učvršćen je na drugom kraju MIDI kontrolera. I ovdje je postavljena jaka svjetiljka koja stvara potreban snop svjetlosti.
Korak 4: Krug Aduino
MIDI izlazni krug u osnovi je 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 ploči. Shema je izrađena u Fritzingu, pdf kopiju visoke razlučivosti 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.
Korišteni materijali:
1 kom Arduino MEGA 2560
2 kom. Foto otpornik (LDR) s 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 slaba struja 2mA
1 kom keramički kondenzator 100nF (za odvajanje napajanja, izravno na priključcima za napajanje 74HC14)
Oglasna ploča ili prototip PCB -a
2 kom 16 mm električne cijevi, duljine 65 mm
1 komad drveta, duljine 75 cm
Ljepljiva traka
Žice
Korak 5: I/O popis
Korak 6: Aduino kod
Skica test_Midi6 koristi biblioteku NewPing koju morate uključiti u svoje programsko okruženje Arduino za korištenje ultrazvučnog senzora HC-SC04. Skica je komentirana na danskom, oprostite. Kako bi skica bila dobro strukturirana, zasebne funkcije se sastoje od različitih logičkih dijelova skice, a globalne varijable se uglavnom izbjegavaju. Tok programa vizualiziran je u dijagramu toka toka MIDI kontrolera u pdf -u.
// 15.05.2017 verzija: test_Midi6
// Søren Østergaard Petesen // Arduino MEGA 2560 // Dette program udgør en simpli MIDI controller som can can styre and extern MIDI enhed, f.eks and softsynt på en PC. // MIDI kontroler može poslati tonanslag (napomena o kommandu) hhv. (napomena off 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 en dobbelt LDR senzor, da der skal laves en sikker // detekcija af både når hånden lander på brættet (napomena na), samt når hånden fjernes igen (napomena isključena). // MIDI komandno "bilješka o" og "bilješka isključena" najbolje od 3 bajta poslana na serijski1 prijenos // u hardverskom opbyggede MIDI sučelju. // Tonehøjden bestemmes vha ultralydssensor HC-SR04 #include // bibliotek til den anvendte ultralydssensor HC-SR04 #define TRIGGER_PIN 3 // Arduino pin do okidača pin na ultrazvučni senzor #define ECHO_PIN 2 // Arduino pin til echo pin på ultrasonic senzor # define 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); // Stvaranje NewPing objekta. int Senspin1 = 53; // Donji LDR1 føler int Senspin2 = 52; // Øverste LDR2 bajt baterija MIDIByte2; // Variabel deklaracija za MIDIByte2 bool klar_note_on = 1; // Variabel deklaration for klar_note_on, styler afsendelse af note on kommando. Første kommando er en note on kommando bool klar_note_off = 0; // Varijabel deklaracija za klar_note_off, styler nakon dodavanja bilješke isključeno kommando void setup () {pinMode (Senspin1, INPUT); // sæt osjetnik ulaza pinMode (Senspin2, INPUT); // sæt senzorski ulaz Serial1.begin (31250); // Serial1 bruges do MIDI komunikacije: 31250 bit/sekundt Serial.begin (9600); // serijski monitor, do testa} void loop () {bool Sensor1 = digitalRead (Senspin1); // Læs LDR1 - ispod LDR bool senzora2 = digitalRead (Senspin2); // nalazi LDR2 - premjesti LDR ako (Sensor1 && klar_note_on) // hvis LDR1 aktivan i oglavljen do bilješke na {byte Note_Byte = Hent_tonehojde (); // Poslali ton højde putem ultralyds senzora MIDIByte2 = Hent_MidiByte2 (Note_Byte); // Poslao MidByte2, broj MIDI bilješke, 0xFF izvan raspona Send_Note_On (MIDIByte2); // kald Send_Note_On function klar_note_on = 0; // der skal kun šalje en bilješku o kommandu 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); // šalje bilješku off 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; }} bajt Hent_MidiByte2 (bajt NoteByte) {// Denne funkcija vraća MIDI broj bilješke, valgt ud fra NoteByte bajt MIDIB2; switch (NoteByte) // njezino definiranje hvilken værdi MIDIByte2 skal ima ud fra værdien af Note_Byte {slučaj 0: {MIDIB2 = 0x3C; // tonen 'C'} prekid; slučaj 1: {MIDIB2 = 0x3E; // tonen 'D'} break; slučaj 2: {MIDIB2 = 0x40; // tonen 'E'} break; slučaj 3: {MIDIB2 = 0x41; // tonen 'F'} prekid; slučaj 4: {MIDIB2 = 0x43; // tonen 'G'} prekid; slučaj 5: {MIDIB2 = 0x45; // tonen 'A'} prekid; slučaj 6: {MIDIB2 = 0x47; // tonen 'B'} prekid; slučaj 7: {MIDIB2 = 0x48; // tonen 'C'} prekid; zadano: {MIDIB2 = 0xFF; // izvan dometa}} return MIDIB2; // povrat MIDI bilješke broj} bajt Hent_tonehojde () {// Denne funkcije dostavljaju rezultate dobivene od ultralydsmålingen nepotpisanog int Tid_uS; // målt tid i uS byte Afstand; // beregnet afstand i cm byte resultat; // inddeling af spille område const float Omregningsfaktor = 58,3; // 2*(1/343 m/s)/100 = 58, 3uS/cm, der ganges med 2 da tiden er summen af tiden frem og tilbage. Tid_uS = sonar.ping_median (medijan); // Pošalji ping, få tid return i uS, gennemsint af Median målinger Afstand = Tid_uS / Omregningsfaktor; // Omregn tid till afstand i cm (0 = izvan udaljenosti) resultat = Afstand / 8; // Beregn resultat return resultat; // Rezultat povratnika} void Send_Note_On (byte tonenr) {// Denne funktion sender en note on kommando på MIDI interfacet 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 på MIDI sučelje const byte kommando = 0x80; // Bilješka o kommando på MIDI kanalu 1 const byte volumen = 0xFF; // volumen / Velocity = 127 Serial1.write (kommando); // pošalji bilješku off kommando Serial1.write (tonenr); // šalje broj tona Serial1.write (volumen); // slanje volumena (brzina)}
Korak 7: Osnove MIDI komunikacije
MIDI (digitalno sučelje glazbenih instrumenata) univerzalni je serijski komunikacijski protokol za povezivanje elektroničkih glazbenih 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 o naredbi:
1. slanje bajtova = 0x90 što znači napomenu o naredbi na MIDI kanalu 1
2. slanje bajtova = 0xZZ ZZ je broj bilješke, koristim raspon od 0x3C do 0x48
3. slanje bajtova = 0xFF FF = 255 što znači maksimalni volumen, raspon 0x00 do 0xFF
b) Napomena Naredba za isključivanje: 1. byte send = 0x80 što znači naredba note off na MIDI kanalu 1
2. slanje bajtova = 0xZZ ZZ je broj bilješke, koristim raspon od 0x3C do 0x48
3. slanje bajtova = 0xFF FF = 255 što znači maksimalni volumen, raspon 0x00 do 0xFF
Preporučeni:
DIY MIDI KONTROLER USB Plug & Play (NADOGRADI NEOPIXELSKI PRSTEN): 12 koraka
DIY MIDI KONTROLER USB Plug & Play (NADOGRADI NEOPIXELSKI ZVON): Strastveni MAO i elektronička glazba, ali i budući da je moguće stvoriti personalizirano Midi sučelje, napravio sam mine 6 potenciometra i 12 gumba (uključivanje / isključivanje), ali da 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 usporednik, to bi trebalo biti dostupno prilično jednostavno i jeftino. Ovaj projekt može
Lune - MIDI kontroler s Arduinom (za DJ -a ili glazbenika): 5 koraka (sa slikama)
Lune - MIDI kontroler s Arduinom (za DJ -a ili glazbenika): 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, gljive kamenice, 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 stvar Kombucha, 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 regulator treperi trobojna LED svjetla za 50 mS po bilješci. Plavo za G5 do D#6, crveno za E6 do B6 i zeleno za C7 do G7. Upravljač je ALSA MIDI uređaj pa MIDI softver može izlaziti na LED diode istovremeno s MIDI sintetičkim uređajem