Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10
Hyrje:
Unë jam i ri në punën me Arduino, por shpresoj të zgjeroj njohuritë e mia duke mësuar të tjerët dhe duke marrë reagime. Ky është një kontrollues shumë themelor MIDI me 4 butona dhe një potenciometër. Skica e këtij projekti duket kështu:
1. Ndërtoni tabelën e bukës
2. Ngarko Skicën në Arduino
3. Kuptoni MIDI pa flokë dhe lak të brendshëm MIDI (loopbe1)
4. drejtoni MIDI -në tuaj në një DAW (Ableton)
Furnizimet
1 x Arduino Mega 2560
1 x Bordi i Bukës
1 x Kabllo USB
1 x Potenciometër
4 x Butona për takt
4 rezistente 120Ohm
14 x kabllo kërcyes për bordin e bukës
Hapi 1: Ndërtimi i tabelës së bukës
Lidhni tabelën tuaj të bukës në mënyrë që të gjithë përbërësit të përputhen me imazhin 1 më sipër. Çdo buton duhet të duket njësoj si imazhi 2. Hyrjet e butonave janë 2, 3, 4 dhe 5 në Arduino dhe kunja e mesme e potenciometrit është e lidhur me hyrjen ANALOG A0.
Hapi 2: Ngarkimi i Skicës
Kopjoni dhe ngjisni kodin më poshtë në Arduino IDE. Zgjidhni tabelën e duhur nën "mjetet" dhe ngarkoni skicën në Arduino.
byte noteON = 144; // shënim në komandëbajt shënim; // ruajtje për butonin aktualisht duke luajtur butonin intPin1 = 2; butoni intPin2 = 3; butoni intPin3 = 4; butoni intPin4 = 5; int potPin = A0; boolean currentState = LOW; // goditje për gjendjen e butonit aktual boolean lastState = LOW; // ruajtje për gjendjen e butonit të fundit void setup () {pinMode (buttonPin1, INPUT); pinMode (butoniPin2, HYRJE); pinMode (butoniPin3, HYRJE); pinMode (buttonPin4, INPUT); // këtë herë ne do ta vendosim pinin si INPUT Serial.begin (9600); // inicializojmë lidhjen serike} loop void () {int PotVal = analogRead (potPin); shpejtësia e bajtit = harta (PotVal, 0, 1023, 0, 127); currentState = digitalRead (butoniPin1); nëse (aktual Shteti == LART && e funditShtetëra == E LART) {MIDImessage (shënimONON, 60, shpejtësia); // ndizni shënimin 60 me 127 vonesë shpejtësie (200); // formë e papërpunuar e zbritjes së butonit} tjetër nëse (aktualShtetëra == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // fikni vonesën e shënimit 60 (2); // formën e papërpunuar të zbritjes së butonit} lastState = currentState; currentState = digitalRead (butoniPin2); if (currentState == HIGH && lastState == LOW) {// nëse butoni sapo është shtypur MIDImessage (shënimONON, 61, shpejtësia); // ndizni shënimin 60 me 127 shpejtësi vonesë (200); // forma e papërpunuar e butonit debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // shlyeni shënimin 60 vonesë (2); // formë e papërpunuar e zbritjes së butonit} lastState = currentState; currentState = digitalRead (butoniPin3); nëse (currentState == LART && lastState == LOW) {// nëse butoni sapo është shtypur MIDImessage (shënimONON, 62, shpejtësia); // ndizni shënimin 60 me 127 vonesë shpejtësie (200); // forma e papërpunuar e butonit debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // shlyeni shënimin 60 vonesë (2); // formë e papërpunuar e zbritjes së butonit} lastState = currentState; currentState = digitalRead (butoniPin4); if (currentState == HIGH && lastState == LOW) {// nëse butoni sapo është shtypur MIDImessage (shënimONON, 63, shpejtësia); // ndizni shënimin 60 me 127 vonesë shpejtësie (200); // forma e papërpunuar e butonit debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // fikni vonesën e shënimit 60 (2); // formën e papërpunuar të zbërthimit të butonit} lastState = currentState; } // dërgoni mesazh MIDI të pavlefshëm MIDImessage (komanda byte, të dhënat e bajtit1, të dhënat e bajtit2) {Serial.write (komanda); Serial.shkruaj (të dhënat1); Serial.shkruaj (të dhënat2); }
Unë jam ende shumë i ri për të shkruar kodin në përgjithësi….. ata me pak më shumë përvojë ndoshta mund ta pastrojnë këtë…
Hapi 3: Kuptimi i MIDI pa flokë dhe sytheve të brendshme MIDI
Arduino duhet të kalojë përmes një ure serike si MIDI pa flokë, pastaj përmes një lak të brendshëm MIDI siç është loopbe1 (ose autobusi IAC për Mac).
Shënim: nuk mund të ngarkoni një skicë në Arduino ndërsa është e lidhur me urën seriale MIDI pa flokë.
Zgjidhni Arduino -n tuaj në portën seriale MIDI pa flokë dhe loopbe1 ose IAC Bus në MIDI jashtë.
Shënim: sigurohuni që heshtja të mos jetë e ndezur kur përdorni loopbe1.
Hapi 4: Lidhja me DAW -in tuaj
Nëse po merrni sinjal në aplikacionin MIDI pa flokë kur shtypni një buton në tabelën e bukës (dritat do të ndizen) duhet të jeni në gjendje të dërgoni të dhëna MIDI në një DAW. Kam përdorur Ableton, por çdo DAW duhet të funksionojë. Sigurohuni që laku juaj i brendshëm MIDI (loopbe1) është aktivizuar në preferencat tuaja DAW (në Ableton dëshironi që "track" të aktivizohet). Tjetra, zgjidhni një nga hyrjet tuaja të pista MIDI në lakin MIDI (loopbe1) siç tregohet në imazhin e mësipërm.
Hapi 5: Luaj
Butonat tani do të funksionojnë si çdo kontrollues tjetër MIDI! Potenciometri do të ndryshojë shpejtësinë e shënimeve që dërgohen në DAW. Videoja (shumë e errët …) më lart tregon një tingull të pianos në veprim!
Recommended:
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: 4 hapa
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: Gjatë një pandemie, një mënyrë për të zvogëluar transmetimin e virusit është të maksimizoni distancën fizike midis njerëzve. Në dhoma ose dyqane, do të ishte e dobishme të dini se sa njerëz janë në hapësirën e mbyllur në çdo kohë. Ky projekt përdor një palë
Kontrolluesi i lojërave të bazuara në Arduino - Kontrolluesi i lojërave Arduino PS2 - Duke luajtur Tekken Me DIY Arduino Gamepad: 7 hapa
Kontrolluesi i lojërave të bazuara në Arduino | Kontrolluesi i lojërave Arduino PS2 | Luajtja e Tekken Me DIY Arduino Gamepad: Përshëndetje djema, të luani lojëra është gjithmonë argëtuese, por të luani me Kontrolluesin tuaj të personalizuar të lojës DIY është më argëtuese. Pra, ne do të bëjmë një Kontrollues të lojës duke përdorur arduino pro micro në këtë udhëzues
Kontrolluesi Robotik ROS me bazë Matlab: 9 hapa
Kontrolluesi Robotik ROS me bazë Matlab: Që kur kam qenë fëmijë, kam ëndërruar gjithmonë të jem Iron Man dhe ende e bëj këtë. Iron Man është një nga ata personazhe që është realisht i mundshëm dhe thjesht them që aspiroj të bëhem Iron Man një ditë edhe nëse njerëzit qeshin me mua ose thonë se është e pamundur
Termometër infra të kuqe pa kontakt me bazë Arduino - Termometri me bazë IR duke përdorur Arduino: 4 hapa
Termometër infra të kuqe pa kontakt me bazë Arduino | Termometri i bazuar në IR duke përdorur Arduino: Përshëndetje djema në këtë udhëzues ne do të bëjmë një termometër pa kontakt duke përdorur arduino. Meqenëse ndonjëherë temperatura e lëngut/ngurtës është shumë e lartë ose shumë e ulët dhe pastaj është e vështirë të kontaktosh me të dhe të lexosh temperatura atëherë në atë skenë
Kontrolluesi i dritës MIDI 5V LED Strip për Spielatron ose MIDI Synth tjetër: 7 hapa (me fotografi)
Kontrolluesi i dritës MIDI 5V LED për Spielatron ose MIDI Synth tjetër: Ky kontrollues ndez dritat me tre ngjyra LED për 50mS për shënim. Blu për G5 në D#6, e kuqe për E6 në B6 dhe jeshile për C7 në G7. Kontrolluesi është një pajisje ALSA MIDI kështu që programi MIDI mund të dalë në LED në të njëjtën kohë si një pajisje sintetike MIDI