Агуулгын хүснэгт:

Retro хянагч: 7 алхам
Retro хянагч: 7 алхам

Видео: Retro хянагч: 7 алхам

Видео: Retro хянагч: 7 алхам
Видео: ХИДЖАБ — В ЦЕРКОВЬ? Зачем Сюзанна носит хиджаб в православную церковь? 2024, Арваннэгдүгээр
Anonim
Retro хянагч
Retro хянагч

Брюссель хотод Мультимедиа ба Харилцааны Технологи (Multec) болон бусад олон оюутнуудыг хамруулж болно.

Сэмэн хеббен бид хөгжим хянагчийг эхлүүлэх/зогсоох, дөнгөж давах, хөргөх, хамгийн сайн ашиглах боломжтой болно.

Он кассет, кассет, тоног төхөөрөмж нь хуурцаг юм.

Алхам 1: Wat Heb Je Nodig?

Вэт Хеб Же Нодиг уу?
Вэт Хеб Же Нодиг уу?

Бүрэлдэхүүн хэсгүүд

- 2 товчлуур;

- 2 потенцио метр;

- 2 вестестен (1K хандгай);

- Arduino uno/нано

- Драаджес (электроникийн схем)

- Soldeerplaat

- БСХС -ийн хавтан

Багаж хэрэгсэл

- Ласеркуттер

- Киптанг

- Стриптан

- Soldeerbout (цагаан тугалга)

Хөтөлбөрийн

- Иллюстратор/дизайнгүй (Tekenprogramma)

- Хадуурчин

- Боловсруулж байна

- Ардуино

Алхам 2: Код боловсруулах

Код боловсруулах
Код боловсруулах

/**

* Arduino-аас цуваа мессеж хүлээн авах үндсэн ноорог * ба тэдгээрийг Reaper-д зориулсан OSC-мессеж болгон хөрвүүлэх * * Та USER PARAMETERS-ийг дасан зохицуулах шаардлагатай * мөн номын сан суулгах шаардлагатай болно: oscP5 * * werkcollege AV&IT * -т зориулагдсан annoo bob eddi * аравдугаар сар 2017 * *//////////////////////// ХЭРЭГЛЭГЧИЙН ПАРАМЕТР ///////////////////// ////////

/ Arduino -ийн ноорог зургийн хувьд int baudRate = 115200;

// OSC-ийг ашиглахдаа Reaper дээрээс IP хаягийг хайж олоорой // Энэ бол Processing-ийн илгээдэг, Reaper-ийн сонсдог хаяг юм. // Энэ мөрийг remoteIP дээр энд оруулна уу.

// эцсийн String remoteIP = "192.168.1.43"; // жишээ нь. "127.0.0.1";

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

// sendPort -ийг анхаарч, үүнийг Reaper дээр бөглөнө үү. // Энэ бол Processing -ийн илгээдэг, Reaper -ийн сонсдог порт юм.

final int listenPort = 11000, sendPort = 12000;

// Энд байгаа listenPort нь идэвхтэй дибаг хийх болно.

// portNames нь дибаг хийхээр энд байна.

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

// эцсийн String portName = "COM6"; // "/dev/ttyUSB0";

/////////////////////// Хэрэглэгчийн параметрүүдийн төгсгөл ///////////////////////// ////

импорт боловсруулах.сериал.*; java.util импортлох.*;

oscP5 импортлох.*; netP5 импортлох.*;

OscP5 oscP5; NetAddress myRemoteLocation;

Цуваа коммпорт; // Цуваа порт boolean messageArrived = false;

String incoming = "", IncomingOSCMessage = "";

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

// Бид зөвхөн өөрчлөх параметрүүдийг (утгыг) илгээдэг гэдэгт итгэлтэй байхын тулд // эдгээр дэлхийн хувьсагчдыг энд устгадаг боловч // энд эхлүүлэх ёсгүй! HashMap oldParams, newParams, toSendParams;

// Бид зурвасыг таслал бүрт void processIncoming () {String resVec = incoming.split (",") болгон хуваах хэрэгтэй; // бид нэр+утгын хосыг авдаг // тиймээс нэр бүрийн хувьд (+2)… оролдох {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+) 1]); // тэдгээрийг шинэ Hashtable newParams.put -д оруулах (resVec , утга); }} // хэрэв алдаа гарвал түүнийг барьж харуулъя. catch (Exception ex) {println ("Exception Message:" + ex); printArray (resVec); гарах(); }}

// Манай мессежийг шүүхийн тулд/ * Оролтын зурвас (Цуваа) өөрчлөгдөхөд зөвхөн OSC-аас гарсан мессеж байгаа эсэхийг шалгаарай * Энэ нь хэрэв бид товчлуурыг эргүүлж/дарвал утга нь өөрчлөгддөг. * Тиймээс бид үнэндээ өөрчлөгдөж буй ирж буй утгыг шүүж авдаг * тэмдэглэл: жишээлбэл, хурдатгал хэмжигч эсвэл зайны мэдрэгчээс авсан утгуудын үсрэлтээс зайлсхийхгүй * та тэдгээрийг Arduino -д өөрөө тэгшлэх хэрэгтэй болно */ void filterParams () {toSendParams = new HashMap (); for (String key: newParams.keySet ()) {// хэрэв түлхүүр аль хэдийн байгаа бол (oldParams.containsKey (key)) {// түлхүүр байгаа бөгөөд утга нь ижил биш бол, хэрэв (! oldParams.get (key)).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key))); }} өөр {// түлхүүр нь хуучин параметрүүдэд байдаггүй тул үүнийг хэлээрэй! toSendParams.put (түлхүүр, newParams.get (түлхүүр)); } oldParams.put (түлхүүр, newParams.get (түлхүүр)); }}

void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (түлхүүр)); / * мессеж илгээх */ oscP5.send (myMessage, myRemoteLocation); }}

void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Бид цонх руу хэвлэхийг хүсвэл void ShowIncoming () {// HashMap текстэд заасан "" ирж буй мессежийг харахын тулд ("Arduino -аас ирсэн", 20, 20); int y = 20; for (String key: newParams.keySet ()) {y = y+20; текст (түлхүүр, 20, у); текст (newParams.get (түлхүүр), 300, y); }}

void showOsc () {текст (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }

void setup () {size (1000, 800); // Шатны хэмжээг бөглөх (255); дэвсгэр (0); oldParams = шинэ HashMap (); newParams = шинэ HashMap (); // printArray (Serial.list ()); commsPort = шинэ цуваа (энэ, portName, baudRate);

/ * эхлэх oscP5, ирж буй мессежийг сонсох */ oscP5 = шинэ OscP5 (энэ, listenPort);

/* myRemoteLocation бол NetAddress юм. NetAddress нь 2 параметр, IP хаяг, портын дугаарыг авдаг. myRemoteLocation нь osc пакетуудыг өөр компьютер, төхөөрөмж, * програм руу илгээхдээ * oscP5.send () дахь параметр болгон ашигладаг. хэрэглээг доороос үзнэ үү. Туршилтын зорилгоор сонсох порт * болон алслагдсан байршлын хаягийн порт нь адилхан тул та энэ зурган дээр зурвас илгээх болно. */ myRemoteLocation = шинэ NetAddress (remoteIP, sendPort); }

void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = худал; } showOsc (); }

void serialEvent (Serial commsPort) {// цуваа портоос байтыг унших: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // илүү их println асуух ("эхэлж байна …"); завсарлага; case startChar: ирж буй = ""; завсарлага; case endChar: messageArrived = үнэн; // println ("msg -ийн төгсгөл"); завсарлага; анхдагч: ирж буй += inChar; завсарлага; }}

/* ирж буй Оскар мессежийг oscEvent арга руу дамжуулдаг. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // Оскарын 1 -р аргументыг авах

IncomingOSCMessage + = "\ n" + String.format ("### osc зурвас хүлээн авсан:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", утга); println (IncomingOSCMessage); }

Алхам 3: Arduino -г кодчилно уу

Ардуино код
Ардуино код

/* Энэ код нь Цуваагаар дамжуулж боловсруулахтай харилцах үндсэн ноорог юм.

Энэ бол өөрийн товчлуур, потенциометр эсвэл мэдрэгчийн хувьд өөрийн кодоо оруулах боломжтой зураг төсөл юм.

Энэ нь бидэнтэй холбоо барьж, ямар форматаар харилцахаа шийдсэн эсэхийг шалгахын тулд гар барих явдал юм

Зурвасыг яг ийм байдлаар бүтээх нь чухал бөгөөд ингэснээр боловсруулалт нь үүнийг хэрхэн задлах, OSC-ийн зөв мессежийг манай DAW руу илгээхийг мэддэг.

2017 оны 10 -р сард werkcollege AV&IT -д зориулж хийсэн

код smooothing -ийг 2007 оны 4 -р сарын 22 -нд Дэвид А. Меллис 2012 оны 4 -р сарын 9 -нд Том Игоогоор өөрчилсөн

*/

/ baud rate const long baudRate = 115200;

// санал асуулгын хооронд зүү хүртэл хүлээх цаг const int loopPauseTime = 200; // милл секунд

// Serial const String startString = "*", endString = "#" дээр илгээсэн зурвасын эхлэл ба төгсгөлийн утга;

const char contactCharacter = '|';

// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // хурдны машиныг тэгшлэх

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

// бусад дэлхийн хувьсагчид int buttonState1 = 0; int товчState2 = 0; // товчлуурын төлөвт хөвөх мэдрэгчийг унших хувьсагчValue1 = 0; хөвөх мэдрэгчValue2 = 0; хөвөх мэдрэгчValue3 = 0;

// int уншилтыг тэгшлэх [numReadings]; // int readIndex3 = 0 аналог оролтын уншилт; // одоогийн унших индекс int total3 = 0; // ажиллаж байгаа нийт хөвөх дундаж3 = 0; // дундаж

// Боловсруулалтын ноорогтой холбоо тогтооход бидэнд энэ функц хэрэгтэй болно // Үүнийг энд байлга, void хайхгүйCustainContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // тэмдэгт илгээж хариу хүлээнэ үү … саатал (loopPauseTime); } Serial.read (); }

void setup () {// бүх pinMode (pinPin1, INPUT) pinModes -ийг тохируулах; pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);

// Serial comms Serial.begin (baudRate) эхлүүлэх; байхад (! Цуваа); // тэгшлэх (int thisReading = 0; thisReading <numReadings; thisReading ++) {уншилт [thisReading] = 0; }

// гар барихыг хүлээнэ үү installContact (); }

void loop () {// бүх тээглүүрээс санал асуулга авч, уншилтыг тохирох муж руу товшино ууState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (инфра унших);

// ирж буй утгыг шаардлагатай утгуудтай харьцуулах sensorValue1 = газрын зураг (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = газрын зураг (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = газрын зураг (sensorValue3, 0, 700, 50, 100);

// тэгшлэх мэдрэгч: total3 = total3 - уншилт [readIndex3]; // мэдрэгчээс унших: уншилт [readIndex3] = sensorValue3; // уншилтыг нийлбэрт нэмнэ үү: total3 = total3 + уншилт [readIndex3]; // массивын дараагийн байрлал руу шилжих: readIndex3 = readIndex3 + 1;

// хэрэв бид массивын төгсгөлд байгаа бол… if (readIndex3> = numReadings) {//… эхэнд нь ороо: readIndex3 = 0; } // дунджийг тооцоолох: дундаж3 = (нийт3 / тооОруулга); // тэгшлэх мэдрэгч

Serial.print (startString); // мессежийн дарааллыг эхлүүлэх // бүх нэр, утгын хосыг таслалаар тусгаарлах Serial.print ("potentio1"); Serial.print (","); Цуваа.хэвлэх (sensorValue1); Serial.print (",");

Serial.print ("potentio2"); Serial.print (","); Цуваа.хэвлэх (sensorValue2); Serial.print (",");

Serial.print ("хэт мэдрэгч"); Serial.print (","); Цуваа.хэвлэх (дунджаар 3/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);

// мессежийн төгсгөлийг бичих Serial.print (endString);

// түр хүлээгээрэй..

саатал (loopPauseTime); }

Алхам 4: Хадуур

Хадуур
Хадуур

1 -р үгийн жагсаалт: Сонголтууд> Prefrences

2 -р үдээс: Хяналт/OSC/вэб дээрх нэмэлтийг нэмэх

3 -р үд: Kies bij Хяналтын гадаргуугийн горим нь OSC (Нээлттэй дууны хяналт)

4 -р үдээс: Vul je төхөөрөмжийн нэр, винк хүлээн авах порт aan en vul in wat er боловсруулах bij Sendport staat

5 -р үд: Боловсруулах хэсэгт IP хаягийг хадгална уу

6 -р үд: Druk op ok en de controller is Re nu verbonden has Reaper

Алхам 5: Биеэ авч явах

Биеэ авч явах
Биеэ авч явах

Өндөр: 170 мм

Урт: 90 мм

Hoogte 30 мм

Knoppen: 16 мм (диаметр

Потенцио метр: 3 мм (диаметр)

Мэдрэгч: Breedte 2.9 мм

Урт 0.8 мм

Материал: БСХС (3 мм)

Алхам 6: Электроника

1 -р оосор:

Verbind de ground EN 5 вольт ван Ардуино талхны самбартай таарсан

2 -р оосор:

Verbind pin A0 нь potentio 1 -тэй уулзсан

Verbind зүү A1 нь потенцио 2 -тэй уулзсан

Verbind pin A3 нь хэт улаан туяаны мэдрэгчтэй уулзсан.

Verbind pin A2 нь нает наалттай товчлууртай таарсан.

V5 -ийн pin A5 наалттай товчлууртай таарсан.

Алхам 7: Мэдээлэл солилцогчид

Мэдээлэл дамжуулагчид
Мэдээлэл дамжуулагчид

- Майес Эл Баба

- Арно Гориссен

- Мичил Де Ванделаер

Зөвлөмж болгож буй: