Përmbajtje:

Kontrolluesi Retro: 7 hapa
Kontrolluesi Retro: 7 hapa

Video: Kontrolluesi Retro: 7 hapa

Video: Kontrolluesi Retro: 7 hapa
Video: Обзор современного дома: Твой дом ДОЛЖЕН БЫТЬ ТАКИМ | Красивые дома, интерьер дома, хаус тур 2024, Nëntor
Anonim
Kontrollues Retro
Kontrollues Retro

Wij zijn eerste jaar studentë uit de opleiding Multimedia & Communicatietechnologie (Multec) nga Erasmushogeschool Brussel.

Samen hebben ne kemi kontrolluar një kontrollues që mund të fillojë/ndalojë, për të sqaruar verhogenin, duke u terugspoelen en nog meer.

Sipas ideve të tyre për kasetën, ishte e mundur të kontrolloni të gjitha kasetat që lidhen me të.

Hapi 1: Wat Heb Je Nodig?

Wat Heb Je Nodig?
Wat Heb Je Nodig?

Komponenti

- 2 butona;

- 2 metra Potentio;

- 2 kuptohemi (1K dre);

- Arduino uno/nano

- Draadjes (skema zie elektronisch)

- Soldeerplaat

- pllakë MDF

Mjetet

- Prerës me lazer

- Kniptang

- Striptang

- Soldeerbout (metali i kallajit)

Të programit

- Ilustruesi/indizajni (Tekenprogramma)

- Korrës

- Përpunimi

- Arduino

Hapi 2: Përpunimi i Kodit

Përpunimi i Kodit
Përpunimi i Kodit

/**

* Skica bazë për të marrë mesazhe serike nga Arduino * dhe i përkthen ato në mesazhe OSC për Reaper * * Ju do të duhet të përshtatni PARAMETRAT E PERRDORUESIT * dhe do t'ju duhet të instaloni një Bibliotekë: oscP5 * * e bërë për werkcollege AV&IT * nga annoo bob eddi * tetor 2017 * *///////////////////// Parametrat e perdoruesit //////////////////// /////////

/ sigurohuni që përdorni të njëjtën normë baud në skicën tuaj Arduino final int baudRate = 115200;

// Shkoni dhe kërkoni adresën IP në Reaper kur përdorni OSC // Kjo është adresa që përpunimi dërgon dhe Reaper dëgjon. // Vendoseni këtë varg në remoteIP, këtu.

// tela e largët String IP = "192.168.1.43"; // p.sh. "127.0.0.1";

final String remoteIP = "vul hier ip në gevonden në korrës";

// Merrni shënim sendPort dhe plotësojeni këtë në Reaper. // Ky është porti që përpunimi dërgon dhe dëgjon Reaper.

int int listenPort = 11000, sendPort = 12000;

// Porta e dëgjimit këtu është të korrigjosh në mënyrë aktive.

// emrat e portit janë këtu për të korrigjuar gjithashtu.

emri përfundimtar i stringut portName = "vul hier de portname në gevonden në Arduino";

// emri i fundit String portName = "COM6"; // "/dev/ttyUSB0";

////////////////////// FUNDI I PARAMETRAVE TER PERRDORUESIT //////////////////////// ////

përpunimi i importit.serial.*; import java.util.*;

importo oscP5.*; importi neto5.*;

OscP5 oscP5; NetAddress myRemoteLocation;

Serial commsPort; // Porta serike mesazh booleanArrived = false;

String hyrëse = "", IncomingOSCMessage = "";

fillimi i karbonit startChar = '*', endChar = '#'; contact char përfundimtarCharacter = '|';

// Për tu siguruar që ne dërgojmë vetëm parametrat (vlerat) që ndryshojnë // këto variabla globale janë të shënuara këtu, por nuk duhet të inicializohen këtu! HashMap oldParams, newParams, toSendParams;

// Ne duhet të ndajmë mesazhin në çdo proces të pavlefshëm me presjeIncoming () {String resVec = incoming.split (","); // marrim çifte emri+vlerash // kështu që për çdo emër (+2)… provoni {për (int i = 0; i <resVec.length; i+= 2) {vlera e notit = Float.parseFloat (resVec [i+ 1]); // vendosini ato në HasPtable newParams.put (resVec , vlera); }} // nëse ndodh një gabim, le ta kapim atë të shfaqet dhe të dalë. kap (Përjashtim ex) {println ("Mesazhi i Përjashtimit:" + ish); printArray (resVec); dalje (); }}

// Për të filtruar mesazhet tona/ * Ne sigurohemi që ka vetëm një mesazh OSC kur * mesazhi hyrës (Serial) ndryshon * Domethënë: nëse e kthejmë/shtypim butonin dhe ai ndryshon vlerën. * Kështu që ne filtrojmë vlerat hyrëse që ndryshojnë në të vërtetë HashMap (); për (Çelësi i vargut: newParams.keySet ()) {// nëse çelësi është tashmë i pranishëm nëse (oldParams.containsKey (çelësi)) {// çelësi i pranishëm dhe vlera nuk është e njëjtë, atëherë përditësoni nëse (! oldParams.get (çelësi). barazohet (newParams.get (çelësi))) {toSendParams.put (çelësi, newParams.get (çelësi)); }} else {// çelësi nuk është i pranishëm në parametrat e vjetër, prandaj vendoseni! toSendParams.put (çelësi, newParams.get (çelësi)); } oldParams.put (çelësi, newParams.get (çelësi)); }}

void makeOSC () {for (Çelësi i vargut: toSendParams.keySet ()) {OscMessage myMessage = OscMessage i ri ("/"+ çelës); myMessage.add (toSendParams.get (kyç)); / * dërgoni mesazhin */ oscP5.send (myMessage, myRemoteLocation); }}

void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kur duam të printojmë në dritare void ShowIncoming () {// për të parë mesazhin në hyrje, siç është vendosur në tekstin HashMap ("Hyrja nga Arduino", 20, 20); int y = 20; për (Çelësi i vargut: newParams.keySet ()) {y = y+20; tekst (çelësi, 20, y); tekst (newParams.get (kyç), 300, y); }}

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

void setup () {madhësia (1000, 800); // Plotësoni madhësinë e fazës (255); sfond (0); oldParams = e re HashMap (); newParams = e re HashMap (); // printArray (Serial.list ()); commsPort = Serial i ri (ky, emri i portit, baudRate);

/ * fillo oscP5, dëgjo për mesazhet hyrëse */ oscP5 = OscP5 i ri (ky, listenPort);

/* myRemoteLocation është një AdAdress. një NetAddress merr 2 parametra, * një adresë IP dhe një numër porti. myRemoteLocation përdoret si parametër në * oscP5.send () kur dërgoni pako osc në një kompjuter, pajisje, * aplikacion tjetër. përdorimi shihni më poshtë. për qëllime testimi porti i dëgjimit * dhe porta e adresës së largët të vendndodhjes janë të njëjta, prandaj ju * do të dërgoni mesazhe përsëri në këtë skicë. */ myRemoteLocation = NetAddress e re (IP e largët, sendPort); }

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

void serialEvent (Serial commsPort) {// lexoni një bajt nga porti serial: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // kërkoni më shumë println ("duke filluar …"); pushim; rasti startChar: hyrëse = ""; pushim; rasti endChar: messageArrived = true; // println ("fundi i mesazhit"); pushim; parazgjedhje: hyrëse += nëChar; pushim; }}

/* mesazhi hyrës osc përcillen në metodën oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // merrni argumentin e parë osc

IncomingOSCMessage + = "\ n" + String.format ("### mori një mesazh osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", vlera); println (IncomingOSCMessage); }

Hapi 3: Kodi Arduino

Kodi Arduino
Kodi Arduino

/* Ky kod është një skicë bazë për të komunikuar me Përpunimin përmes Serialit.

Shtë një plan në të cilin mund të vendosni kodin tuaj të specifikuar për butonat, potenciometrat ose sensorët tuaj.

Ka një shtrëngim duarsh për t'u siguruar që kemi kontakte dhe formati në të cilin po komunikojmë është vendosur

Isshtë e rëndësishme që mesazhi të ndërtohet në të njëjtën mënyrë, në mënyrë që Përpunimi të dijë si ta zbërthejë atë dhe të dërgojë mesazhe të sakta OSC tek DAW-ja jonë

bërë për werkcollege AV&IT tetor 2017

kodi smooothing krijuar më 22 Prill 2007 nga David A. Mellis i modifikuar më 9 Prill 2012 nga Tom Igoe

*/

/ norma baud konstante baudRate e gjatë = 115200;

// koha për të pritur në ms midis sondazheve deri në kunjat const int loopPauseTime = 200; // milili sekonda

// vlerat e fillimit dhe mbarimit për mesazhin e dërguar në Serial const String startString = "*", endString = "#";

const char contactCharacter = '|';

// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numRlexime = 5; // norma zbutjen e furgonit

int pitchReading = A1; int speedReading = A2; int infraR leximi = A3;

// variabla të tjerë global int buttonState1 = 0; butoni int Shteti2 = 0; // ndryshore për leximin e sensorit të notimit të statusit të butonit me vlerë1 = 0; sensori i notimitVlera2 = 0; sensori i notimitVlera3 = 0;

// zbutjen e leximeve int [numReadings]; // leximet nga hyrja analoge int readIndex3 = 0; // indeksi i leximit aktual int total3 = 0; // mesatarja totale e notimit3 = 0; // mesatar

// Ne kemi nevojë për këtë funksion për të vendosur kontakt me skicën e Përpunimit // Mbaje këtu void estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // dërgoni një shenjë dhe prisni një përgjigje … vonesë (loopPauseTime); } Serial.read (); }

void setup () {// vendosni pinModes për të gjitha kunjat pinMode (buttonPin1, INPUT); pinMode (butoniPin2, HYRJE); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);

// inicoj Serial comms Serial.begin (baudRate); ndërsa (! Serial); // zbutje për (int thisReading = 0; thisReading <numReadings; thisReading ++) {leximet [thisReading] = 0; }

// prisni për shtrëngimin e dorës estabContact (); }

void loop () {// anketoni të gjitha kunjat dhe hartoni leximin në gamën e duhur buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (butoniPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);

// hartëzimi i vlerave hyrëse në vlerat e nevojshme sensorValue1 = hartë (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = hartë (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = hartë (sensorValue3, 0, 700, 50, 100);

// sensori i zbutjes: total3 = total3 - lexime [readIndex3]; // lexoni nga sensori: leximet [readIndex3] = sensorValue3; // shtoni leximin në total: total3 = total3 + lexime [readIndex3]; // avanconi në pozicionin tjetër në grup: readIndex3 = readIndex3 + 1;

// nëse jemi në fund të grupit … if (readIndex3> = numReadings) {// … përfundoni deri në fillim: readIndex3 = 0; } // llogarisni mesataren: mesatare3 = (total3 / numReadings); // sensori i zbutjes

Serial.print (startString); // filloni një sekuencë mesazhi // shkruani të gjithë emrin, çiftet e vlerës, të ndara me presje Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");

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

Serial.print ("infra-sensor"); Serial.print (","); Serial.print (mesatarja3/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);

// shkruaj fundin e mesazhit Serial.print (endString);

// prit pak..

vonesë (loopPauseTime); }

Hapi 4: Korrës

Korrës
Korrës

Hapi 1: Zgjedhja e opsioneve> Preferencat

Hapi 2: Paraqitjet paraprakisht për Kontrollin/OSC/uebin dhe shtimin

Hapi 3: Modaliteti i sipërfaqes së kontrollit Kies bij ose OSC (Hapni kontrollin e zërit)

Hapi 4: Vul je emri i pajisjes në, vink Merrni në port aan en vul në ujë në përpunimin e bij Sendport staat

Hapi 5: Kopjimi i IP -së së hostit mund të lexohet në procesin e përpunimit

Hapi 6: Druk op ok en de controller is not verbonden met Reaper

Hapi 5: Behuizing

Behuizing
Behuizing

Breed: 170 mm

Gjatësia: 90 mm

Ngjitës 30 mm

Knoppen: 16 mm (diametër

Matës potencial: 3 mm (diametër)

Sensori Afstand: Breedte 2.9 mm

Gjatësia 0.8 mm

Materiali: MDF (3mm)

Hapi 6: Elektronika

Hapi 1:

Verbind de ground en 5 volt van Arduino met hetboard

Hapi 2:

Verbind pin A0 u takua me potencialin 1

Verbind pin A1 met potentio 2

Verbind pin A3 met infrarood sensor.

Verbind pin A2 u takua me butonin ngjitës ngjitës.

Verbind pin A5 u takua me butonin ngjitës.

Hapi 7: Meduerkers

Meduerkers
Meduerkers

- Mayes El Baba

- Arno Gorissen

- Michiel De Wandelaer

Recommended: