Orodha ya maudhui:

Mdhibiti wa Retro: Hatua 7
Mdhibiti wa Retro: Hatua 7

Video: Mdhibiti wa Retro: Hatua 7

Video: Mdhibiti wa Retro: Hatua 7
Video: Праздник. Новогодняя комедия 2024, Novemba
Anonim
Mdhibiti wa Retro
Mdhibiti wa Retro

Je! Unapata habari zaidi kwa wanafunzi wanaosoma Multimedia & Communicatietechnologie (Multec) kutoka Erasmushogeschool Brussel.

Samen hebben tunaona mtawala wa mziki kwa njia ya msingi wa kuanza au kuacha, kutia alama kwenye uwanja, au kwa njia nyingine.

Kila mtu anapaswa kumiliki kaseti, ikiwa ni pamoja na dhibiti alikuwa mtawala.

Hatua ya 1: Wat Heb Je Nodig?

Wat Heb Je Nodig?
Wat Heb Je Nodig?

Sehemu

- Vifungo 2;

- mita 2 za Potentio;

- 2 weerstanden (1K elk);

- Arduino uno / nano

- Draadjes (zie elektronisch schema)

- Soldeerplaat

- Bamba la MDF

Zana

- Lasercutter

- Kniptang

- Striptang

- Soldeerbout (bati iliyokutana)

Programu

- Ilustrator / indesign (Tekenprogramma)

- Kuvuna

- Inasindika

- Arduino

Hatua ya 2: Usindikaji wa Nambari

Usindikaji wa Kanuni
Usindikaji wa Kanuni

