Talaan ng mga Nilalaman:
- Hakbang 1: Wat Heb Je Nodig?
- Hakbang 2: Pagpoproseso ng Code
- Hakbang 3: Code Arduino
- Hakbang 4: Reaper
- Hakbang 5: Behuizing
- Hakbang 6: Elektronica
- Hakbang 7: Mga Medewerker
Video: Retro Controller: 7 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat muziek para starten / stoppen, de pitch para verhogen, para sa terugspoelen en nog meer.
Sa pamamagitan ng iyong van van een cassette, ons doel ay ang tagapagtanggol upang makagawa ng datos sa cassette.
Hakbang 1: Wat Heb Je Nodig?
Componenten
- 2 Mga Pindutan;
- 2 Potentio metro;
- 2 weerstanden (1K elk);
- Arduino uno / nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- MDF plaat
Mga kasangkapan
- Lasercutter
- Kniptang
- Striptang
- Soldeerbout (nakilala ang lata)
Programma's
- Ilustrator / indesign (Tekenprogramma)
- Reaper
- Pagproseso
- Arduino
Hakbang 2: Pagpoproseso ng Code
/**
* Pangunahing sketch upang makatanggap ng mga Serial na mensahe mula sa Arduino * at isinalin ang mga iyon sa mga OSC-message para sa Reaper * * Kakailanganin mong iakma ang USER PARAMETERS * at kakailanganin mong mag-install ng isang Library: oscP5 * * na ginawa para sa werkcollege AV&IT * ni Annoo bob eddi * oct 2017 * * / // // ///. // ///
/ tiyaking gumagamit ka ng parehong rate ng baud sa iyong Arduino sketch final int baudRate = 115200;
// Pumunta at hanapin ang IP-address sa Reaper kapag gumagamit ng OSC // Ito ang address na ipinapadala ng Pagproseso at nakikinig si Reaper. // Ilagay ang string na ito sa remoteIP, dito.
// final String remoteIP = "192.168.1.43"; // hal. "127.0.0.1";
pangwakas na String remoteIP = "vul hier ip in gevonden in ani";
// Take note of the sendPort at punan ito sa Reaper. // Ito ang port na Pinapadala ng Pagproseso at nakikinig si Reaper.
pangwakas na int makinigPort = 11000, sendPort = 12000;
// Ang listenPort dito ay upang aktibong i-debug.
// ang mga portNames ay narito upang mag-debug din.
huling String portName = "vul hier de portname sa gevonden sa Arduino";
// final String portName = "COM6"; // "/ dev / ttyUSB0";
// ///. // //
pagproseso ng pag-import.serial. *; import java.util. *;
i-import ang oscP5. *; i-import ang netP5. *;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // The serial port boolean messageArrived = false;
Papasok na string = "", PapasokOSCMessage = "";
huling char startChar = '*', endChar = '#'; pangwakas na char contactCharacter = '|';
// Upang matiyak na ipinapadala lamang namin ang mga parameter (halaga) na nagbabago // ang mga pandaigdigang variabl na ito ay na-delcared dito ngunit hindi dapat // hindi naisimulan dito! HashMap oldParams, newParams, toSendParams;
// Kailangan naming hatiin ang mensahe sa bawat proseso ng walang bisa na proseso Pagdating () {String resVec = papasok.split (","); // nakukuha namin ang mga pares ng pangalan + halaga // kaya para sa bawat pangalan (+2)… subukan {para (int i = 0; i <resVec.length; i + = 2) {float value = Float.parseFloat (resVec [i + 1]); // ilagay ang mga ito sa bagong Hashtable newParams.put (resVec , halaga); }} // kung may naganap na error, abangan natin itong ipakita at lumabas. catch (Exception ex) {println ("Exception Message:" + ex); printArray (resVec); exit (); }}
// Upang ma-filter ang aming mga mensahe / * Tinitiyak namin na mayroon lamang isang mensahe ng OSC-out kapag * nagbabago ang input message (Serial) * Iyon ay: kung pipihitin natin / itulak ang pindutan at binago nito ang halaga. * Kaya sinala namin ang mga papasok na halaga na talagang nagbabago * tala: hindi namin maiiwasan ang mga paglukso na halaga * na nagmula sa hal. Mga accelerometro o distansya sensor * kakailanganin mong pakinisin ang iyong sarili sa Arduino * / void filterParams () {toSendParams = bago HashMap (); para sa (String key: newParams.keySet ()) {// kung ang key ay naroroon kung (oldParams.containsKey (key)) {// key na naroroon at ang halaga ay hindi pareho, pagkatapos ay i-update kung (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} iba pa {// key ay wala sa mga lumang param, kaya't ilagay ito! toSendParams.put (key, newParams.get (key)); } oldParams.put (key, newParams.get (key)); }}
void makeOSC () {para sa (String key: toSendParams.keySet ()) {OscMessage myMessage = bagong OscMessage ("/" + key); myMessage.add (toSendParams.get (key)); / * ipadala ang mensahe * / oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kapag nais naming i-print sa window na walang bisa ang ShowIncoming () {// upang makita ang papasok na mensahe, tulad ng nakatakda sa teksto ng HashMap ("Papasok mula sa Arduino", 20, 20); int y = 20; para sa (String key: newParams.keySet ()) {y = y + 20; teksto (susi, 20, y); teksto (newParams.get (key), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); PapasokOSCMessage = ""; }
walang bisa ang pag-setup () {laki (1000, 800); // Punan ang laki ng entablado (255); background (0); oldParams = bagong HashMap (); newParams = bagong HashMap (); // printArray (Serial.list ()); commsPort = bagong Serial (ito, portName, baudRate);
/ * simulan ang oscP5, pakikinig para sa papasok na mga mensahe * / oscP5 = bagong OscP5 (ito, listenPort);
/ * myRemoteLocation ay isang NetAddress. ang isang NetAddress ay tumatagal ng 2 mga parameter, * isang ip address at isang numero ng port. Ang myRemoteLocation ay ginagamit bilang parameter sa * oscP5.send () kapag nagpapadala ng mga osc packet sa isa pang computer, aparato, * application. paggamit tingnan sa ibaba. para sa mga layuning pansubok ang pakikinig port * at ang port ng malayuang lokasyon ng address ay pareho, samakatuwid ay * magpapadala ka ng mga mensahe pabalik sa sketch na ito. * / myRemoteLocation = bagong NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); Ipakita ang Papasok (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// basahin ang isang byte mula sa serial port: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // ask for more println ("simula…"); pahinga; case startChar: papasok = ""; pahinga; case endChar: messageArrived = true; // println ("katapusan ng msg"); pahinga; default: papasok + = inChar; pahinga; }}
/ * Ang papasok na mensahe ng osc ay naipasa sa pamamaraang oscEvent. * / void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // makuha ang 1st osc argument
IncomingOSCMessage + = "\ n" + String.format ("natanggap ang isang osc message:" + "addrpattern:" + theOscMessage.addrPattern () + ":% f", halaga); println (PapasokOSCMessage); }
Hakbang 3: Code Arduino
/ * Ang code na ito ay isang pangunahing sketch upang makipag-usap sa Pagproseso sa pamamagitan ng Serial.
Ito ay isang blueprint kung saan maaari mong ilagay ang iyong sariling code na tinukoy para sa iyong sariling mga pindutan, potentiometers o sensor.
Mayroon itong isang handshake upang matiyak na mayroon kaming contact at ang format na kung saan kami nakikipag-usap ay napagpasyahan
Mahalagang buuin ang mensahe sa parehong paraan, upang malaman ng Pagproseso kung paano ito deconstruct at magpadala ng mga tamang mensahe ng OSC sa aming DAW
ginawa para sa werkcollege AV&IT oct 2017
code smooothing nilikha noong Abril 22, 2007 ni David A. Mellis binago noong 9 Abril 2012 ni Tom Igoe
*/
/ baud rate const long baudRate = 115200;
// oras upang maghintay sa ms sa pagitan ng mga botohan sa mga pin const int loopPuseTime = 200; // milli segundo
// mga halaga ng pagsisimula at pagtatapos para sa mensahe na ipinadala sa Serial const String startString = "*", endString = "#";
Const char contactCharacter = '|';
// pin id's int int buttonPin1 = 2; Const int buttonPin2 = 5; const int numReadings = 5; // rate van smoothing
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// other global variable variable button buttonState1 = 0; int buttonState2 = 0; // variable para sa pagbabasa ng pushbutton status float sensorValue1 = 0; float sensorValue2 = 0; float sensorValue3 = 0;
// smoothing int readings [numReadings]; // the readings from the analog input int readIndex3 = 0; // ang index ng kasalukuyang pagbabasa int total3 = 0; // the running total float average3 = 0; // ang karaniwan
// Kailangan namin ang pagpapaandar na ito upang maitaguyod ang pakikipag-ugnay sa Pagproseso ng sketch // Panatilihin ito dito na walang bisa ang establishContact () {habang (Serial.available () <= 0) {Serial.print (contactCharacter); // magpadala ng char at maghintay para sa isang tugon… pagkaantala (loopPauseTime); } Serial.read (); }
void setup () {// itakda ang mga pinMode para sa lahat ng mga pin pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// initialize Serial comms Serial.begin (baudRate); habang (! Serial); // smoothing for (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// wait for handshake establishContact (); }
void loop () {// poll lahat ng mga pin at mapa ang pagbabasa sa naaangkop na button buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// maping ang mga papasok na halaga sa kinakailangang mga halaga sensorValue1 = mapa (sensorValue1, 0, 1023, 0, 100.0) / - 100.0; sensorValue2 = mapa (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = mapa (sensorValue3, 0, 700, 50, 100);
// smoothing sensor: total3 = total3 - readings [readIndex3]; // read from the sensor: readings [readIndex3] = sensorValue3; // idagdag ang pagbabasa sa kabuuan: total3 = total3 + readings [readIndex3]; // advance sa susunod na posisyon sa array: readIndex3 = readIndex3 + 1;
// kung nasa dulo kami ng array … kung (readIndex3> = numReadings) {// … balot sa umpisa: readIndex3 = 0; } // kalkulahin ang average: average3 = (total3 / numReadings); // smoothing sensor
Serial.print (startString); // simulan ang isang pagkakasunud-sunod ng mensahe // wirte ang lahat ng mga pangalan, mga pares ng halaga, na pinaghihiwalay ng mga kuwit na 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 (average3 / 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);
// isulat ang katapusan ng mensahe Serial.print (endString);
// teka sandali..
antala (loopPauseTime); }
Hakbang 4: Reaper
Stap 1: Ga bovenaan naar Mga Pagpipilian> Mga Prefrence
Stap 2: Ga sa prefrences naar Control / OSC / web at idagdag ang Magdagdag
Stap 3: Kies bij Control ibabaw mode voor OSC (Buksan ang Sound Control)
Stap 4: Pangalan ng aparatong aparato sa, vink Recieve sa port aan en vul sa wat er sa pagproseso ng Sendport staat
Stap 5: Ang Kopieer de Host IP ay namatay sa pamamagitan ng pag-proseso sa Pagproseso
Stap 6: Ang Druk op ok en de controller ay ang verbonden na nakilala ang Reaper
Hakbang 5: Behuizing
Breedte: 170 mm
Lengte: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (diameter
Potentio metro: 3 mm (diameter)
Afstand sensor: Breedte 2.9 mm
Lengte 0.8 mm
Materiaal: MDF (3mm)
Hakbang 6: Elektronica
Stap 1:
Ang Verbind de ground en 5 volt van Arduino ay nakilala ang het breadboard
Stap 2:
Ang Verbind pin A0 ay nakilala ang potentio 1
Ang Verbind pin A1 ay nakilala potentio 2
Nakilala ng Verbind pin A3 ang infrarood sensor.
Ang pandikit na pin na A2 ay nakilala ang malagkit na pindutan.
Ang Verbind pin A5 ay nakilala ang de sticky button.
Hakbang 7: Mga Medewerker
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Inirerekumendang:
Retro Arcade - (Buong Laki na Pinapagana ng Raspberry Pi): 8 Hakbang
Retro Arcade - (Buong Laki na Pinapagana ng Raspberry Pi): Una Nais kong pasalamatan ka sa pagtingin sa gabay sa pagbuo para sa Retro Arcade system na ito. Kumukuha ako ng isang mas matandang arcade box at inilalagay ito sa isang standalone cabinet na may isang 24-inch widescreen monitor. Ang mga sukat sa patnubay na ito ay magaspang upang mabigyan ka
Napakalaking Retro Games Dancefloor Style Controller: 4 na Hakbang
Napakalaking Retro Games Dancefloor Style Controller: Para sa aming Kasal noong Marso ng taong ito nais namin ang isang Retro na may temang pagdiriwang na may temang Retro, dahil napakalaking bata lang namin at sigurado akong marami ding mga tao! Kaya pagkatapos ng kaunting pananaliksik sa MakeyMakey's Akala ko magiging isang kahanga-hangang ideya na gumawa ng isang yakap
Batay sa Arduino DIY Game Controller - Arduino PS2 Game Controller - Paglalaro ng Tekken Sa DIY Arduino Gamepad: 7 Mga Hakbang
Batay sa Arduino DIY Game Controller | Arduino PS2 Game Controller | Nagpe-play ng Tekken Sa DIY Arduino Gamepad: Kamusta, ang paglalaro ng mga laro ay laging masaya ngunit ang paglalaro ng iyong sariling DIY custom na laro Controller ay mas masaya. Kaya gagawa kami ng isang laro Controller gamit ang arduino pro micro sa mga itinuturo na ito
YABC - Ngunit Isa pang Blynk Controller - IoT Cloud Temperature at Humidity Controller, ESP8266: 4 na Hakbang
YABC - Ngunit Isa pang Controller ng Blynk - IoT Cloud Temperature and Humidity Controller, ESP8266: Kumusta Mga Gumagawa, Kamakailan ko sinimulan ang lumalagong mga kabute sa bahay, Mga kabute ng Oysters, ngunit mayroon na akong 3x ng mga tagakontrol na ito sa bahay para sa kontrol ng Fermenter Temperature para sa aking serbesa sa bahay, asawa ginagawa rin ang bagay na Kombucha na ito ngayon, at bilang isang Termostat para sa Heat
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 Hakbang (na may Mga Larawan)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Tuluyan kong tinanggal ang ryan97128 sa kanyang disenyo para sa Nintendo Controller MP3, Bersyon 2.0 at naririnig kong nakuha niya ang ideya mula sa lahat ng matalinong Morte_Moya, kaya't hindi ako makakakuha ng kredito para sa lahat ng kanilang henyo. Nais ko lamang idagdag ang kaginhawaan at recharge-