فهرست مطالب:
- مرحله 1: Wat Heb Je Nodig؟
- مرحله 2: پردازش کد
- مرحله 3: کد آردوینو
- مرحله 4: درو
- مرحله 5: Behuizing
- مرحله 6: Elektronica
- مرحله 7: کارگران مدیون
تصویری: کنترل یکپارچهسازی با سیستمعامل: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
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: کارگران مدیون
- مایس بابا
- آرنو گوریسن
- میشیل دی وندلر
توصیه شده:
بازی یکپارچهسازی با سیستمعامل - (اندازه کامل طراحی شده توسط Raspberry Pi): 8 مرحله
بازی یکپارچهسازی با سیستمعامل - (اندازه کامل طراحی شده توسط Raspberry Pi): ابتدا می خواستم از شما تشکر کنم که به راهنمای ساخت این سیستم بازی یکپارچهسازی با سیستمعامل نگاهی انداختید. من یک جعبه بازی قدیمی می گیرم و آن را در یک کابینت مستقل با مانیتور 24 اینچی با صفحه عریض قرار می دهم. اندازه گیری های این راهنما برای شما سخت است
یکپارچهسازی با سیستمعامل "Rayotron" چراغ شب (قسمت 1): 16 مرحله
یکپارچهسازی با سیستمعامل چراغ شب "Rayotron" (قسمت 1): مقدمهدر دسامبر 1956 ، آزمایشگاههای اتمی رایوترون را به عنوان "اولین ژنراتور الکترواستاتیک کم هزینه و شتاب دهنده ذرات" برای معلمان علوم و علاقه مندان [1] تبلیغ کردند. رایوترون دارای یک کمربند فوق العاده بزرگ و دارای لاستیک بود و
یکپارچهسازی با سیستمعامل CP/M شبیه ساز مستقل: 8 مرحله
شبیه ساز Retro CP/M Stand Alone: این پروژه از ماژول VGA32 ESP v1.4 برای اجرای ترکیبی یا RunCPM و FabGL برای ارائه یک کامپیوتر مستقل که سیستم معادل CP/M 2.2 را اجرا می کند ، استفاده می کند. در دهه 1980 به عنوان یک سیستم عامل برای رایانه های کوچک محبوب بود. می توانید برگردید
کنترل کننده سبک بازی های یکپارچهسازی با سیستمعامل رقص: 4 مرحله
کنترلر سبک Dancefloor Style: تحقیق در مورد MakeyMakey من فکر کردم ایده خوبی برای در آغوش گرفتن است
قاب هنری LED Pixel با هنر بازی یکپارچهسازی با سیستمعامل ، برنامه کنترل شده: 7 مرحله (همراه با تصاویر)
قاب هنری LED پیکسل با هنر بازی یکپارچهسازی با سیستمعامل ، برنامه کنترل شده: ایجاد یک برنامه کنترل کننده ART LED ART با 1024 LED که نمایشگر RETRO 80s ARCADE GAME ART Parts Pixel Makers - 59 دلار Adafruit 32x32 P4 LED Matrix - $ 49.9512x20 & 1 اینچ ضخامت - دود سبک شفاف از پلاستیک شیر