Obsah:
- Krok 1: Wat Heb Je Nodig?
- Krok 2: Zpracování kódu
- Krok 3: Kódujte Arduino
- Krok 4: Reaper
- Krok 5: Behuizing
- Krok 6: Elektronika
- Krok 7: Medewerkers
Video: Retro ovladač: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Více informací naleznete v části Multimédia a komunikační technologie (Multec) a Erasmushogeschool v Bruseli.
Samen hebben we een muziek controller gemaakt dat muziek can 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.
Krok 1: Wat Heb Je Nodig?
Komponenti
- 2 tlačítka;
- 2 potenciometry;
- 2 weerstanden (1K los);
- Arduino uno/nano
- Draadjes (zie elektronické schéma)
- Soldeerplaat
- MDF deska
Nástroje
- Laserový řezač
- Kniptang
- Striptang
- Soldeerbout (met cín)
Programy
- Ilustrátor/indesign (Tekenprogramma)
- Žací stroj
- Zpracovává se
- Arduino
Krok 2: Zpracování kódu
/**
* Základní skica pro příjem sériových zpráv od Arduina * a překládá je do zpráv OSC pro Reaper * * Budete muset upravit UŽIVATELSKÉ PARAMETRY * a budete muset nainstalovat Knihovnu: oscP5 * * vytvořenou pro werkcollege AV&IT * od annoo bob eddi * říjen 2017 * *//////////////////////////// UŽIVATELSKÉ PARAMETRY //////////////////////// ////////
/ ujistěte se, že používáte stejnou přenosovou rychlost v konečném skicu Arduino int baudRate = 115200;
// Jděte a hledejte IP adresu v Reaperu při použití OSC // To je adresa, na kterou Processing posílá a Reaper poslouchá. // Sem vložte tento řetězec do remoteIP.
// final String remoteIP = "192.168.1.43"; //např. "127.0.0.1";
final String remoteIP = "vul hier ip in gevonden in reaper";
// Poznamenejte si sendPort a vyplňte jej v Reaper. // Toto je port, na který Processing posílá a Reaper poslouchá.
konečný int poslouchatPort = 11000, sendPort = 12000;
// ListPort zde slouží k aktivnímu ladění.
// názvy portů jsou zde také k ladění.
final String portName = "vul hier de portname in gevonden in Arduino";
// final String portName = "COM6"; // "/dev/ttyUSB0";
/////////////////////// KONEC UŽIVATELSKÝCH PARAMETRŮ ///////////////////////////// //////
zpracování 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;
Řetězec incoming = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Abychom se ujistili, že odesíláme pouze parametry (hodnoty), které mění // tyto globální proměnné jsou zde odstraněny, ale neměly by // zde být inicializovány! HashMap oldParams, newParams, toSendParams;
// Zprávu potřebujeme rozdělit při každé čárce neplatné processIncoming () {String resVec = incoming.split (","); // získáme páry název+hodnota // tedy pro každé jméno (+2) … zkuste {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // vložte je do nového Hashtable newParams.put (resVec , hodnota); }} // pokud dojde k chybě, pojďme ji zobrazit a ukončit. catch (Exception ex) {println ("Exception Message:" + ex); printArray (resVec); výstup(); }}
// Filtrování našich zpráv/ * Zajistíme, aby existovala pouze zpráva OSC out, když * se změní vstupní zpráva (sériová) * To znamená: otočíme/stiskneme tlačítko a změní hodnotu. * Odfiltrujeme tedy příchozí hodnoty, které se ve skutečnosti mění * poznámka: nevyhneme se skokovým hodnotám * pocházejícím např. Z akcelerometrů nebo snímačů vzdálenosti * budete je muset vyhladit sami v Arduinu */ 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 (klíč))) {toSendParams.put (klíč, newParams.get (klíč)); }} else {// klíč ve starých parametrech není, tak to řekněte! toSendParams.put (klíč, newParams.get (klíč)); } oldParams.put (klíč, newParams.get (klíč)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (klíč)); / * poslat zprávu */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filtrParams (); makeOSC (); } // Když chceme vytisknout do okna void ShowIncoming () {//, abychom viděli příchozí zprávu, jak je nastaveno v textu HashMap ("Příchozí z Arduina", 20, 20); int y = 20; pro (Klíč řetězce: newParams.keySet ()) {y = y+20; text (klíč, 20, y); text (newParams.get (klíč), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
neplatné nastavení () {velikost (1000, 800); // výplň velikosti plochy (255); pozadí (0); oldParams = nový HashMap (); newParams = new HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * start oscP5, poslech příchozích zpráv */ oscP5 = nový OscP5 (this, listenPort);
/* myRemoteLocation je NetAddress. NetAddress má 2 parametry, * IP adresu a číslo portu. myRemoteLocation se používá jako parametr v * oscP5.send () při odesílání paketů osc do jiného počítače, zařízení, * aplikace. použití viz níže. pro účely testování jsou naslouchací port * a port adresy vzdáleného umístění stejné, a proto budete * posílat zprávy zpět do této skici. */ myRemoteLocation = new NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {pozadí (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// načtení bajtu ze sériového portu: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // požádejte o další println („začíná…“); přestávka; případ startChar: incoming = ""; přestávka; case endChar: messageArrived = true; // println ("konec msg"); přestávka; výchozí: příchozí += inChar; přestávka; }}
/* příchozí zprávy osc jsou předávány metodě oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // získejte 1. argument osc
IncomingOSCMessage + = "\ n" + String.format ("### přijal osc zprávu:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", hodnota); println (IncomingOSCMessage); }
Krok 3: Kódujte Arduino
/* Tento kód je základní skica pro komunikaci se zpracováním přes sériový port.
Jedná se o plán, do kterého můžete vložit vlastní kód určený pro vlastní tlačítka, potenciometry nebo senzory.
Má to handshake, abychom se ujistili, že máme kontakt, a je rozhodnuto o formátu, ve kterém komunikujeme
Je důležité sestavit zprávu stejným způsobem, aby Processing věděl, jak ji dekonstruovat a odeslat správné zprávy OSC do našeho DAW
vyrobeno pro werkcollege AV&IT říjen 2017
vyhlazování kódu vytvořil 22. dubna 2007 David A. Mellis upravil 9. dubna 2012 Tom Igoe
*/
/ baud rate const long baudRate = 115200;
// doba čekání v ms mezi hlasováním na piny const int loopPauseTime = 200; // milisekund
// počáteční a koncové hodnoty pro zprávu odeslanou na Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int buttonPin1 = 2; tlačítko const int Pin2 = 5; const int numReadings = 5; // ohodnoťte vyhlazení dodávky
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// ostatní globální proměnné int buttonState1 = 0; int buttonState2 = 0; // proměnná pro čtení stavu tlačítka float sensorValue1 = 0; float sensorValue2 = 0; float sensorValue3 = 0;
// vyhlazování int čtení [numReadings]; // hodnoty z analogového vstupu int readIndex3 = 0; // index aktuálního čtení int total3 = 0; // běžící celkový float average3 = 0; // průměrný
// Tuto funkci potřebujeme k navázání kontaktu s náčrtem Zpracování // Ponechat jej zde neplatný ustavitContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // pošlete znak a počkejte na odpověď… zpoždění (loopPauseTime); } Serial.read (); }
void setup () {// nastavení pinModes pro všechny piny pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// inicializace Serial comms Serial.begin (baudRate); while (! Serial); // vyhlazování pro (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// počkejte na handshake navázatContact (); }
void loop () {// vyzvednutí všech pinů a namapování čtení na příslušný rozsah buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// mapování příchozích hodnot na potřebné hodnoty sensorValue1 = map (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);
// čidlo vyhlazování: total3 = total3 - naměřené hodnoty [readIndex3]; // čtení ze senzoru: readings [readIndex3] = sensorValue3; // přičtení hodnoty k součtu: total3 = total3 + čtení [readIndex3]; // postup na další pozici v poli: readIndex3 = readIndex3 + 1;
// pokud jsme na konci pole… if (readIndex3> = numReadings) {//… zaokrouhlíme na začátek: readIndex3 = 0; } // vypočítat průměr: average3 = (total3 / numReadings); // vyhlazovací senzor
Serial.print (startString); // spuštění posloupnosti zpráv // wirte všechny názvy, páry hodnot, oddělené čárkami 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 (průměr3/100); Serial.print (",");
Serial.print ("knop 1 in2 vtip"); Serial.print (","); Serial.print (buttonState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (buttonState2);
// napište konec zprávy Serial.print (endString);
// Počkej chvíli..
zpoždění (loopPauseTime); }
Krok 4: Reaper
Krok 1: Ga bovenaan naar Options> Prefrences
Stap 2: Ga in prefrences naar Control/OSC/web en druk op Add
Stap 3: Kies bij Ovládací povrchový režim nebo OSC (Open Sound Control)
Krok 4: Vul je název zařízení, vink Recieve na port aan en vul in wat er in processing bij Sendport staat
Krok 5: Kopie IP hostitele je ve zpracování zpracována
Krok 6: Druk op ok en de controller is nu verbonden met Reaper
Krok 5: Behuizing
Breedte: 170 mm
Délka: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (průměr
Potenciometry: 3 mm (průměr)
Senzor Afstand: Breedte 2,9 mm
Délka 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 met infrarood sensor.
Verbind pin A2 met de niet sticky button.
Verbind pin A5 met de lepivé tlačítko.
Krok 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Doporučuje:
Jak nainstalovat, spustit a připojit ovladač k emulátoru: 7 kroků
Jak nainstalovat, spustit a připojit ovladač k emulátoru: Už jste někdy seděli a pamatovali si dětství jako mladý hráč a někdy si přejete, abyste se mohli vrátit k těm starým drahokamům minulosti? Na to existuje aplikace …. konkrétněji existuje komunita hráčů, kteří vytvářejí program
Sestavte MIDI ovladač Arduino: 5 kroků (s obrázky)
Sestavte MIDI ovladač Arduino: Ahoj všichni! V tomto návodu vám ukážu, jak si postavit vlastní MIDI ovladač napájený Arduino. MIDI je zkratka pro Musical Instrument Digital Interface a je to protokol, který umožňuje počítačům, hudebním nástrojům a jinému hardwaru komunikovat
Magic Hercules - ovladač pro digitální LED diody: 10 kroků
Magic Hercules - Ovladač pro digitální LED diody: Rychlý přehled: Modul Magic Hercules je převodník mezi známým a jednoduchým protokolem SPI na protokol NZR. Vstupy modulů mají toleranci +3,3 V, takže můžete bezpečně připojit všechny mikrokontroléry pracující při napětí +3,3 V. Použití
Obrovské retro hry Ovladač stylu Dancefloor: 4 kroky
Obrovské retro hry Ovladač stylu Dancefloor: Pro naši svatbu v březnu tohoto roku jsme chtěli párty s tématikou retro hry, protože jsme v srdci jen velké děti a jsem si jistý, že mnoho dalších lidí také! Takže po chvíli výzkum MakeyMakeyho Říkal jsem si, že by byl úžasný nápad obejmout
Arduino DIY herní ovladač - Herní ovladač Arduino PS2 - Hra Tekken s gamepadem pro kutily Arduino: 7 kroků
Arduino DIY herní ovladač | Herní ovladač Arduino PS2 | Hraní Tekken s DIY Arduino Gamepad: Ahoj kluci, hraní her je vždy zábava, ale hraní s vaší vlastní DIY vlastní hrou je zábavnější. Takže v tomto návodu vytvoříme herní ovladač pomocí arduino pro micro