Obsah:
- Krok 1: Wat Heb Je Nodig?
- Krok 2: Spracovanie kódu
- Krok 3: Kódujte Arduino
- Krok 4: Žací stroj
- Krok 5: Behuizácia
- Krok 6: Elektronika
- Krok 7: Medewerkers
Video: Retro ovládač: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Viac informácií nájdete v hlavnom článku Multimédiá a komunikácia (Multec) a Erasmushogeschool v Bruseli.
Máme veľa hudobných ovládačov, ktoré môžu spúšťať/zastavovať hudobné súbory, vytvárať rôzne zvuky, vytvárať terény a vytvárať ďalšie zvuky.
Ons idee kwam van van een cassette, ons doel was om een controller te maken dat lijkt op een cassette.
Krok 1: Wat Heb Je Nodig?
Componenten
- 2 tlačidlá;
- 2 potenciometre;
- 2 stojky (1k los);
- Arduino uno/nano
- Draadjes (zie elektronická schéma)
- Soldeerplaat
- MDF doska
Nástroje
- Laserový rezač
- Kniptang
- Striptang
- Soldeerbout (met cín)
Programy
- Ilustrátor/indesign (Tekenprogramma)
- Žnec
- Spracovanie
- Arduino
Krok 2: Spracovanie kódu
/**
* Základný náčrt na príjem sériových správ od Arduina * a prekladá ich do správ OSC pre Reaper * * Budete musieť prispôsobiť užívateľské parametre * a budete si musieť nainštalovať knižnicu: oscP5 * * vytvorený pre werkcollege AV&IT * od annoo bob eddi * október 2017 * *//////////////////////////// PARAMETRE UŽÍVATEĽA ////////////////////////// ////////
/ uistite sa, že vo svojej skici Arduino final int baudRate = 115200 použijete rovnakú prenosovú rýchlosť;
// Choďte a hľadajte IP adresu v Reaperi, keď používate OSC // To je adresa, na ktorú Processing pošle a Reaper počúva. // Tu vložte tento reťazec do remoteIP.
// final String remoteIP = "192.168.1.43"; // napr. "127.0.0.1";
final String remoteIP = "vul hier ip in gevonden in reaper";
// Poznačte si sendPort a zadajte ho do Reaper. // Toto je port, na ktorý Processing odosiela a Reaper ho počúva.
konečný int listenPort = 11000, sendPort = 12000;
// ListPort tu má aktívne ladiť.
// názvy portov sú tu aj na ladenie.
final String portName = "vul hier de portname in gevonden in Arduino";
// final String portName = "COM6"; // "/dev/ttyUSB0";
/////////////////////// KONIEC UŽÍVATEĽSKÝCH PARAMETROV // ///////////////////////////// ////
spracovanie importu.sériové.*; import java.util.*;
import oscP5.*; import netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Sériový komunikačný port; // Sériový port boolean messageArrived = false;
String incoming = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Aby sme sa uistili, že odosielame iba parametre (hodnoty), ktoré menia // tieto globálne premenné sú tu vymazané, ale nemali by byť // tu inicializované! HashMap oldParams, newParams, toSendParams;
// Správu musíme rozdeliť na každú čiarku neplatný processIncoming () {String resVec = incoming.split (","); // dostaneme páry meno+hodnota // takže pre každé meno (+2) … skúste {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // vložte ich do nového Hashtable newParams.put (resVec , hodnota); }} // ak sa vyskytne chyba, zachytíme ju a ukončíme. catch (Exception ex) {println ("Správa o výnimke:" + ex); printArray (resVec); východ(); }}
// Na filtrovanie našich správ/ * Zaisťujeme, aby existovala iba správa s výstupom OSC, keď sa * zmení vstupná správa (sériová) * To znamená: ak otočíme/stlačíme tlačidlo a zmení sa hodnota. * Odfiltrujeme teda prichádzajúce hodnoty, ktoré sa v skutočnosti menia * poznámka: nevyhneme sa skokovým hodnotám *, ktoré pochádzajú napr. Od akcelerometrov alebo senzorov vzdialenosti * budete ich musieť vyhladiť sami v Arduino */ void filterParams () {toSendParams = nový HashMap (); for (String key: newParams.keySet ()) {// if the key is already present if (oldParams.containsKey (key)) {// key present and value not the same, then update if (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// kľúč nie je v starých parametroch, tak ho dajte! toSendParams.put (kľúč, newParams.get (kľúč)); } oldParams.put (kľúč, newParams.get (kľúč)); }}
neplatné makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (kľúč)); / * poslať správu */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Keď chceme vytlačiť do okna neplatné ShowIncoming () {//, aby sme videli prichádzajúcu správu, ako je nastavené v texte HashMap („Prichádzajúce z Arduina“, 20, 20); int y = 20; pre (Kľúč reťazca: newParams.keySet ()) {y = y+20; text (kľúč, 20, y); text (newParams.get (kľúč), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {veľkosť (1000, 800); // výplň veľkosti pódia (255); pozadie (0); oldParams = nový HashMap (); newParams = nový HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * štart oscP5, počúvanie prichádzajúcich správ */ oscP5 = nový OscP5 (this, listenPort);
/* myRemoteLocation je NetAddress. NetAddress má 2 parametre, * IP adresu a číslo portu. myRemoteLocation sa používa ako parameter v * oscP5.send () pri odosielaní paketov osc do iného počítača, zariadenia, * aplikácie. použitie viď nižšie. na testovacie účely sú počúvací port * a port adresy vzdialeného umiestnenia rovnaké, a preto budete * posielať správy späť na tento náčrt. */ myRemoteLocation = nová sieťová adresa (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// načítanie bajtu zo sériového portu: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // požiadajte o viac println („začína …“); prestávka; prípad startChar: incoming = ""; prestávka; case endChar: messageArrived = true; // println ("koniec spravy"); prestávka; predvolené: prichádzajúce += inChar; prestávka; }}
/* prichádzajúce správy osc sú preposlané na metódu oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // získajte 1. argument osc
IncomingOSCMessage + = "\ n" + String.format ("### prijal správu osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", hodnota); println (IncomingOSCMessage); }
Krok 3: Kódujte Arduino
/* Tento kód je základným náčrtkom na komunikáciu so sériovým spracovaním.
Je to plán, do ktorého môžete vložiť vlastný kód určený pre vlastné tlačidlá, potenciometre alebo senzory.
Má to podanie ruky, aby sme sa uistili, že máme kontakt, a je rozhodnuté o formáte, v ktorom komunikujeme
Je dôležité zostaviť správu rovnakým spôsobom, aby Processing vedel, ako ju dekonštruovať a odoslať správne správy OSC do nášho DAW.
vyrobené pre Werkcollege AV&IT, október 2017
vyhladzovanie kódu vytvoril 22. apríla 2007 David A. Mellis upravil 9. apríla 2012 Tom Igoe
*/
/ baud rate const long baudRate = 115200;
// čas čakania v ms medzi hlasovaniami na piny const int loopPauseTime = 200; // milisekundy
// počiatočné a koncové hodnoty pre správu odoslanú na Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int buttonPin1 = 2; tlačidlo const intPin2 = 5; const int numReadings = 5; // ohodnotenie vyhladzovania dodávky
int pitchReading = A1; int speedReading = A2; int infraČítanie = A3;
// ostatné globálne premenné int buttonState1 = 0; int buttonState2 = 0; // premenná na čítanie stavu tlačidla plavákový senzorValue1 = 0; plavákový senzorHodnota2 = 0; plavákový senzorHodnota3 = 0;
// vyhladzovanie int nameran [numReadings]; // hodnoty z analógového vstupu int readIndex3 = 0; // index aktuálneho čítania int total3 = 0; // bežiaci celkový float average3 = 0; // priemerný
// Túto funkciu potrebujeme na nadviazanie kontaktu s náčrtom spracovania // Ponechajte ho tu neplatné estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // odoslanie znaku a čakanie na odpoveď … zdržanie (loopPauseTime); } Serial.read (); }
void setup () {// nastavenie pinModes pre všetky piny pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// inicializácia Serial comms Serial.begin (baudRate); while (! Serial); // vyhladzovanie pre (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// pockaj na handshake zavedenieContact (); }
void loop () {// dotazovanie všetkých pinov a namapovanie čítania na príslušný rozsah buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// mapovanie prichádzajúcich hodnôt na potrebné hodnoty 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);
// snímač vyhladzovania: total3 = total3 - namerané hodnoty [readIndex3]; // čítanie zo senzora: readings [readIndex3] = sensorValue3; // pripočítajte údaje k súčtu: total3 = total3 + namerané hodnoty [readIndex3]; // posun na ďalšiu pozíciu v poli: readIndex3 = readIndex3 + 1;
// ak sme na konci poľa … ak (readIndex3> = numReadings) {// … zabaľte na začiatok: readIndex3 = 0; } // vypočítať priemer: average3 = (total3 / numReadings); // snímač vyhladzovania
Serial.print (startString); // spustenie sekvencie správ // wirte všetky mená, páry hodnôt, oddelené čiarkami Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print („infračervený senzor“); Serial.print (","); Serial.print (priemer3/100); Serial.print (",");
Serial.print ("knock 1 in2 wit"); Serial.print (","); Serial.print (buttonState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (buttonState2);
// napíšte koniec správy Serial.print (endString);
// počkajte chvíľu..
oneskorenie (loopPauseTime); }
Krok 4: Žací stroj
Krok 1: Ga bovenaan naar Options> Prefrences
Krok 2: Ga in prefrences naar Control/OSC/web en druk op Add
Krok 3: Kies bij Ovládací povrchový režim alebo OSC (Open Sound Control)
Krok 4: Vul je názov zariadenia, vink Recieve on port aan en vul in wat er in processing bij Sendport staat
Krok 5: Kopírovanie hostiteľskej IP adresy je spracované v režime spracovania
Krok 6: Druk op ok en de controller is no verbonden met Reaper
Krok 5: Behuizácia
Breedte: 170 mm
Dĺžka: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (priemer
Potenciometre: 3 mm (priemer)
Senzor Afstand: Breedte 2,9 mm
Dĺžka 0,8 mm
Materiál: MDF (3 mm)
Krok 6: Elektronika
Krok 1:
Verbind de ground en 5 volt van Arduino met het breadboard
Krok 2:
Verbind pin A0 met potentio 1
Verbind pin A1 met potentio 2
Verbind pin A3 s infračerveným senzorom.
Verbind pin A2 met de niet sticky button.
Podrobný pin A5 s lepivým tlačidlom.
Krok 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Odporúča:
Ako nainštalovať, spustiť a pripojiť ovládač k emulátoru: 7 krokov
Ako nainštalovať, spustiť a pripojiť ovládač k emulátoru: Už ste niekedy sedeli a spomínali na svoje detstvo ako mladý hráč a niekedy si želáte, aby ste sa mohli vrátiť k týmto starým skvostom minulosti? Na to existuje aplikácia …. konkrétnejšie existuje komunita hráčov, ktorí vytvárajú program
Zostavte MIDI ovládač Arduino: 5 krokov (s obrázkami)
Zostavte MIDI ovládač Arduino: Ahoj všetci! V tomto návode vám ukážem, ako si vytvoriť vlastný MIDI ovládač napájaný Arduino. MIDI je skratka pre digitálne rozhranie hudobných nástrojov a je to protokol, ktorý umožňuje počítačom, hudobným nástrojom a ďalšiemu hardvéru komunikovať
Magic Hercules - ovládač pre digitálne diódy LED: 10 krokov
Magic Hercules - Ovládač pre digitálne LED diódy: Rýchly prehľad: Modul Magic Hercules je prevodník medzi známym a jednoduchým SPI na protokol NZR. Vstupy modulu majú toleranciu +3,3 V, takže môžete bezpečne pripojiť akékoľvek mikrokontroléry pracujúce pri napätí +3,3 V. Použitie
Obrovské retro hry Ovládač štýlu Dancefloor: 4 kroky
Obrovské retro hry Ovládač štýlu Dancefloor: Na našu svadbu v marci tohto roku sme chceli recepčnú párty s tematikou Retro, pretože v srdci sme len veľké deti a som si istý, že aj veľa ďalších ľudí! Takže po chvíli výskum MakeyMakeyho Myslel som si, že by bol úžasný nápad objať
DIY herný ovládač založený na Arduine - Herný ovládač Arduino PS2 - Hra Tekken s gamepadom DIY Arduino: 7 krokov
DIY herný ovládač založený na Arduine | Herný ovládač Arduino PS2 | Hranie Tekkenu s gamepadom pre domácich majstrov Arduino: Dobrý deň, chlapci, hranie hier je vždy zábavné, ale hranie s vlastným ovládačom pre vlastnú potrebu je zábavnejšie. Preto v tomto návode vytvoríme herný ovládač pomocou arduino pro micro