Satura rādītājs:

Retro kontrolieris: 7 soļi
Retro kontrolieris: 7 soļi

Video: Retro kontrolieris: 7 soļi

Video: Retro kontrolieris: 7 soļi
Video: 15-часовой полет первым классом авиакомпании Japan Airlines | 🇯🇵Токио Куда 🇫🇷Париж 2024, Novembris
Anonim
Retro kontrolieris
Retro kontrolieris

Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.

Samen hebben we een muziek controller gemaakt dat muziek kan starten/stoppen, de pitch kan verhogen, kan terugspoelen en nog meer.

Ir ideāla kwam van van een kasete, ons doel bija savs kontrolieris, kas izveidoja informāciju par šo kaseti.

1. solis: Wat Heb Je Nodig?

Kas ir eb Je Je Nodigs?
Kas ir eb Je Je Nodigs?

Komponents

- 2 pogas;

- 2 potenciometri;

- 2 sapratām (1K aļņi);

- Arduino uno/nano

- Draadjes (zie elektronisch schema)

- Soldeerplaat

- MDF plāksne

Rīki

- Lāzera griezējs

- Kniptang

- Striptang

- Soldeerbout (met alvas)

Programmas

- ilustrators/indesign (Tekenprogramma)

- pļāvējs

- Apstrāde

- Arduino

2. darbība: koda apstrāde

Koda apstrāde
Koda apstrāde

/**

* Pamata skice, lai saņemtu sērijas ziņojumus no Arduino * un pārvērstu tos OSC ziņojumos Reaper * eddi * oktobris 2017 * *///////////////////// LIETOTĀJA PARAMETRI /////////////////// ////////

/ pārliecinieties, ka izmantojat to pašu pārraides ātrumu Arduino skices galīgajā int baudRate = 115200;

// Ejiet un meklējiet IP adresi Reaper, izmantojot OSC // Šī ir adrese, uz kuru apstrāde sūta un Reaper klausās. // Ievietojiet šo virkni remoteIP, šeit.

// galīgā virkne remoteIP = "192.168.1.43"; // piem. "127.0.0.1";

final String remoteIP = "vul hier ip in gevonden in pļaujmašīna";

// Ņemiet vērā sendPort un aizpildiet to Reaper. // Tas ir ports, uz kuru apstrāde sūta un Reaper klausās.

gala int listenPort = 11000, sendPort = 12000;

// ListenPort šeit ir paredzēts aktīvai atkļūdošanai.

// arī portNames ir šeit, lai atkļūdotu.

final String portName = "vul hier de portname in gevonden in Arduino";

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

////////////////////// LIETOTĀJA PARAMETRU BEIGAS //////////////////////// ////

importa apstrāde.sērija.*; importēt java.util.*;

importēt oscP5.*; importēt netP5.*;

OscP5 oscP5; NetAddress myRemoteLocation;

Sērijas commsPort; // Sērijas porta Būla ziņojumsArrived = false;

String ienākošais = "", IncomingOSCMessage = "";

gala simbols startChar = '*', endChar = '#'; final char contactCharacter = '|';

// Lai pārliecinātos, ka mēs sūtām tikai tos parametrus (vērtības), kas mainās // šie globālie mainīgie tiek delkēti šeit, bet šeit // tos nedrīkst inicializēt! HashMap oldParams, newParams, toSendParams;

// Mums ir jāsadala ziņojums katrā komatā spēkā neesošā procesāIncoming () {String resVec = ienākošais.split (","); // mēs iegūstam vārdu+vērtību pārus // tāpēc katram vārdam (+2)… mēģiniet {par (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // ievietojiet tos jaunajā Hashtable newParams.put (resVec , vērtība); }} // ja rodas kļūda, pieņemsim to parādīt un iziet. catch (Exception ex) {println ("Izņēmuma ziņojums:" + ex); printArray (resVec); Izeja(); }}

// Lai filtrētu mūsu ziņojumus/ * Mēs pārliecināmies, ka OSC izejas ziņojums ir tikai tad, kad * tiek mainīts ievades ziņojums (sērijas). * Tātad mēs filtrējam ienākošās vērtības, kas faktiski mainās. * Piezīme: mēs neizvairīsimies no lecīgām vērtībām *, piemēram, no akselerometriem vai attāluma sensoriem HashMap (); for (String key: newParams.keySet ()) {// ja atslēga jau ir, ja (oldParams.containsKey (key)) {// atslēga ir klāt un vērtība nav vienāda, tad atjauniniet, ja (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} cits {// atslēga nav vecos parametros, tāpēc ielieciet to! toSendParams.put (atslēga, newParams.get (atslēga)); } oldParams.put (atslēga, newParams.get (atslēga)); }}

void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ atslēga); myMessage.add (toSendParams.get (atslēga)); / * nosūtīt ziņojumu */ oscP5.send (myMessage, myRemoteLocation); }}

void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kad vēlamies izdrukāt logā void ShowIncoming () {// lai redzētu ienākošo ziņojumu, kā tas ir noteikts HashMap tekstā ("Ienākošais no Arduino", 20, 20); int y = 20; for (String key: newParams.keySet ()) {y = y+20; teksts (taustiņš, 20, y); teksts (newParams.get (atslēga), 300, y); }}

void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }

void setup () {izmērs (1000, 800); // Skatuves lieluma aizpildījums (255); fons (0); oldParams = jauns HashMap (); newParams = jauns HashMap (); // printArray (Serial.list ()); commsPort = jauns seriāls (šis, porta nosaukums, baudas ātrums);

/ * sākt oscP5, klausoties ienākošos ziņojumus */ oscP5 = jauns OscP5 (šis, listenPort);

/* myRemoteLocation ir NetAddress. NetAddress izmanto 2 parametrus, * IP adresi un porta numuru. myRemoteLocation tiek izmantots kā parametrs * oscP5.send (), nosūtot osc paketes uz citu datoru, ierīci, * lietojumprogrammu. lietojumu skatīt zemāk. pārbaudes nolūkos klausīšanās ports * un attālās atrašanās vietas adreses ports ir vienādi, tāpēc jūs * nosūtīsit ziņojumus atpakaļ uz šo skici. */ myRemoteLocation = jauna NetAddress (remoteIP, sendPort); }

void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = nepatiess; } showOsc (); }

void serialEvent (Serial commsPort) {// nolasiet baitu no seriālā porta: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // lūgt vairāk println ("sākot …"); pārtraukums; gadījums startChar: ienākošais = ""; pārtraukums; case endChar: messageArrived = true; // println ("ziņojuma beigas"); pārtraukums; noklusējums: ienākošais += inChar; pārtraukums; }}

/* ienākošais osc ziņojums tiek pārsūtīts uz metodi oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // iegūt 1. osc argumentu

IncomingOSCMessage + = "\ n" + String.format ("### saņēma osc ziņojumu:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", vērtība); println (IncomingOSCMessage); }

3. darbība: kods Arduino

Kods Arduino
Kods Arduino

/* Šis kods ir pamata skice saziņai ar apstrādi, izmantojot seriālu.

Tas ir plāns, kurā varat ievietot savu kodu, kas norādīts jūsu pogām, potenciometriem vai sensoriem.

Tam ir rokasspiediens, lai pārliecinātos, ka mums ir kontakts, un tiek noteikts saziņas formāts

Ir svarīgi ziņojumu veidot tādā pašā veidā, lai apstrāde zinātu, kā to dekonstruēt un nosūtīt pareizos OSC ziņojumus mūsu DAW

izgatavots darba kolekcijai AV&IT oktobris 2017

koda izlīdzināšana, ko izveidoja 2007. gada 22. aprīlī David A. Mellis, 2012. gada 9. aprīlī modificēja Tom Igoe

*/

/ bodu ātrums const garš baudRate = 115200;

// laiks gaidīt ms starp aptaujām līdz tapām const int loopPauseTime = 200; // mili sekundes

// sākuma un beigu vērtības ziņojumam, kas nosūtīts uz Serial const String startString = "*", endString = "#";

const char contactCharacter = '|';

// pin id's const int pogaPin1 = 2; const int pogaPin2 = 5; const int numReadings = 5; // likmes van izlīdzināšana

int pitchReading = A1; int speedReading = A2; int infraLasīšana = A3;

// citi globālie mainīgie int buttonState1 = 0; int buttonState2 = 0; // mainīgais spiedpogas statusa pludiņa sensora nolasīšanaiVērtība1 = 0; pludiņa sensorsVērtība2 = 0; pludiņa sensorsValue3 = 0;

// int lasījumu izlīdzināšana [numReadings]; // nolasījumi no analogās ieejas int readIndex3 = 0; // pašreizējā rādījuma indekss int total3 = 0; // vidējais tekošais peldošais rādītājs3 = 0; // Vidējais

// Šī funkcija mums ir nepieciešama, lai izveidotu kontaktu ar apstrādes skici // Saglabājiet to šeit void createContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // nosūtīt simbolu un gaidīt atbildi… delay (loopPauseTime); } Sērijas.lasījums (); }

void setup () {// iestatiet pinModes visām tapām pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);

// inicializēt Serial comms Serial.begin (baudRate); kamēr (! Seriāls); // izlīdzināšana (int thisReading = 0; thisReading <numReadings; thisReading ++) {lasījumi [thisReading] = 0; }

// gaidiet rokasspiedienu izveidotContact (); }

void loop () {// aptaujājiet visas tapas un kartējiet nolasījumu uz atbilstošo diapazona poguState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);

// ienākošo vērtību kartēšana uz nepieciešamajām vērtībām sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = karte (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = karte (sensorValue3, 0, 700, 50, 100);

// izlīdzināšanas sensors: total3 = total3 - rādījumi [readIndex3]; // lasīt no sensora: rādījumi [readIndex3] = sensorValue3; // pievienojiet rādījumu kopsummai: total3 = total3 + rādījumi [readIndex3]; // pāriet uz nākamo masīva pozīciju: readIndex3 = readIndex3 + 1;

// ja mēs esam masīva beigās… if (readIndex3> = numReadings) {//… iesaiņojiet līdz sākumam: readIndex3 = 0; } // aprēķināt vidējo: vidēji3 = (kopā3 / numReadings); // izlīdzināšanas sensors

Serial.print (startString); // sākt ziņojumu secību // noslaucīt visus nosaukumus, vērtību pārus, atdalot tos ar komatiem Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");

Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");

Serial.print ("infrasensors"); Serial.print (","); Sērijas nospiedums (vidēji3/100); Serial.print (",");

Serial.print ("knop 1 in2 wit"); Serial.print (","); Serial.print (buttonState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (buttonState2);

// rakstīt ziņojuma beigas Serial.print (endString);

// pagaidi kādu laiku..

kavēšanās (loopPauseTime); }

4. solis: pļāvējs

Labības pļaujmašīna
Labības pļaujmašīna

1. solis: Ga bovenaan naar Iespējas> Prefrences

2. solis: Ga prefrences naar Control/OSC/web en druk op Add

3. solis: Kies bij Control virsmas režīms vai OSC (Open Sound Control)

4. solis: Vul je device name in, vink Recieve on port aan en vul in water er in processing no Sendport staat

5. solis. Kopēšanas rīks IP uzņēmumā tiek apstrādāts

6. solis: Druk op ok en de controller is verbonden met Reaper

5. solis: Behuizing

Behuizing
Behuizing

Šķirne: 170 mm

Garums: 90 mm

Hoogte 30 mm

Knoppen: 16 mm (diametrs

Potenciometri: 3 mm (diametrs)

Afstand sensors: Breedte 2,9 mm

Garums 0,8 mm

Materiāls: MDF (3 mm)

6. solis: Elektronica

1. solis:

Verbind de ground lv 5 voltu van Arduino un maizes dēlis

2. solis:

Verbind pin A0 un potenciāls 1

Verbind pin A1 un potenciāls 2

Verbind pin A3 ar infrasarkano staru sensoru.

Verbind pin A2 ir lipīga poga.

Verbind pin A5 un lipīgā poga.

7. solis: Medewerkers

Medewerkers
Medewerkers

- Maijs El Baba

- Arno Gorisens

- Mičiēls De Vandelaers

Ieteicams: