Sisukord:

Retrokontroller: 7 sammu
Retrokontroller: 7 sammu

Video: Retrokontroller: 7 sammu

Video: Retrokontroller: 7 sammu
Video: Скидывай друзьям, пускай пользуются! #тюнинг #авто #машина 2024, September
Anonim
Retro kontroller
Retro kontroller

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

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

On idee kwam van van een cassette, ons doel was om een controller te maken dat lijkt op een cassette.

Samm: Wat Heb Je Nodig?

Mis on Heb Je Nodig?
Mis on Heb Je Nodig?

Komponent

- 2 nuppu;

- 2 potentsiomeetrit;

- 2 aru (1K põder);

- Arduino uno/nano

- Draadjes (zie elektronisch skeem)

- Soldeerplaat

- MDF plaat

Tööriistad

- Laserlõikur

- Kniptang

- Striptang

- Soldeerbout (metallist tina)

Programmid

- Illustraator/disain (Tekenprogramma)

- Niidumasin

- Töötlemine

- Arduino

2. samm: koodi töötlemine

Koodi töötlemine
Koodi töötlemine

/**

* Põhiline visand Arduino jadasõnumite vastuvõtmiseks * ja teisendab need OSC-sõnumiteks Reaperi jaoks * * Peate kohandama KASUTAJA PARAMETREID * ja installima raamatukogu: oscP5 * *, mis on loodud töökolleegiumi AV&IT * jaoks, autor annoo bob eddi * oktoober 2017 * *////////////////////// KASUTAJA PARAMETRID ////////////////// ////////

/ veenduge, et kasutate oma Arduino visandi lõplikus int baudis sama andmeedastuskiirust baudRate = 115200;

// Mine ja otsi OSC kasutamisel Reaperist IP-aadressi // See on aadress, mille töötlemine saadab ja mida Reaper kuulab. // Pane see string remoteIP -sse, siia.

// lõplik String remoteIP = "192.168.1.43"; // nt. "127.0.0.1";

final String remoteIP = "vul hier ip in gevonden in reaper";

// Võtke teadmiseks sendPort ja täitke see Reaperis. // See on port, mida töötlemine saadab ja mida Reaper kuulab.

lõplik int kuulamisport = 11000, sendPort = 12000;

// Kuulamisport siin on aktiivne silumine.

// ka portNames on siin silumiseks.

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

// lõplik String portName = "COM6"; // "/dev/ttyUSB0";

///////////////////// KASUTAJA PARAMETRITE LÕPP //////////////////////// ////

impordi töötlemine.seriaalne.*; import java.util.*;

import oscP5.*; import netP5.*;

OscP5 oscP5; NetAddress myRemoteLocation;

Serial commsPort; // Sarjapordi boolean messageArrived = false;

String sissetulev = "", IncomingOSCMessage = "";

lõplik sümbol startChar = '*', endChar = '#'; final char contactCharacter = '|';

// Veendumaks, et saadame ainult muutuvaid parameetreid (väärtusi) // need globaalsed muutujad on delkaeritud siin, kuid neid ei tohiks siin vormindada! HashMap oldParams, newParams, toSendParams;

// Peame sõnumi jagama iga komaga tühja protsessi korralIncoming () {String resVec = sissetulev.split (","); // saame nime+väärtuspaarid // nii iga nime (+2) jaoks… proovige {jaoks (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // pane need uude Hashtable newParams.put (resVec , väärtus); }} // kui ilmneb tõrge, vaatame selle kuvamise välja ja väljume. catch (Erand erand) {println ("Eranditeade:" + ex); printArray (resVec); väljumine (); }}

// Meie sõnumite filtreerimiseks/ * Veendume, et * sisendsõnumi (jada) muutumisel on ainult OSC-väljumise teade * See tähendab: kui keerame/vajutame nuppu ja see muudab väärtust. * Seega filtreerime välja sissetulevad väärtused, mis tegelikult muutuvad. * Märkus: me ei väldi hüppavaid väärtusi *, mis pärinevad nt kiirendusmõõturitelt või kaugusanduritelt *, peate need ise Arduino -s siluma HashMap (); for (Stringi võti: newParams.keySet ()) {// kui võti on juba olemas, kui (oldParams.containsKey (võti)) {// võti on olemas ja väärtus pole sama, siis värskendage, kui (! oldParams.get (võti).equals (newParams.get (võti))) {toSendParams.put (võti, newParams.get (võti)); }} else {// võtit pole vanades parameetrites, nii et pange see! toSendParams.put (võti, newParams.get (võti)); } oldParams.put (võti, newParams.get (võti)); }}

void makeOSC () {for (Stringi võti: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ võti); myMessage.add (toSendParams.get (võti)); / * saatke sõnum */ oscP5.send (myMessage, myRemoteLocation); }}

void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kui tahame printida aknasse void ShowIncoming () {// sissetuleva sõnumi nägemiseks, nagu on määratud HashMapi tekstis ("Saabuv Arduino", 20, 20); int y = 20; for (Stringi võti: newParams.keySet ()) {y = y+20; tekst (võti, 20, y); tekst (newParams.get (võti), 300, y); }}

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

void setup () {suurus (1000, 800); // Lava suuruse täitmine (255); taust (0); oldParams = uus HashMap (); newParams = uus HashMap (); // printArray (Serial.list ()); commsPort = uus jada (see, pordiNimi, baudRate);

/ * käivitage oscP5, kuulake sissetulevaid sõnumeid */ oscP5 = uus OscP5 (see, kuulamisport);

/* myRemoteLocation on NetAddress. NetAddress võtab 2 parameetrit, * IP -aadressi ja pordi numbri. myRemoteLocation kasutatakse parameetrina * oscP5.send () osc -pakettide saatmisel teise arvutisse, seadmesse või * rakendusse. kasutamist vaata allpool. testimise eesmärgil on kuulamisport * ja kauge asukoha aadressi port sama, seega saadate * sõnumid sellele visandile tagasi. */ myRemoteLocation = uus NetAddress (remoteIP, sendPort); }

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

void serialEvent (Serial commsPort) {// jadaportist baidi lugemine: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // küsi lisa println ("alustades …"); murda; juhtum startChar: sissetulev = ""; murda; case endChar: messageArrived = true; // println ("sõnumi lõpp"); murda; vaikimisi: sissetulev += inChar; murda; }}

/* sissetulev osc -teade edastatakse oscEvent -meetodile. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // saada 1. osc argument

IncomingOSCMessage + = "\ n" + String.format ("### sai osc -teate:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", väärtus); println (IncomingOSCMessage); }

Samm: kood Arduino

Kood Arduino
Kood Arduino

/* See kood on põhijoonis, et suhelda töötlemisega jada kaudu.

See on plaan, kuhu saate sisestada oma enda nuppude, potentsiomeetrite või andurite jaoks määratud koodi.

Sellel on käepigistus, et veenduda, et meil on kontakt ja milline suhtlusvorm on otsustatud

Oluline on sõnum koostada samamoodi, et töötlemine teaks, kuidas seda dekonstrueerida ja saata meie DAW-le õiged OSC-teated

tehtud töökollektiivile AV&IT okt 2017

koodi silumine loodud 22. aprillil 2007 David A. Mellise poolt muudetud 9. aprillil 2012, autor Tom Igoe

*/

/ baud rate const pikk baudRate = 115200;

// aeg oodata ms -is küsitluste vahel tihvtidele const int loopPauseTime = 200; // milli sekundit

// Serial const saadetud sõnumi algus- ja lõppväärtused String startString = "*", endString = "#";

const char contactCharacter = '|';

// pin id's const int nuppPin1 = 2; const int nuppPin2 = 5; const int numReadings = 5; // määra van silumine

int pitchReading = A1; int speedReading = A2; int infraReading = A3;

// muud globaalsed muutujad int buttonState1 = 0; int nuppOlek2 = 0; // muutuja nupu oleku ujukanduri lugemiseksVäärtus 1 = 0; ujukandurVäärtus2 = 0; ujukandurVäärtus3 = 0;

// int näitude silumine [numReadings]; // näidud analoogsisendist int readIndex3 = 0; // praeguse näidu indeks int kokku3 = 0; // jooksva kogu ujuki keskmine3 = 0; // keskmine

// Vajame seda funktsiooni töötlemise visandiga kontakti loomiseks // Hoidke see siin void createContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // saata sümbol ja oodata vastust… delay (loopPauseTime); } Serial.read (); }

void setup () {// määrake kõigi tihvtide pinModes pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);

// initsialiseeri jadamiskommid Serial.begin (baudRate); while (! Seeria); // silumine (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }

// oodake käepigistuse loomistContact (); }

void loop () {// küsitle kõik nööpnõelad ja kaardista näit vastavale vahemikule buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);

// sissetulevate väärtuste vastendamine vajalikeks väärtusteks sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = kaart (sensorValue2, 0, 1023, 0,0, 100) /100,0; sensorValue3 = kaart (sensorValue3, 0, 700, 50, 100);

// silumisandur: kokku3 = kokku3 - näidud [loeindeks3]; // andurilt lugemine: näidud [readIndex3] = sensorValue3; // liida näit kokku: total3 = kokku3 + näitu [readIndex3]; // edasi massiivi järgmisele positsioonile: readIndex3 = readIndex3 + 1;

// kui oleme massiivi lõpus… if (readIndex3> = numReadings) {//… mässime algusesse: readIndex3 = 0; } // keskmist arvutada: keskmine3 = (kokku3 / numReadings); // silumisandur

Serial.print (startString); // sõnumite jada käivitamine // kustutage kõik nimed, väärtuspaarid, eraldades need komadega Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");

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

Serial.print ("infrasensor"); Serial.print (","); Jadajälg (keskmine3/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);

// kirjutage kirja lõpp Serial.print (endString);

// oota natuke..

delay (loopPauseTime); }

4. samm: niidumasin

Niidumasin
Niidumasin

1. etapp: valige b> Valikud> Eeldused

2. etapp: saate eelvalikud naar Control/OSC/web ja dr Add op

3. samm: Kies bij Control pinnarežiim või OSC (avatud heli juhtimine)

4. etapp: Vul je seadme nimi sisse, vink Hankige port aan en vul in wat er in processing b Send Send staat

5. etapp: vastuvõtva IP -aadressi kogumine töötlemisel

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

Samm: Behuizing

Behuizing
Behuizing

Pikkus: 170 mm

Pikkus: 90 mm

Hoogte 30 mm

Nupp: 16 mm (läbimõõt)

Potentsi meetrid: 3 mm (läbimõõt)

Afstandi andur: Breedte 2,9 mm

Pikkus 0,8 mm

Materjal: MDF (3mm)

6. samm: Elektronica

1. samm:

Verbind de ground ja Arduino 5 -voldine leiblaud

2. etapp:

Verbind A0 ja potentsiaal 1

Verbind -tihvt A1 ja potentsiaal 2

Verbind -tihvt A3 ja infrapunaandur.

Verbind -tihvt A2 ja kleepuv nupp.

Verbind pin A5 ja kleepuv nupp.

Samm 7: Medewerkers

Medewerkers
Medewerkers

- Mayes El Baba

- Arno Gorissen

- Michiel De Wandelaer

Soovitan: