فهرست مطالب:

کنترل یکپارچهسازی با سیستمعامل: 7 مرحله
کنترل یکپارچهسازی با سیستمعامل: 7 مرحله

تصویری: کنترل یکپارچهسازی با سیستمعامل: 7 مرحله

تصویری: کنترل یکپارچهسازی با سیستمعامل: 7 مرحله
تصویری: کاربردی ترین کلیدهای ترکیبی (میانبر) ویندوز7 تا 10 | فارسی24 2024, سپتامبر
Anonim
کنترل کننده یکپارچهسازی با سیستمعامل
کنترل کننده یکپارچهسازی با سیستمعامل

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

Samen hebben ween muziek controller gemaakt dat muziek kan starten/stoppen، de pitch kan verhogen، kan terugspoelen en nog meer.

بر اساس ایده کاست وان و اینستا ، می توانستم از همه کنترلرها استفاده کنم و در مورد آن کاست انجام دهم.

مرحله 1: Wat Heb Je Nodig؟

وات هب جی نودیگ؟
وات هب جی نودیگ؟

کامپوننت

- 2 دکمه ؛

- 2 متر پتانسیو ؛

- 2 wearesten (1K elk) ؛

- آردوینو uno/nano

- Draadjes (طرح الکترونیکی zie)

- Soldeerplaat

- گچ MDF

ابزارها

- لیزر شکن

- کنپتانگ

- استریپتانگ

- Soldeerbout (met tin)

برنامه ها

- تصویرگر/طراحی ناخواسته (Tekenprogramma)

- ماشین درو

- در حال پردازش

- آردوینو

مرحله 2: پردازش کد

پردازش کد
پردازش کد

/**

* طرح اولیه برای دریافت پیام های سریال از آردوینو * و ترجمه آنها به پیام های OSC برای Reaper * * شما باید پارامترهای USER را تطبیق دهید * و باید یک کتابخانه را نصب کنید: oscP5 * * ساخته شده برای werkcollege AV&IT * توسط annoo bob eddi * oct 2017 * *///////////////////// پارامترهای کاربر ////////////////// /////////

/ مطمئن شوید که از نرخ baud یکسان در طرح اولیه Arduino خود در int baudRate = 115200 استفاده می کنید ؛

// هنگام استفاده از OSC بروید و آدرس IP را در Reaper جستجو کنید // این آدرسی است که پردازش به آن ارسال می کند و Reaper به آن گوش می دهد. // این رشته را در remoteIP ، اینجا قرار دهید.

// آخرین رشته راه دور IP = "192.168.1.43"؛ //به عنوان مثال. "127.0.0.1" ؛

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

// به sendPort توجه داشته باشید و این را در Reaper پر کنید. // این درگاهی است که پردازش به آن می فرستد و Reaper به آن گوش می دهد.

int int listenPort = 11000 ، sendPort = 12000 ؛

// listenPort در اینجا اشکال زدایی فعال است.

// portNames نیز برای اشکال زدایی در اینجا آمده است.

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

// port رشته رشته نهایی = "COM6"؛ // "/dev/ttyUSB0" ؛

////////////////////// ختم پارامترهای کاربر /////////////////////// ////

پردازش واردات. سریال.*؛ واردات java.util.*؛

واردات oscP5.*؛ وارد کردن netP5.*؛

OscP5 oscP5 ؛ NetAddress myRemoteLocation؛

سریال commsPort ؛ // پورت سریال boolean messageArrived = false؛

رشته ورودی = "" ، IncomingOSCMessage = ""؛

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 ، value) قرار دهید؛ }} // اگر خطایی رخ داد ، اجازه دهید آن را نمایش داده و خارج شویم. catch (Exception ex) {println ("پیام استثنا:" + ex)؛ printArray (resVec) ؛ خروج ()؛ }}

// برای فیلتر کردن پیام های ما/ * ما مطمئن می شویم که فقط یک پیام خروجی OSC وجود دارد وقتی * پیام ورودی (سریال) تغییر می کند * یعنی: اگر دکمه را بچرخانیم/فشار دهیم و مقدار آن تغییر کند. * بنابراین ما مقادیر ورودی را که در واقع تغییر می کنند فیلتر می کنیم * توجه: ما از پرش مقادیر * به عنوان مثال از شتاب سنج ها یا حسگرهای فاصله جلوگیری می کنیم * شما باید آنها را در Arduino */ void filterParams () {toSendParams = new صاف کنید HashMap () ؛ for (کلید رشته: newParams.keySet ()) {// اگر کلید در حال حاضر وجود دارد اگر (oldParams.containsKey (کلید)) {// کلید فعلی و مقدار یکسان نیست ، اگر (! oldParams.get (کلید).equals (newParams.get (کلید))) {toSendParams.put (کلید ، newParams.get (کلید)) ؛ }} else {// کلید در پارامهای قدیمی وجود ندارد ، بنابراین آن را قرار دهید! toSendParams.put (کلید ، newParams.get (کلید)) ؛ } oldParams.put (کلید ، newParams.get (کلید)) ؛ }}

void makeOSC () {for (کلید رشته: toSendParams.keySet ()) {OscMessage myMessage = OscMessage جدید ("/"+ کلید) ؛ myMessage.add (toSendParams.get (کلید)) ؛ / * ارسال پیام */ oscP5.send (myMessage ، myRemoteLocation) ؛ }}

void translateMessage () {processIncoming ()؛ filterParams ()؛ makeOSC ()؛ } // وقتی می خواهیم پنجره را چاپ کنیم void ShowIncoming () {// برای مشاهده پیام ورودی ، همانطور که در متن HashMap تنظیم شده است ("ورودی از آردوینو" ، 20 ، 20) ؛ int y = 20 ؛ for (کلید رشته: newParams.keySet ()) {y = y+20؛ متن (کلید ، 20 ، y) ؛ متن (newParams.get (کلید) ، 300 ، y) ؛ }}

void showOsc () {text (IncomingOSCMessage، 300، 200)؛ IncomingOSCMessage = ""؛ }

void setup () {اندازه (1000 ، 800) ؛ // اندازه مرحله پر (255)؛ پس زمینه (0) ؛ oldParams = HashMap جدید ()؛ newParams = جدید HashMap ()؛ // printArray (Serial.list ())؛ commsPort = سریال جدید (this، portName، baudRate)؛

/ * شروع oscP5 ، گوش دادن به پیامهای دریافتی */ oscP5 = OscP5 جدید (این ، listenPort) ؛

/* myRemoteLocation آدرس NetAddress است. یک NetAddress 2 پارامتر ، * آدرس IP و شماره پورت را می گیرد. myRemoteLocation به عنوان پارامتر در * oscP5.send () هنگام ارسال بسته های osc به رایانه ، دستگاه ، * برنامه دیگر استفاده می شود. استفاده را در زیر مشاهده کنید برای آزمایش ، پورت * و پورت آدرس مکان از راه دور یکسان هستند ، بنابراین * پیام ها را به این طرح ارسال خواهید کرد. */ myRemoteLocation = جدید NetAddress (راه دور IP ، sendPort) ؛ }

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

void serialEvent (Serial commsPort) {// یک بایت از پورت سریال بخوانید: char inChar = commsPort.readChar ()؛ switch (inChar) {case contactCharacter: commsPort.write (contactCharacter) ؛ // برای چاپ بیشتر ("شروع …") درخواست کنید ؛ زنگ تفريح؛ case startChar: ورودی = ""؛ زنگ تفريح؛ case endChar: messageArrived = true؛ // println ("انتهای پیام")؛ زنگ تفريح؛ پیش فرض: ورودی += inChar؛ زنگ تفريح؛ }}

/* پیام ورودی osc به روش oscEvent ارسال می شود. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue ()؛ // اولین استدلال osc را دریافت کنید

IncomingOSCMessage + = "\ n" + String.format ("### پیام osc دریافت کرد:" + "addrpattern:" + theOscMessage.addrPattern () + ":٪ f" ، مقدار)؛ println (IncomingOSCMessage) ؛ }

مرحله 3: کد آردوینو

کد آردوینو
کد آردوینو

/* این کد یک طرح اولیه برای ارتباط با پردازش از طریق سریال است.

این نقشه ای است که در آن می توانید کد دلخواه خود را برای دکمه ها ، پتانسیومترها یا حسگرهای خود تعیین کنید.

این یک دست دادن است تا مطمئن شویم که ما تماس داریم و فرمی که در آن ارتباط برقرار می کنیم تصمیم گرفته می شود

مهم است که پیام را به همین شکل بسازیم ، به طوری که پردازش بداند چگونه آن را تخریب کرده و پیام های OSC صحیح را به DAW ما ارسال کند.

ساخته شده برای werkcollege AV&IT Oct 2017

کد smooothing ایجاد شده در 22 آوریل 2007 توسط David A. Mellis اصلاح شده در 9 آوریل 2012 توسط Tom Igoe

*/

/ 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 buttonState2 = 0 ؛ // متغیر برای خواندن دکمه push float sensorValue1 = 0؛ float sensorValue2 = 0؛ float sensorValue3 = 0؛

// هموارسازی خوانش های int [numReadings] ؛ // خوانش های ورودی آنالوگ int readIndex3 = 0؛ // شاخص خواندن فعلی int total3 = 0؛ // در حال اجرا کل float average3 = 0؛ // میانگین

// برای برقراری ارتباط با طرح پردازش به این عملکرد نیاز داریم // ارسال یک char و منتظر پاسخ … تاخیر (loopPauseTime)؛ } Serial.read ()؛ }

void setup () {// تنظیم pinModes برای همه پین pinMode (buttonPin1 ، INPUT) ؛ pinMode (buttonPin2 ، INPUT) ؛ pinMode (pitchReading ، INPUT) ؛ pinMode (speedReading ، INPUT) ؛ pinMode (infraReading ، INPUT) ؛

// مقداردهی اولیه Serial.begin (baudRate)؛ در حالی که (! سریال) ؛ // هموارسازی برای (int thisReading = 0 ؛ thisReading <numReadings؛ thisReading ++) {خواندن [thisReading] = 0 ؛ }

// منتظر بمانید تا handsChack () دست دهد. }

void loop () {// همه پین ها را نظرسنجی کنید و خواندن را در محدوده مناسب buttonState1 = digitalRead (buttonPin1) قرار دهید. buttonState2 = digitalRead (buttonPin2) ؛ sensorValue1 = analogRead (pitchReading) ؛ sensorValue2 = analogRead (سرعت خواندن)؛ sensorValue3 = analogRead (infraReading) ؛

// نگاشت مقادیر ورودی به مقادیر لازم sensorValue1 = map (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؛ } // محاسبه میانگین: average3 = (total3 / numReadings)؛ // سنسور صاف کردن

Serial.print (startString) ؛ // شروع یک دنباله پیام // wirte همه نام ، جفت ارزش ، جدا شده با کاما Serial.print ("potentio1") ؛ Serial.print ("،") ؛ Serial.print (sensorValue1) ؛ Serial.print ("،") ؛

Serial.print ("potentio2") ؛ Serial.print ("،") ؛ Serial.print (sensorValue2) ؛ Serial.print ("،") ؛

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: گزینه> تنظیمات برگزیده را انتخاب کنید

مرحله 2: در تنظیمات مورد نظر برای کنترل/OSC/web و افزودن کلیک کنید

مرحله 3: Kies bij Control سطح سطح در OSC (باز کردن کنترل صدا)

مرحله 4: نام دستگاه Vul je در، vink دریافت در بندر aan en vul in wat er در پردازش bij Sendport staat

مرحله 5: Kopieer de Host IP die y hier ziet in vone in in Processing

مرحله 6: Druk op ok en de controller is not verbonden met Reaper

مرحله 5: Behuizing

بوهیزه کردن
بوهیزه کردن

نوع: 170 میلی متر

طول: 90 میلی متر

هوگ 30 میلی متر

Knoppen: 16 میلی متر (قطر

متر پتانسیو: 3 میلی متر (قطر)

سنسور ایستاده: Breedte 2.9 میلی متر

طول 0.8 میلی متر

جنس: MDF (3 میلی متر)

مرحله 6: Elektronica

مرحله 1:

Verbind de ground en 5 volt Van Arduino met hetboard breadboard

مرحله 2:

Verbind pin A0 با potentio 1 ملاقات کرد

Verbind pin A1 met potentio 2

سنسور Verbind A3 met infrarood.

دکمه چسبناک Verbind A2 met de niet sticky sticky.

Verbind pin A5 met de sticky button.

مرحله 7: کارگران مدیون

کارگران مدیا
کارگران مدیا

- مایس بابا

- آرنو گوریسن

- میشیل دی وندلر

توصیه شده: