Sadržaj:
- Korak 1: Wat Heb Je Nodig?
- Korak 2: Obrada koda
- Korak 3: Kod Arduino
- Korak 4: Žetelica
- Korak 5: Behuizing
- Korak 6: Elektronika
- Korak 7: Medewerkers
Video: Retro kontroler: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Saznajte više o studentima koji koriste više multimedijalnih i komunikacionih tehnologija (Multec) i Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat muziek can starten/stoppen, de pitch can verhogen, kan terugspoelen en nog meer.
S obzirom na to da ste kupili kasetu, on je bio kontroler koji je napravio ili napravio kasetu.
Korak 1: Wat Heb Je Nodig?
Componenten
- 2 dugmeta;
- 2 potenciometra;
- 2 stakla (1K losa);
- Arduino uno/nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- MDF ploča
Alati
- Laserski rezač
- Kniptang
- Striptang
- Soldeerbout (met lim)
Programi
- Ilustrator/indesign (Tekenprogramma)
- Žetelica
- Obrada
- Arduino
Korak 2: Obrada koda
/**
* Osnovna skica za primanje serijskih poruka s Arduina * i prevodi ih u OSC poruke za Reaper * * Morat ćete prilagoditi KORISNIČKE PARAMETRE * i morat ćete instalirati biblioteku: oscP5 * * napravljenu za werkcollege AV&IT * by annoo bob eddi * oct 2017 * *////////////////////// KORISNIČKI PARAMETRI ////////////////////// ////////
/ pobrinite se da koristite istu brzinu prijenosa u konačnoj skici Arduino int baudRate = 115200;
// Idite i potražite IP adresu u Reaper-u kada koristite OSC // Ovo je adresa koju Processing šalje i Reaper sluša. // Stavite ovaj niz u remoteIP, ovdje.
// završni niz stringIP = "192.168.1.43"; // npr. "127.0.0.1";
final String remoteIP = "Vul hier ip in gevonden in reaper";
// Zabilježite sendPort i popunite ovo u Reaper -u. // Ovo je port koji Processing šalje i Reaper sluša.
final int listenPort = 11000, sendPort = 12000;
// ListenPort ovdje služi za aktivno otklanjanje grešaka.
// portNames su tu i za otklanjanje grešaka.
final String portName = "Vratite ime porta u arduino";
// završni niz stringName = "COM6"; // "/dev/ttyUSB0";
/////////////////////// KRAJ KORISNIČKIH PARAMETRA /////////////////////////// ////
import processing.serial.*; import java.util.*;
uvoz oscP5.*; uvoz netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Logička poruka serijskog porta messageArrived = false;
String incoming = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Da bismo bili sigurni da šaljemo samo parametre (vrijednosti) koji se mijenjaju // ove globalne varijable su ovdje delcared ali // ne smiju biti inicijalizirane ovdje! HashMap oldParams, newParams, toSendParams;
// Moramo podijeliti poruku pri svakom zarezu void processIncoming () {String resVec = incoming.split (","); // dobivamo parove ime+vrijednost // pa za svako ime (+2)… pokušajte {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // stavljamo ih u novu Hashtable newParams.put (resVec , vrijednost); }} // ako dođe do greške, hajde da je uočimo i izađemo. catch (Izuzetak ex) {println ("Poruka izuzetka:" + ex); printArray (resVec); Izlaz(); }}
// Za filtriranje naših poruka/ * Uvjeravamo se da postoji samo poruka o odzivu OSC-a kada se * promijeni ulazna poruka (serijska) * To jest: ako okrenemo/pritisnemo dugme i promijeni vrijednost. * Zato filtriramo ulazne vrijednosti koje se zapravo mijenjaju * napomena: nećemo izbjeći preskakanje vrijednosti * koje dolaze iz npr. Mjerača ubrzanja ili senzora udaljenosti * morat ćete ih sami izgladiti u Arduinu */ void filterParams () {toSendParams = new HashMap (); for (Ključ niza: newParams.keySet ()) {// ako je ključ već prisutan ako (oldParams.containsKey (ključ)) {// ključ prisutan i vrijednost nije ista, tada ažurirajte if (! oldParams.get (ključ).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// ključ nije prisutan u starim parama, pa to recite! toSendParams.put (ključ, newParams.get (ključ)); } oldParams.put (ključ, newParams.get (ključ)); }}
void makeOSC () {for (String ključ: toSendParams.keySet ()) {OscMessage myMessage = novi OscMessage ("/"+ ključ); myMessage.add (toSendParams.get (ključ)); / * pošaljite poruku */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kada želimo da odštampamo u prozoru void ShowIncoming () {// da vidimo dolaznu poruku, kako je postavljeno u tekstu HashMap -a ("Dolazni iz Arduina", 20, 20); int y = 20; for (Ključ niza: newParams.keySet ()) {y = y+20; tekst (ključ, 20, y); text (newParams.get (key), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {veličina (1000, 800); // Ispunjavanje veličine stupnja (255); pozadina (0); oldParams = novi HashMap (); newParams = novi HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * pokreni oscP5, osluškivanje dolaznih poruka */ oscP5 = novi OscP5 (ovo, listenPort);
/* myRemoteLocation je NetAddress. NetAddress uzima 2 parametra, * IP adresu i broj porta. myRemoteLocation se koristi kao parametar u * oscP5.send () pri slanju osc paketa na drugo računalo, uređaj, * aplikaciju. upotrebu pogledajte dole. za potrebe testiranja, port za slušanje * i port za adresu udaljene lokacije su isti, stoga ćete * slati poruke natrag na ovu skicu. */ myRemoteLocation = nova NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// čitanje bajta sa serijskog porta: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // traži više println ("počinje…"); break; slučaj startChar: incoming = ""; break; case endChar: messageArrived = true; // println ("kraj poruke"); break; default: dolazni += inChar; break; }}
/* dolazne osc poruke prosljeđuju se oscEvent metodi. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // dobivamo 1. osc argument
DolaznaOSCMessage + = "\ n" + String.format ("### je primila osc poruku:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", vrijednost); println (IncomingOSCMessage); }
Korak 3: Kod Arduino
/* Ovaj kod je osnovna skica za komunikaciju sa Obrada putem serijskog broja.
To je nacrt u koji možete staviti vlastiti kôd naveden za vlastite tipke, potenciometre ili senzore.
Ima rukovanje kako bi bili sigurni da imamo kontakt i da je odlučen format u kojem komuniciramo
Važno je konstruirati poruku na isti način, tako da Obrada zna kako je dekonstruirati i poslati ispravne OSC poruke našem DAW-u
napravljeno za werkcollege AV&IT oktobar 2017
code smooothing kreirao 22. travnja 2007. David A. Mellis izmijenio 9. travnja 2012. Tom Igoe
*/
/ brzina prijenosa const long baudRate = 115200;
// vreme za čekanje u ms između anketa na pinove const int loopPauseTime = 200; // mili sekundi
// početne i završne vrijednosti za poruku poslanu na Serijski const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // ocijenite van smoothing
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// ostale globalne varijable int buttonState1 = 0; int buttonState2 = 0; // varijabla za očitavanje statusa tipke float sensorValue1 = 0; osjetnik plovkaValue2 = 0; osjetnik plovkaValue3 = 0;
// zaglađivanje int očitanja [numReadings]; // očitavanja sa analognog ulaza int readIndex3 = 0; // indeks trenutnog očitanja int total3 = 0; // tekući ukupni plutajući prosjek3 = 0; // prosječna
// Ova funkcija nam je potrebna za uspostavljanje kontakta sa skicom za obradu // Zadržite je ovdje void installContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // šalje znak i čeka odgovor … kašnjenje (loopPauseTime); } Serial.read (); }
void setup () {// postavlja pinModes za sve pinove pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// inicijaliziranje serijskih poruka Serial.begin (baudRate); while (! Serijski); // zaglađivanje za (int thisReading = 0; thisReading <numReadings; thisReading ++) {čitanja [thisReading] = 0; }
// čekamo rukovanje installContact (); }
void loop () {// anketiranje svih pinova i mapiranje očitanja u odgovarajući raspon buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// preslikavanje ulaznih vrijednosti na potrebne vrijednosti 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);
// senzor za zaglađivanje: total3 = total3 - očitanja [readIndex3]; // očitavanje sa senzora: očitanja [readIndex3] = sensorValue3; // dodamo očitanje u ukupan iznos: total3 = total3 + očitanja [readIndex3]; // prelazak na sljedeću poziciju u nizu: readIndex3 = readIndex3 + 1;
// ako smo na kraju niza … if (readIndex3> = numReadings) {//… premotajte na početak: readIndex3 = 0; } // izračunaj prosjek: average3 = (total3 / numReadings); // senzor za izglađivanje
Serial.print (startString); // pokreće sekvencu poruke // upisuje sva imena, vrijednosti parove, odvojene zarezima Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("infra-senzor"); Serial.print (","); Serijski.tisak (prosjek3/100); Serial.print (",");
Serial.print ("knop 1 in 2 wit"); Serial.print (","); Serial.print (buttonState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (buttonState2);
// upisuje kraj poruke Serial.print (endString);
// sačekaj malo..
delay (loopPauseTime); }
Korak 4: Žetelica
Korak 1: Opcije> Postavke
Korak 2: Pregledajte postavke na Control/OSC/web i druk za dodavanje
Korak 3: Kies bij Režim površinske kontrole za OSC (Otvorena kontrola zvuka)
Korak 4: Vul je naziv uređaja u, vink Primite na portu aan i vul u toku obrade pošaljite Sendport staat
Korak 5: IP adresa domaćina je uključena u obradu
Korak 6: Druk je ok i kontroler je trenutno u radnom prostoru sa Reaperom
Korak 5: Behuizing
Dimenzije: 170 mm
Dužina: 90 mm
Visina 30 mm
Knoppen: 16 mm (promjer
Potenciometri: 3 mm (promjer)
Senzor stabilnosti: Breedte 2,9 mm
Dužina 0,8 mm
Materijal: MDF (3 mm)
Korak 6: Elektronika
Korak 1:
Verbind de ground i 5 volt van Arduino sastavili su se na ploči
Korak 2:
Verbind pin A0 sa potencijom 1
Verbind pin A1 met potencio 2
Verbind pin A3 sa infracrvenim senzorom.
Verbind pin A2 met de niet sticky button.
Verbind pin A5 sa lepljivim dugmetom.
Korak 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Preporučuje se:
Kako instalirati, pokrenuti i spojiti kontroler na emulator: 7 koraka
Kako instalirati, pokrenuti i povezati kontroler sa emulatorom: Jeste li ikada sjedili i sjećali se svog djetinjstva kao mladog igrača i ponekad poželjeli da ponovo posjetite te stare dragulje iz prošlosti? Pa, postoji aplikacija za to … tačnije postoji zajednica igrača koji prave program
Napravite Arduino MIDI kontroler: 5 koraka (sa slikama)
Napravite Arduino MIDI kontroler: Zdravo svima! U ovom uputstvu ću vam pokazati kako izgraditi vlastiti MIDI kontroler sa Arduino pogonom. MIDI je kratica za digitalni interfejs muzičkih instrumenata i to je protokol koji omogućava računarima, muzičkim instrumentima i drugom hardveru da komuniciraju
Ogroman kontroler stila za plesne podloge u retro kockama: 4 koraka
Ogroman kontroler stila na plesnom podiju za retro igre: Za naše vjenčanje u ožujku ove godine željeli smo prijemnu zabavu s temom Retro igara, jer smo mi samo velika djeca u srcu i siguran sam da ima i puno drugih ljudi! Pa nakon malo istražujući MakeyMakey's mislio sam da bi bilo sjajno zagrliti se
Arduino kontroler za igre uradi sam. Arduino PS2 kontroler igre - Igranje Tekkena s DIY Arduino gamepadom: 7 koraka
Arduino kontroler za igre uradi sam. Arduino PS2 kontroler igre | Igranje Tekkena s DIY Arduino gamepad -om: Zdravo momci, igranje igara uvijek je zabavno, ali igranje sa vlastitim DIY prilagođenim kontrolorom igara je zabavnije. Zato ćemo napraviti kontroler igre pomoću arduino pro micro u ovim uputama
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: 4 koraka
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: Zdravo proizvođači, nedavno sam počeo uzgajati gljive kod kuće, bukovače, ali već sam 3 puta imao ove kontrolere kod kuće za kontrolu temperature fermentatora za moju domaću marinu, supruga sada radi i ovu Kombucha stvar, a kao termostat za toplinu