Sisällysluettelo:
- Vaihe 1: Wat Heb Je Nodig?
- Vaihe 2: Koodin käsittely
- Vaihe 3: Koodi Arduino
- Vaihe 4: Reaper
- Vaihe 5: Behuizing
- Vaihe 6: Elektronica
- Vaihe 7: Medewerkers
Video: Retro -ohjain: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) a Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat muziek kan starten/stoppen, de pitch can verhogen, can terugspoelen en nog meer.
On idee kwam van van een cassette, ons doel oli om een controller ja se oli ladattuna sen kasetin kanssa.
Vaihe 1: Wat Heb Je Nodig?
Componenten
- 2 painiketta;
- 2 potentiometriä;
- 2 ymmärrystä (1K hirvi);
- Arduino uno/nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- MDF -levy
Työkalut
- Laserleikkuri
- Kniptang
- Striptang
- Soldeerbout (met tin)
Ohjelmat
- Kuvittaja/indesign (Tekenprogramma)
- Reaper
- Käsittely
- Arduino
Vaihe 2: Koodin käsittely
/**
* Perusluonnos sarjaviestien vastaanottamiseksi Arduinolta * ja kääntää ne OSC-viesteiksi Reaperille * * Sinun on mukautettava KÄYTTÄJÄN PARAMETRIT * ja asennettava kirjasto: oscP5 * *, joka on tehty werkcollege AV&IT: lle *, jonka on kirjoittanut annoo bob eddi * lokakuu 2017 * *////////////////////// KÄYTTÄJÄN PARAMETRIT /////////////////// ////////
/ varmista, että käytät samaa baudinopeutta Arduinon luonnoksen lopullisessa int baudRate = 115200;
// Mene ja etsi IP-osoite Reaperista, kun käytät OSC: tä // Tämä on osoite, jonka Processing lähettää ja Reaper kuuntelee. // Laita tämä merkkijono remoteIP: hen, tänne.
// lopullinen merkkijono remoteIP = "192.168.1.43"; //esim. "127.0.0.1";
final String remoteIP = "vul hier ip in gevonden in reaper";
// Merkitse sendPort muistiin ja täytä se Reaperissa. // Tämä on portti, jonka Processing lähettää ja Reaper kuuntelee.
final int listenPort = 11000, sendPort = 12000;
// Kuunteluportti on aktiivinen virheenkorjaus.
// portNames ovat täällä myös virheenkorjausta varten.
final String portName = "vul hier de portname in gevonden in Arduino";
// lopullinen merkkijono portName = "COM6"; // "/dev/ttyUSB0";
////////////////////// KÄYTTÄJÄ PARAMETRIT //////////////////////// ////
tuonti käsittely. sarja.*; tuo java.util.*;
tuoda oscP5.*; tuonti netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Sarja commsPort; // Sarjaportin boolean messageArrived = false;
Merkkijono saapuva = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Varmistaaksemme, että lähetämme vain muuttuvat parametrit (arvot) // nämä yleiset muuttujat on poistettu täältä, mutta niitä ei // tule alustaa täällä! HashMap oldParams, newParams, toSendParams;
// Meidän on jaettava viesti jokaisessa pilkuilla tyhjässä prosessissaIncoming () {String resVec = saapuva.split (","); // saamme nimi+arvoparit // niin jokaiselle nimelle (+2)… yritä {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // laita ne uuteen hashtable newParams.put (resVec , arvo); }} // jos tapahtuu virhe, otamme sen näytölle ja poistumme. catch (Exception ex) {println ("Poikkeusviesti:" + ex); printArray (resVec); exit (); }}
// Viestiemme suodattaminen/ * Varmistamme, että OSC-out-viesti tulee vain, kun * syöttöviesti (sarja) muuttuu * Toisin sanoen: jos käännämme/painamme painiketta ja se muuttaa arvoa. * Joten suodatamme pois saapuvat arvot, jotka todella muuttuvat * Huomaa: emme vältä hyppääviä arvoja *, jotka tulevat esimerkiksi kiihtyvyysmittarista tai etäisyysanturista * sinun on tasoitettava ne itse Arduinossa */ void filterParams () {toSendParams = new HashMap (); for (String key: newParams.keySet ()) {// jos avain on jo olemassa jos (oldParams.containsKey (key)) {// avain on olemassa ja arvo ei ole sama, päivitä jos (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// avain ei ole vanhoissa parametreissa, joten laita se! toSendParams.put (avain, newParams.get (avain)); } oldParams.put (avain, newParams.get (avain)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (avain)); / * lähetä viesti */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kun haluamme tulostaa ikkunaan void ShowIncoming () {// nähdäksesi saapuvan viestin HashMap -tekstin mukaisesti ("Incoming from Arduino", 20, 20); int y = 20; for (Merkkiavain: newParams.keySet ()) {y = y+20; teksti (näppäin, 20, y); teksti (newParams.get (avain), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {koko (1000, 800); // Vaiheen koon täyttö (255); tausta (0); oldParams = uusi HashMap (); newParams = uusi HashMap (); // printArray (Serial.list ()); commsPort = uusi sarja (tämä, portin_nimi, baudinopeus);
/ * aloita oscP5, kuuntele saapuvia viestejä */ oscP5 = uusi OscP5 (tämä, ListenPort);
/* myRemoteLocation on NetAddress. NetAddress sisältää 2 parametria, * IP -osoitteen ja portin numeron. myRemoteLocationia käytetään parametrina * oscP5.send () -kohdassa, kun osc -paketteja lähetetään toiseen tietokoneeseen, laitteeseen tai sovellukseen. käyttö alla. testausta varten kuunteluportti * ja etäsijaintiosoitteen portti ovat samat, joten * lähetät viestejä takaisin tähän luonnokseen. */ myRemoteLocation = uusi NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// lukee tavun sarjaportista: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // kysy lisää println ("alkaa…"); tauko; tapaus startChar: saapuva = ""; tauko; tapaus endChar: messageArrived = true; // println ("viestin loppu"); tauko; oletus: saapuva += inChar; tauko; }}
/* saapuva osc -viesti välitetään oscEvent -menetelmälle. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // hanki 1. osc -argumentti
IncomingOSCMessage + = "\ n" + String.format ("### sai osc -viestin:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", arvo); println (IncomingOSCMessage); }
Vaihe 3: Koodi Arduino
/* Tämä koodi on perusluonnos kommunikoidaksesi prosessoinnin kanssa sarjaportin kautta.
Se on suunnitelma, johon voit laittaa oman koodin, joka on määritetty omille painikkeille, potentiometreille tai antureille.
Sillä on kädenpuristus sen varmistamiseksi, että olemme yhteydessä ja että kommunikointimuoto on päätetty
On tärkeää rakentaa viesti samalla tavalla, jotta käsittely osaa purkaa sen ja lähettää oikeat OSC-viestit DAW: lle
tehty werkcollege AV&IT: lle lokakuussa 2017
koodin tasoitus luotu 22. huhtikuuta 2007 David A. Mellisin muokkaamana 9. huhtikuuta 2012 tekijä Tom Igoe
*/
/ baudinopeus vakio baudinopeus = 115200;
// odotusaika ms: ssa äänestysten välillä nastat const int loopPauseTime = 200; // milli sekuntia
// Serial const -merkkijonon lähettämän viestin alku- ja lopetusarvot String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin -tunnuksen const int -painikePin1 = 2; const int -painikePin2 = 5; const int numReadings = 5; // arvioi van tasoitus
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// muut globaalimuuttujat int buttonState1 = 0; int -painikeTila2 = 0; // muuttuja painikkeen tilan float sensorValue1 = 0 lukemiseen float sensorValue2 = 0; float sensorValue3 = 0;
// int -lukujen tasoittaminen [numReadings]; // analogisen tulon lukemat int readIndex3 = 0; // nykyisen lukeman indeksi int total3 = 0; // juoksevan kokonaiskellukkeen keskiarvo3 = 0; // keskimääräinen
// Tarvitsemme tätä toimintoa yhteyden luomiseksi käsittelyluonnokseen // Pidä se täällä void estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // lähetä char ja odota vastausta… delay (loopPauseTime); } Sarja.luku (); }
void setup () {// aseta pinModes kaikille nastoille pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// alustetaan sarjakommentit Serial.begin (baudRate); while (! Sarja); // tasoitus (int thisReading = 0; thisReading <numReadings; thisReading ++) {lukemat [thisReading] = 0; }
// odota kädenpuristusta createContact (); }
void loop () {// kysele kaikki nastat ja yhdistä lukema sopivaan alueeseen buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analoginenLuku (pitchReading); sensorValue2 = analoginenLuku (nopeusluku); sensorValue3 = analoginenLue (infraReading);
// tulevien arvojen yhdistäminen tarvittaviin arvoihin sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = kartta (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = kartta (sensorValue3, 0, 700, 50, 100);
// tasoitusanturi: total3 = total3 - lukemat [readIndex3]; // lukea anturista: lukemat [readIndex3] = sensorValue3; // lisää lukema kokonaismäärään: total3 = total3 + lukemat [readIndex3]; // siirtyminen taulukon seuraavaan kohtaan: readIndex3 = readIndex3 + 1;
// jos olemme taulukon lopussa… if (readIndex3> = numReadings) {//… kääri alkuun: readIndex3 = 0; } // laskea keskiarvo: keskiarvo3 = (yhteensä3 / lukumäärä); // tasoitusanturi
Serial.print (startString); // aloita viestisarja // tyhjennä kaikki nimet, arvoparit, erotettuna pilkuilla Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("infra-anturi"); Serial.print (","); Sarjanjälki (keskiarvo3/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);
// kirjoita viestin loppu Serial.print (endString);
// odota hetki..
delay (loopPauseTime); }
Vaihe 4: Reaper
Vaihe 1: Ga bovenaan naar Options> Prefrences
Vaihe 2: Esiasetukset naar Control/OSC/web en druk op Add
Vaihe 3: Kies bij Control -pintatila voor OSC (Open Sound Control)
Vaihe 4: Vul je -laitteen nimi, vink Vastaanota portin portaalin en vul -virrassa prosessin käsittelyssä Sendport staat
Vaihe 5: Kopioi isäntä IP -osoitteeseen ja käsittele sitä
Vaihe 6: Ohjain on ok ja ohjain on verbonden Reaper
Vaihe 5: Behuizing
Rungon halkaisija: 170 mm
Pituus: 90 mm
Halkaisija 30 mm
Nuppi: 16 mm (halkaisija)
Potentiometrit: 3 mm (halkaisija)
Afstand -anturi: Breedte 2,9 mm
Pituus 0,8 mm
Materiaali: MDF (3mm)
Vaihe 6: Elektronica
Vaihe 1:
Verbind de ground ja 5 voltin Arduino ja hetki leipälauta
Vaihe 2:
Verbind -nasta A0 ja potentio 1
Verbind -tappi A1 ja potentio 2
Verbind -nasta A3 ja infrarood -anturi.
Verbind -nasta A2 ja tahmea painike.
Verbind -nasta A5 ja tahmea painike.
Vaihe 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Suositeltava:
Retro Arcade - (täysikokoinen Powered by Raspberry Pi): 8 vaihetta
Retro Arcade - (täysikokoinen Powered by Raspberry Pi): Halusin ensin kiittää sinua tämän Retro Arcade -järjestelmän rakennusoppaan katsomisesta. Otan vanhemman arcade-laatikon ja asetan sen erilliseen kaappiin, jossa on 24 tuuman laajakuvanäyttö. Tämän oppaan mittaukset ovat karkeita antaakseen sinulle
Retro "Rayotron" -yövalo (osa 1): 16 vaihetta
Retro "Rayotron" -yövalo (osa 1): Johdanto Joulukuussa 1956 Atomic Laboratories mainosti Rayotronin "ensimmäisenä edullisena sähköstaattisena generaattorina ja hiukkaskiihdyttimenä" luonnontieteiden opettajille ja harrastajille [1]. Rayotron oli ylimitoitettu, kumivyöllä ladattu
Retro CP/M Stand Alone -emulaattori: 8 vaihetta
Retro CP/M Stand Alone -emulaattori: Tämä projekti käyttää VGA32 ESP v1.4 -moduulia yhdistelmän suorittamiseen tai RunCPM ja FabGL tarjoavat erillisen tietokoneen, joka käyttää CP/M 2.2 -järjestelmää vastaavaa järjestelmää. Suosittu 1980 -luvulla pientietokoneiden käyttöjärjestelmänä. Voit palata sisään
Micro Centerin 2 pelaajan Stand-Up Retro Arcade: 20 vaihetta
Micro Centerin 2 pelaajan Stand-Up Retro Arcade: Paikallisessa Micro Centerissä on nyt kaikki mitä tarvitset oman Raspberry Pi -pohjaisen Retro Arcade -kaapin tekemiseen. Sarjat ovat täysin muokattavissa, ja niihin kuuluvat kaappi, Raspberry Pi, painikkeet, ohjaussauvat, ääni- ja videotarvikkeet ja paljon muuta. Se
Raspberry Pi Retro -pelikoneen asennus: 5 vaihetta
Raspberry Pi Retro Gaming Machine -asetus: Retro-arcade-pelien kopioimiseksi tietokoneen alkuvaiheista Rasberry Pi ja Retropie-järjestelmä ovat erinomaisia kotiasetusten tekemiseen vanhoille peleille, joita haluat ehkä pelata tai harrastuksena oppii Pi. Tämä järjestelmä on ollut l