/**

* Mchoro wa kimsingi wa kupokea ujumbe wa Serial kutoka Arduino * na kuzitafsiri hizo kuwa barua-pepe za OSC kwa wavunaji * * Utahitaji kurekebisha VITUMBISHO VYA USER * na utahitaji kusakinisha Maktaba: oscP5 * * iliyoundwa kwa werkcollege AV&IT * na annoo bob eddi * oct 2017 * * / ////////////////////// MATUMIZI YA WATUMIAJI ///////////////////////// /////////

/ hakikisha unatumia kiwango sawa cha baud kwenye mchoro wako wa Arduino mwisho int baudRate = 115200;

// Nenda utafute anwani ya IP katika Reaper wakati unatumia OSC // Hii ndiyo anwani Inayotumia kushughulikia na Kuvuna inasikiliza. // Weka kamba hii kwenye kijijiniIP, hapa.

// mwisho Kamba ya mbaliIP = "192.168.1.43"; // mfano. "127.0.0.1";

kamba ya mwishoIP = "vul hier ip katika gevonden katika mvunaji";

// Angalia PostPort na ujaze hii katika Reaper. // Huu ndio Usindikaji wa bandari unaotuma na Kuvuna unasikiliza.

mwisho int listenPort = 11000, sendPort = 12000;

// ThePortPort hapa ni kufanya utatuzi kikamilifu.

// bandariMajina yako hapa kutatua pia.

String portName ya mwisho = "jina la jina la jina katika gevonden huko Arduino";

// mwisho String portName = "COM6"; // "/ dev / ttyUSB0";

////////////////////// END of USER PARAMETERS ////////////////////////////////// ////

usindikaji wa kuagiza.serial. *; kuagiza java.util. *;

kuagiza oscP5. *; kuagiza netP5. *;

OscP5 oscP5; NetAddress myRemoteLocation;

Serial commsPort; // Ujumbe wa boolean wa bandari ya serialIliwasili = uwongo;

Kamba inayoingia = "", IncomingOSCMessage = "";

mwisho char kuanzaChar = '*', endChar = '#'; mawasiliano ya mwisho ya charCharacter = '|';

// Kuhakikisha tunatuma tu vigezo (maadili) zinazobadilisha // hizi anuwai za ulimwengu zimesimamishwa hapa lakini hazipaswi kuzinduliwa hapa! HashMap oldParams, newParams, toSendParams;

// Tunahitaji kugawanya ujumbe katika kila mchakato wa utupu wa komaKuingia () {String resVec = incoming.split (","); // tunapata jozi za thamani ya jina // hivyo kwa kila jina (+ 2)… jaribu {kwa (int i = 0; i <resVec.length; i + = 2) {float value = Float.parseFloat (resVec [i + 1]); // ziweke kwenye Hashtable newParams.put (resVec , thamani); }} // ikiwa hitilafu inatokea, wacha tuigundue na tuondoke. kukamata (Exception ex) {println ("Ujumbe wa Isipokuwa:" + ex); chapaArray (resVec); Utgång(); }}

// Kuchuja ujumbe wetu / * Tunahakikisha kuna ujumbe wa OSC tu wakati * ujumbe wa kuingiza (Serial) unabadilika * Hiyo ni: ikiwa tutageuka / bonyeza kitufe na inabadilisha thamani. * Kwa hivyo tunachuja nambari zinazoingia ambazo hubadilika * kumbuka: hatutaepuka maadili ya kuruka * kama hutoka kwa mfano accelerometers au sensorer za umbali * utahitaji kulainisha hizo wewe mwenyewe katika Arduino * / batili filterParams () {toSendParams = new HashMap (); ya (Kitufe cha kamba: Usawa (newParams.get (ufunguo))) {toSendParams.put (key, newParams.get (key)); }} mwingine {// ufunguo haupo katika vifungu vya zamani, kwa hivyo uweke! toSendParams.put (ufunguo, newParams.get (ufunguo)); } OldParams.put (ufunguo, newParams.get (ufunguo)); }}

utupu makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/" + key); myMessage.add (toSendParams.get (ufunguo)); / * tuma ujumbe * / oscP5.send (myMessage, myRemoteLocation); }}

batili translateMessage () {processIncoming (); filterParams (); fanyaOSC (); } // Wakati tunataka kuchapisha kwenye dirisha tupu la ShowIncoming () {// kuona ujumbe unaoingia, kama ilivyo kwenye maandishi ya HashMap ("Incoming from Arduino", 20, 20); int y = 20; kwa (Kitufe cha Kamba: newParams.keySet ()) {y = y + 20; maandishi (ufunguo, 20, y); maandishi (newParams.get (ufunguo), 300, y); }}

batili showOsc () {maandishi (IncomingOSCMessage, 300, 200); InayoOSCMessage = ""; }

usanidi batili () {saizi (1000, 800); // Ukubwa wa hatua ya kujaza (255); msingi (0); oldParams = mpya HashMap (); newParams = mpya HashMap (); // kuchapaArray (Serial.list ()); commsPort = mpya Serial (hii, portName, baudRate);

/ * anza oscP5, kusikiliza ujumbe unaoingia * / oscP5 = OscP5 mpya (hii, sikilizaPort);

/ * myRemoteLocation ni NetAddress. NetAddress inachukua vigezo 2, * anwani ya ip na nambari ya bandari. myRemoteLocation hutumiwa kama kigezo katika * oscP5.send () wakati wa kutuma pakiti za osc kwa kompyuta nyingine, kifaa, * programu. matumizi angalia hapa chini. kwa madhumuni ya upimaji bandari ya kusikiliza na bandari ya anwani ya eneo la mbali ni sawa, kwa hivyo utatuma * ujumbe kwenye mchoro huu. * / myRemoteLocation = NetAddress mpya (remoteIP, sendPort); }

chora batili () {if (messageArrived) {background (0); translateMessage (); Onyesha Inayoingia (); messageArrived = uongo; } onyeshaOsc (); }

void serialEvent (Serial commsPort) {// soma ka kutoka bandari ya serial: char inChar = commsPort.readChar (); kubadili (inChar) {kesi contactCharacter: commsPort.write (contactCharacter); // kuuliza println zaidi ("kuanzia …"); kuvunja; kesi ya kuanzaChar: incoming = ""; kuvunja; mwisho wa kesiChar: messageArrived = kweli; // println ("mwisho wa msg"); kuvunja; chaguo-msingi: inayoingia + = inChar; kuvunja; }}

/ * ujumbe unaoingia wa osc hupelekwa kwa njia ya oscEvent. * / void oscEvent (OscMessage theOscMessage) {thamani ya kuelea = theOscMessage.get (0). FloatValue (); // pata hoja ya 1 osc

IncomingOSCMessage + = "\ n" + String.format ("### ilipokea ujumbe wa osc:" + "addrpattern:" + theOscMessage.addrPattern () + ":% f", value); println (InayoOSCMessage); }

Hatua ya 3: Nambari Arduino

Nambari ya Arduino
Nambari ya Arduino

/ * Nambari hii ni mchoro wa msingi wa kuwasiliana na Usindikaji kupitia Serial.

Ni ramani ambayo unaweza kuweka nambari yako mwenyewe iliyoainishwa kwa vifungo vyako, potentiometers au sensorer.

Inapeana mikono ili kuhakikisha kuwa tuna mawasiliano na muundo ambao tunawasiliana umeamuliwa

Ni muhimu kujenga ujumbe kwa njia hiyo hiyo, ili Usindikaji ujue kuijenga upya na kutuma ujumbe sahihi wa OSC kwa DAW yetu

imetengenezwa kwa werkcollege AV&IT oct 2017

laini ya nambari iliyoundwa 22 Aprili 2007 na David A. Mellis ilibadilishwa 9 Aprili 2012 na Tom Igoe

*/

/ kiwango cha baud const baud ndefu Kiwango = 115200;

// wakati wa kusubiri kwa ms kati ya kura hadi pini const int loopPauseTime = 200; sekunde // milli

// maadili ya kuanza na kumaliza kwa ujumbe uliotumwa kwenye Serial const String startString = "*", endString = "#";

mawasiliano ya const charCharacter = '|';

// kitufe cha siri cha siri cha pin pin = 1; kifungo cha int intPin2 = 5; usomaji wa hesabu = 5; // kiwango van laini

kusoma kwa sauti = A1; kasi ya kusoma> A2; kusoma infra = A3;

