Cov txheej txheem:
- Kauj ruam 1: Wat Heb Je Nodig?
- Kauj ruam 2: Txoj Cai Ua
- Kauj ruam 3: Code Arduino
- Kauj ruam 4: Reaper
- Kauj ruam 5: Behuizing
- Kauj Ruam 6: Elektronica
- Kauj Ruam 7: Medewerkers
Video: Retro Controller: 7 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:30
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.
Samen hebben peb een muziek maub los gemaakt dat muziek kan starten/stoppen, de pitch kan verhogen, kan terugspoelen en nog meer.
Ons idee kwam van van een cassette, ons doel was om een controller te maken dat lijkt op een cassette.
Kauj ruam 1: Wat Heb Je Nodig?
Cheebtsam
- 2 Khawm;
- 2 Potentio meters;
- 2 weerstanden (1K elk);
- Arduino uno/nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- MDF plag tsev
Cov cuab yeej
- Lasercutter
- Ua tsaug
- Striptang
- Soldeerbout (ntsib tin)
Qhov programma
- Tus tsim/tsim tawm (Tekenprogramma)
- Tus Reaper
- Ua
-Ua Arduino
Kauj ruam 2: Txoj Cai Ua
/**
* Cov duab kos yooj yim kom tau txais cov lus xov xwm los ntawm Arduino * thiab txhais cov ntawd rau OSC-lus rau Reaper * * Koj yuav xav tau hloov tus USER PARAMETERS * thiab koj yuav tsum tau teeb tsa Lub Tsev Qiv Ntawv: oscP5 * * ua rau werkcollege AV & IT * los ntawm annoo bob eddi * oct 2017 * *////////////////////// USER PARAMETERS //////////////////// ////////
/ xyuas kom tseeb tias koj siv tus lej baud zoo ib yam hauv koj li Arduino kos duab zaum kawg int baudRate = 115200;
// Mus thiab nrhiav tus IP-chaw nyob hauv Reaper thaum siv OSC // Nov yog qhov chaw nyob Ua cov xa mus rau thiab Reaper mloog. // Muab txoj hlua no tso rau hauv remoteIP, ntawm no.
// kawg txoj hlua remoteIP = "192.168.1.43"; // np. "127.0.0.1";
Txoj hlua kawg remoteIP = "vul hier ip in gevonden in reaper";
// Nco tseg ntawm sendPort thiab sau qhov no hauv Reaper. // Nov yog qhov chaw nres nkoj Kev xa mus rau thiab Reaper mloog.
kawg int listenPort = 11000, sendPort = 12000;
// Lub mloog lus ntawm no yog txhawm rau txhawm rau debug.
// portNames nyob ntawm no los debug ib yam.
String portName kawg = "vul hier de portname hauv gevonden hauv Arduino";
// kawg String portName = "COM6"; // "/dev/ttyUSB0";
/////////////////////// END ntawm USER PARAMETERS /////////////////////////// ////
ntshuam ua.serial.*; ntshuam java.util.*;
ntshuam oscP5.*; ntshuam netP5.*
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Lub serial chaw nres nkoj boolean messageArrived = tsis tseeb;
Txoj hlua tuaj = "", IncomingOSCMessage = "";
kawg char startChar = '*', endChar = '#'; kawg char contactCharacter = '|';
// Kom paub tseeb tias peb tsuas yog xa cov ntsuas (qhov tseem ceeb) uas hloov pauv // cov ntiaj teb no cov kev hloov pauv tau raug tshem tawm ntawm no tab sis yuav tsum // tsis tau pib ua ntej ntawm no! HashMap oldParams, newParams, toSendParams;
// Peb yuav tsum faib cov lus ntawm txhua qhov tsis muaj dab tsi comma processIncoming () {String resVec = incoming.split (","); // peb tau txais lub npe+tus nqi khub // yog li rau txhua lub npe (+2)… sim {rau (int i = 0; kuv <resVec.length; kuv+= 2) {ntab tus nqi = Float.parseFloat (resVec [kuv+ 1]); // muab lawv tso rau hauv Hashtable newParams.put tshiab (resVec , tus nqi); }} // Yog tias muaj qhov yuam kev tshwm sim, cia peb ntes nws tso tawm thiab tawm mus. catch (Exception ex) {println ("Xov Xwm Zam:" + ex); printArray (resVec); tawm (); }}
// Txhawm rau lim peb cov lus/ * Peb paub tseeb tias tsuas muaj OSC-tawm lus thaum * cov lus nkag (Serial) hloov pauv * Ntawd yog: yog peb tig/thawb lub pob thiab nws hloov tus nqi. * Yog li peb lim tawm cov txiaj ntsig tuaj uas hloov pauv tiag tiag * ceeb toom: peb yuav tsis zam kev dhia qhov tseem ceeb * raws li los ntawm piv txwv li kev ntsuas nrawm lossis ntsuas qhov deb * koj yuav tsum tau ua kom zoo rau koj tus kheej hauv Arduino */ khoob khoob filterParams () {toSendParams = tshiab HashMap (); rau (Txoj hlua tseem ceeb: newParams.keySet ()) {// yog tias tus yuam sij twb muaj tam sim no yog (oldParams.containsKey (tus yuam sij)) {{qhov tseem ceeb tam sim no thiab tus nqi tsis zoo ib yam, tom qab ntawd hloov tshiab yog (! oldParams.get (tus yuam sij).equals (newParams.get (qhov tseem ceeb))) {toSendParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb))); }} lwm qhov {// qhov tseem ceeb tsis muaj nyob hauv cov params qub, yog li muab tso rau! toSendParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb)); } oldParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb)); }}
void makeOSC () {rau (Txoj hlua tseem ceeb: toSendParams.keySet ()) {OscMessage myMessage = tshiab OscMessage ("/"+ qhov tseem ceeb); myMessage.add (toSendParams.get (qhov tseem ceeb)); / * xa xov */ oscP5.send (myMessage, myRemoteLocation); }}
tsis muaj dab tsi translateMessage () {processIncoming (); filterParams (); cov makeOSC (); } // Thaum peb xav luam tawm rau lub qhov rai tsis muaj dab tsi ShowIncoming () {// kom pom cov lus xa tuaj, raws li teev hauv HashMap ntawv ("Tuaj los ntawm Arduino", 20, 20); int y = 20; rau (Txoj hlua tseem ceeb: newParams.keySet ()) {y = y+20; ntawv (qhov tseem ceeb, 20, y); ntawv (newParams.get (qhov tseem ceeb), 300, y); }}
tsis muaj dabtsis showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
teeb tsa tsis muaj dab tsi () {qhov loj me (1000, 800); // Theem loj sau (255); keeb kwm yav dhau (0); oldParams = tshiab HashMap (); newParams = tshiab HashMap (); // printArray (Serial.list ()); commsPort = Serial tshiab (qhov no, portName, baudRate);
/ * pib oscP5, mloog cov lus nkag */ oscP5 = tshiab OscP5 (qhov no, mloog qhov chaw);
/* myRemoteLocation yog NetAddress. NetAddress siv 2 qhov ntsuas, * tus IP chaw nyob thiab tus lej chaw nres nkoj. myRemoteLocation tau siv ua qhov ntsuas hauv * oscP5.send () thaum xa osc pob ntawv mus rau lwm lub computer, ntaus ntawv, * daim ntawv thov. siv saib hauv qab no. rau kev ntsuam xyuas lub hom phiaj mloog chaw nres nkoj * thiab chaw nres nkoj ntawm qhov chaw nyob deb yog qhov zoo ib yam, yog li koj yuav * xa xov rov qab mus rau qhov kos duab no. */ myRemoteLocation = NetAddress tshiab (remoteIP, sendPort); }
kos tsis muaj dabtsis () {yog (messageArrived) {keeb kwm yav dhau (0); Txhais lus (); ShowIncoming (); messageArrived = tsis tseeb; } showOsc (); }
void serialEvent (Serial commsPort) {// nyeem ib byte los ntawm qhov chaw nres nkoj txuas: char inChar = commsPort.readChar (); hloov (inChar) {case contactCharacter: commsPort.write (contactCharacter); // nug kom tau ntau println ("pib …"); tawg; rooj plaub startChar: tuaj = ""; tawg; rooj plaub endChar: messageArrived = muaj tseeb; // println ("kawg ntawm msg"); tawg; default: khoom += inChar; tawg; }}
/* cov lus osc xa tuaj raug xa mus rau cov txheej txheem oscEvent. */ void oscEvent (OscMessage theOscMessage) {tus nqi ntab = theOscMessage.get (0).floatValue (); // tau txais 1st osc kev sib cav
IncomingOSCMessage + = "\ n" + String.format ("### tau txais cov lus osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", tus nqi); println (IncomingOSCMessage); }
Kauj ruam 3: Code Arduino
/* Cov cai no yog cov duab kos yooj yim los tham nrog Kev Ua Haujlwm dhau los.
Nws yog daim phiaj xwm uas koj tuaj yeem tso koj tus lej cim tshwj xeeb rau koj tus kheej cov nyees khawm, lub zog loj lossis lub ntsuas pa.
Nws muaj kev tuav tes kom paub tseeb tias peb muaj kev sib cuag thiab hom uas peb tab tom sib tham tau txiav txim siab
Nws yog ib qho tseem ceeb los tsim cov lus no ib yam nkaus, yog li Kev Ua Haujlwm paub yuav tsim kho nws li cas thiab xa cov lus OSC raug rau peb DAW
ua rau werkcollege AV&IT lub kaum hli ntuj 2017
code smooothing tsim 22 Plaub Hlis 2007 los ntawm David A. Mellis hloov kho 9 Plaub Hlis 2012 los ntawm Tom Igoe
*/
/ baud tus nqi const ntev baudRate = 115200;
// sijhawm tos hauv ms ntawm kev xaiv tsa mus rau tus pin const int loopPauseTime = 200; // milli vib nas this
// pib thiab xaus qhov tseem ceeb rau cov lus xa hauv Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // tus nqi van du
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// lwm yam kev hloov pauv thoob ntiaj teb int buttonState1 = 0; int buttonState2 = 0; // sib txawv rau kev nyeem ntawv lub laub khawm xwm txheej ntab sensorValue1 = 0; ntab sensorValue2 = 0; ntab sensorValue3 = 0;
// smoothing int nyeem [numReadings]; // kev nyeem los ntawm cov lus qhia analog int readIndex3 = 0; // qhov ntsuas ntawm kev nyeem tam sim no int total3 = 0; // qhov khiav tag nrho ntab nruab nrab3 = 0; // qhov nruab nrab
// Peb xav tau txoj haujlwm no txhawm rau tsim kev sib cuag nrog Kev kos duab kos // Khaws cia ntawm no tsis muaj dabtsis tsim kev sib cuag () {thaum (Serial.available () <= 0) {Serial.print (contactCharacter); // xa tus lej thiab tos rau lo lus teb… ncua (loopPauseTime); } Serial.read (); }
teeb tsa tsis muaj dab tsi () {// teeb tsa pinModes rau txhua tus pin pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// initialize Serial comms Serial.begin (baudRate); thaum (! Serial); // smoothing rau (int thisReading = 0; thisReading <numReadings; thisReading ++) {nyeem [thisReading] = 0; }
// tos rau kev tuav tes tsimContact (); }
lub voj void () {// pov npav tag nrho cov pins thiab daim ntawv qhia kev nyeem ntawv rau qhov tsim nyog ntau yam buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// daim ntawv qhia tus nqi nkag mus rau qhov tsim nyog qhov tseem ceeb sensorValue1 = daim ntawv qhia (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = daim ntawv qhia (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = daim ntawv qhia (sensorValue3, 0, 700, 50, 100);
// smoothing sensor: total3 = total3 - nyeem [readIndex3]; // nyeem los ntawm lub sensor: nyeem [readIndex3] = sensorValue3; // ntxiv qhov nyeem rau tag nrho: total3 = total3 + nyeem [readIndex3]; // ua ntej mus rau txoj haujlwm tom ntej hauv kab lus: readIndex3 = readIndex3 + 1;
// yog tias peb nyob ntawm qhov kawg ntawm kab lus… yog (readIndex3> = numReadings) {//… qhwv ncig mus rau qhov pib: readIndex3 = 0; } // xam qhov nruab nrab: nruab nrab 3 = (total3 / numReadings); // smoothing sensor
Serial.print (startString); // pib cov lus sib txuas // wirte txhua lub npe, tus lej muaj nuj nqis, sib cais los ntawm commas 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 (nruab nrab 3/100); Serial.print (",");
Serial.print ("pob 1 hauv 2 wit"); Serial.print (","); Serial.print (buttonState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (buttonState2);
// sau qhov kawg ntawm cov lus Serial.print (endString);
// tos ib pliag..
ncua (loopPauseTime); }
Kauj ruam 4: Reaper
Kauj ruam 1: Xaiv cov kev xaiv> Prefrences
Stap 2: Ga in prefrences naar Control/OSC/web en druk op Ntxiv
Kauj Ruam 3: Kies bij Tswj lub ntsej muag hom voor OSC (Qhib Suab Tswj)
Kauj Ruam 4: Vul je ntaus lub npe hauv, vink Tau txais ntawm chaw nres nkoj aan en vul hauv wat er hauv kev ua bij Sendport staat
Kauj Ruam 5: Kopieer de Host IP tuag je hier ziet en vul deze hauv Kev Ua
Stap 6: Druk op ok en de controller yog nu verbonden ntsib Reaper
Kauj ruam 5: Behuizing
Qhov siab: 170 mm
Loj: 90mm
Hoogte 30 mm
Knoppen: 16 hli (txoj kab uas hla
Potentio meters: 3 hli (txoj kab uas hla)
Qhov siab sensor: Breedte 2.9 hli
Ntev 0.8 hli
Khoom siv: MDF (3mm)
Kauj Ruam 6: Elektronica
Kauj ruam 1:
Cov lus qhia hauv av en 5 volt van Arduino ntsib het breadboard
Kauj ruam 2:
Verbind tus pin A0 ntsib nrog lub zog 1
Verbind tus pin A1 ntsib nrog lub zog 2
Verbind tus pin A3 ntsib infrarood sensor.
Verbind pin A2 ntsib de niet nplaum khawm.
Verbind tus pin A5 tau ntsib de nplaum khawm.
Kauj Ruam 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Pom zoo:
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom - Cov Kauj Ruam ntawm Kauj Ruam: 4 Kauj Ruam
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom | Cov kauj ruam ib kauj ruam: Hauv txoj haujlwm no, kuv yuav tsim qhov yooj yim Arduino Tsheb Rov Qab Tsheb Nres Tsheb Nres Sensor Siv Arduino UNO thiab HC-SR04 Ultrasonic Sensor. Qhov no Arduino raws Lub Tsheb Rov Qab ceeb toom tuaj yeem siv rau Kev Tshawb Fawb Txog Tus Kheej, Robot Ranging thiab lwm yam
Arduino Attiny85 Smart Controller Controller: 3 Kauj Ruam
Arduino Attiny85 Ntse Tus Kheej Tswj:
Loj Retro Games Dancefloor Style Controller: 4 Kauj Ruam
Loj heev Retro Games Dancefloor Style Controller: Rau peb kab tshoob nyob rau lub Peb Hlis xyoo no peb xav tau Retro game themed txais tos tog, raws li peb tsuas yog menyuam yaus loj ntawm lub siab thiab kuv paub tseeb tias ntau lwm tus neeg ib yam nkaus! Yog li tom qab me ntsis ntawm tshawb fawb rau MakeyMakey's Kuv xav tias nws yuav yog lub tswv yim txaus los puag
Arduino Raws DIY Game Controller - Arduino PS2 Game Controller - Ua Si Tekken Nrog DIY Arduino Gamepad: 7 Kauj Ruam
Arduino Raws DIY Game Controller | Arduino PS2 Game Controller | Ua Si Tekken Nrog DIY Arduino Gamepad: Nyob zoo cov neeg, ua si game yog ib txwm lom zem tab sis ua si nrog koj tus kheej DIY kev cai game Controller yog kev lom zem dua.Yog li peb yuav ua tus tswj kev ua si siv arduino pro micro hauv cov lus qhia no
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 Kauj Ruam (nrog Duab)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Kuv tag ripped tawm ryan97128 ntawm nws tsim rau Nintendo Controller MP3, Version 2.0 thiab kuv hnov tias nws tau txais lub tswv yim los ntawm txhua qhov txawj ntse Morte_Moya, yog li kuv tsis tuaj yeem siv credit rau tag nrho lawv cov ntse. Kuv tsuas yog xav ntxiv qhov yooj yim dua thiab rov them dua