// vigeuzi vingine vya ulimwengu int buttonState1 = 0; kifungo cha ndaniState2 = 0; // kutofautisha kwa kusoma sensorer ya hali ya kifungo cha kushinikizaValue1 = 0; sensor ya kueleaValue2 = 0; sensor ya kueleaValue3 = 0;

// kulainisha usomaji wa ndani [kusoma kwa hesabu]; // masomo kutoka kwa pembejeo ya analog int readIndex3 = 0; // faharisi ya usomaji wa sasa wa int3 = 0; // jumla ya kuelea wastani3 = 0; // wastani

// Tunahitaji kazi hii kuanzisha mawasiliano na Mchoro wa Usindikaji // Itunze hapa batili kuanzishaContact () {wakati (Serial.available () <= 0) {Serial.print (contactCharacter); // tuma char na subiri majibu… kuchelewa (loopPauseTime); } Serial.read (); }

kuanzisha batili () {// weka alama za siri kwa pini zote za PinMode (buttonPin1, INPUT); pinMode (kifungoPin2, INPUT); pinMode (Kusoma lami, INPUT); pinMode (kasi ya Kusoma, INPUT); pinMode (infraReading, INPUT);

// anza serial Comms Serial.begin (baudRate); wakati (! Serial); // kulainisha kwa (int thisReading = 0; hiiReading <numReadings; thisReading ++) {masomo [hiiReading] = 0; }

// subiri kusalimiana kwa mikonoContact (); }

kitanzi batili () {// chagua pini zote na ramani usomaji kwenye kitufe kinachofaa State1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = AnalogRead (Kusoma lami); sensorValue2 = AnalogRead (kusoma kwa kasi); sensorValue3 = AnalogRead (infraReading);

// kupanga ramani zinazoingia kwa sensorer muhimuValue1 = ramani (sensorValue1, 0, 1023, 0, 100.0) / - 100.0; sensorValue2 = ramani (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = ramani (sensorValue3, 0, 700, 50, 100);

// sensorer ya kulainisha: jumla3 = jumla3 - masomo [somaIndex3]; // kusoma kutoka kwa sensorer: masomo [readIndex3] = sensorValue3; // ongeza usomaji kwa jumla: jumla3 = jumla3 + masomo [somaIndex3]; // mapema kwa nafasi inayofuata katika safu: somaIndex3 = somaIndex3 + 1;

// ikiwa tuko mwisho wa safu… ikiwa (readIndex3> = numReadings) {//… funga mpaka mwanzo: readIndex3 = 0; } // mahesabu wastani: wastani3 = (jumla3 / hesabu za kusoma); // sensorer ya kulainisha

Serial.print (startString); // kuanza mlolongo wa ujumbe // wirte jina lote, jozi za thamani, zilizotengwa na koma za serial.print ("potentio1"); Serial.print (","); Rekodi ya serial (sensorValue1); Serial.print (",");

Serial.print ("potentio2"); Serial.print (","); Printa ya serial (sensorValue2); Serial.print (",");

Serial.print ("infra-sensor"); Serial.print (","); Printa ya serial (wastani3 / 100); Serial.print (",");

Serial.print ("knop 1 in2 wit"); Serial.print (","); Serial.print (kifungoState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (kifungoState2);

// andika mwisho wa ujumbe Serial.print (endString);

// subiri kwa muda..

kuchelewesha (loopPauseTime); }

Hatua ya 4: Kuvuna

Kuvuna
Kuvuna

Kamba ya 1: Chaguo za chaguzi za juu> Viambishi

Stap 2: Ga katika prerences na Control / OSC / web sw druk op Ongeza

Stap 3: Kies bij Control mode mode voor OSC (Open Sound Control)

Stap 4: Vul jina la kifaa ndani, vink Pokea kwenye bandari moja kwa moja katika usindikaji wa ngazi ya Sendport

Stap 5: Kopieer de Host IP itafikia wakati huu katika Usindikaji

Stap 6: Druk op ok en de de controller is nu verbonden met Reaper

Hatua ya 5: Kufurahi

Kutuliza
Kutuliza

Ufugaji: 170 mm

Urefu: 90 mm

Hoogte 30 mm

Knoppen: 16 mm (kipenyo

Mita za Potentio: 3 mm (kipenyo)

Sifa ya kuelewa: Breedte 2.9 mm

Urefu 0.8 mm

Vifaa: MDF (3mm)

Hatua ya 6: Elektronica

Kamba 1:

Verbind de ground en 5 volt van Arduino alikutana na ubao wa mkate

Kamba 2:

Pini ya kitenzi A0 ilikutana na nguvu 1

Pini ya kitenzi A1 ilikutana na nguvu 2

Pini ya Verbind A3 imekutana na sensa ya infrarood.

Pini ya kitenzi A2 imekutana na kitufe cha kunata.

Pini ya kitenzi A5 imekutana na kitufe cha kunata.

Hatua ya 7: Watazamaji

Wataalam wa kazi
Wataalam wa kazi

- Mayes El Baba

- Arno Gorissen

- Michiel De Wandelaer

Ilipendekeza: