Satura rādītājs:
- 1. solis: Wat Heb Je Nodig?
- 2. darbība: koda apstrāde
- 3. darbība: kods Arduino
- 4. solis: pļāvējs
- 5. solis: Behuizing
- 6. solis: Elektronica
- 7. solis: Medewerkers
Video: Retro kontrolieris: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat muziek kan starten/stoppen, de pitch kan verhogen, kan terugspoelen en nog meer.
Ir ideāla kwam van van een kasete, ons doel bija savs kontrolieris, kas izveidoja informāciju par šo kaseti.
1. solis: Wat Heb Je Nodig?
Komponents
- 2 pogas;
- 2 potenciometri;
- 2 sapratām (1K aļņi);
- Arduino uno/nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- MDF plāksne
Rīki
- Lāzera griezējs
- Kniptang
- Striptang
- Soldeerbout (met alvas)
Programmas
- ilustrators/indesign (Tekenprogramma)
- pļāvējs
- Apstrāde
- Arduino
2. darbība: koda apstrāde
/**
* Pamata skice, lai saņemtu sērijas ziņojumus no Arduino * un pārvērstu tos OSC ziņojumos Reaper * eddi * oktobris 2017 * *///////////////////// LIETOTĀJA PARAMETRI /////////////////// ////////
/ pārliecinieties, ka izmantojat to pašu pārraides ātrumu Arduino skices galīgajā int baudRate = 115200;
// Ejiet un meklējiet IP adresi Reaper, izmantojot OSC // Šī ir adrese, uz kuru apstrāde sūta un Reaper klausās. // Ievietojiet šo virkni remoteIP, šeit.
// galīgā virkne remoteIP = "192.168.1.43"; // piem. "127.0.0.1";
final String remoteIP = "vul hier ip in gevonden in pļaujmašīna";
// Ņemiet vērā sendPort un aizpildiet to Reaper. // Tas ir ports, uz kuru apstrāde sūta un Reaper klausās.
gala int listenPort = 11000, sendPort = 12000;
// ListenPort šeit ir paredzēts aktīvai atkļūdošanai.
// arī portNames ir šeit, lai atkļūdotu.
final String portName = "vul hier de portname in gevonden in Arduino";
// final String portName = "COM6"; // "/dev/ttyUSB0";
////////////////////// LIETOTĀJA PARAMETRU BEIGAS //////////////////////// ////
importa apstrāde.sērija.*; importēt java.util.*;
importēt oscP5.*; importēt netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Sērijas commsPort; // Sērijas porta Būla ziņojumsArrived = false;
String ienākošais = "", IncomingOSCMessage = "";
gala simbols startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Lai pārliecinātos, ka mēs sūtām tikai tos parametrus (vērtības), kas mainās // šie globālie mainīgie tiek delkēti šeit, bet šeit // tos nedrīkst inicializēt! HashMap oldParams, newParams, toSendParams;
// Mums ir jāsadala ziņojums katrā komatā spēkā neesošā procesāIncoming () {String resVec = ienākošais.split (","); // mēs iegūstam vārdu+vērtību pārus // tāpēc katram vārdam (+2)… mēģiniet {par (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // ievietojiet tos jaunajā Hashtable newParams.put (resVec , vērtība); }} // ja rodas kļūda, pieņemsim to parādīt un iziet. catch (Exception ex) {println ("Izņēmuma ziņojums:" + ex); printArray (resVec); Izeja(); }}
// Lai filtrētu mūsu ziņojumus/ * Mēs pārliecināmies, ka OSC izejas ziņojums ir tikai tad, kad * tiek mainīts ievades ziņojums (sērijas). * Tātad mēs filtrējam ienākošās vērtības, kas faktiski mainās. * Piezīme: mēs neizvairīsimies no lecīgām vērtībām *, piemēram, no akselerometriem vai attāluma sensoriem HashMap (); for (String key: newParams.keySet ()) {// ja atslēga jau ir, ja (oldParams.containsKey (key)) {// atslēga ir klāt un vērtība nav vienāda, tad atjauniniet, ja (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} cits {// atslēga nav vecos parametros, tāpēc ielieciet to! toSendParams.put (atslēga, newParams.get (atslēga)); } oldParams.put (atslēga, newParams.get (atslēga)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ atslēga); myMessage.add (toSendParams.get (atslēga)); / * nosūtīt ziņojumu */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kad vēlamies izdrukāt logā void ShowIncoming () {// lai redzētu ienākošo ziņojumu, kā tas ir noteikts HashMap tekstā ("Ienākošais no Arduino", 20, 20); int y = 20; for (String key: newParams.keySet ()) {y = y+20; teksts (taustiņš, 20, y); teksts (newParams.get (atslēga), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {izmērs (1000, 800); // Skatuves lieluma aizpildījums (255); fons (0); oldParams = jauns HashMap (); newParams = jauns HashMap (); // printArray (Serial.list ()); commsPort = jauns seriāls (šis, porta nosaukums, baudas ātrums);
/ * sākt oscP5, klausoties ienākošos ziņojumus */ oscP5 = jauns OscP5 (šis, listenPort);
/* myRemoteLocation ir NetAddress. NetAddress izmanto 2 parametrus, * IP adresi un porta numuru. myRemoteLocation tiek izmantots kā parametrs * oscP5.send (), nosūtot osc paketes uz citu datoru, ierīci, * lietojumprogrammu. lietojumu skatīt zemāk. pārbaudes nolūkos klausīšanās ports * un attālās atrašanās vietas adreses ports ir vienādi, tāpēc jūs * nosūtīsit ziņojumus atpakaļ uz šo skici. */ myRemoteLocation = jauna NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = nepatiess; } showOsc (); }
void serialEvent (Serial commsPort) {// nolasiet baitu no seriālā porta: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // lūgt vairāk println ("sākot …"); pārtraukums; gadījums startChar: ienākošais = ""; pārtraukums; case endChar: messageArrived = true; // println ("ziņojuma beigas"); pārtraukums; noklusējums: ienākošais += inChar; pārtraukums; }}
/* ienākošais osc ziņojums tiek pārsūtīts uz metodi oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // iegūt 1. osc argumentu
IncomingOSCMessage + = "\ n" + String.format ("### saņēma osc ziņojumu:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", vērtība); println (IncomingOSCMessage); }
3. darbība: kods Arduino
/* Šis kods ir pamata skice saziņai ar apstrādi, izmantojot seriālu.
Tas ir plāns, kurā varat ievietot savu kodu, kas norādīts jūsu pogām, potenciometriem vai sensoriem.
Tam ir rokasspiediens, lai pārliecinātos, ka mums ir kontakts, un tiek noteikts saziņas formāts
Ir svarīgi ziņojumu veidot tādā pašā veidā, lai apstrāde zinātu, kā to dekonstruēt un nosūtīt pareizos OSC ziņojumus mūsu DAW
izgatavots darba kolekcijai AV&IT oktobris 2017
koda izlīdzināšana, ko izveidoja 2007. gada 22. aprīlī David A. Mellis, 2012. gada 9. aprīlī modificēja Tom Igoe
*/
/ bodu ātrums const garš baudRate = 115200;
// laiks gaidīt ms starp aptaujām līdz tapām const int loopPauseTime = 200; // mili sekundes
// sākuma un beigu vērtības ziņojumam, kas nosūtīts uz Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int pogaPin1 = 2; const int pogaPin2 = 5; const int numReadings = 5; // likmes van izlīdzināšana
int pitchReading = A1; int speedReading = A2; int infraLasīšana = A3;
// citi globālie mainīgie int buttonState1 = 0; int buttonState2 = 0; // mainīgais spiedpogas statusa pludiņa sensora nolasīšanaiVērtība1 = 0; pludiņa sensorsVērtība2 = 0; pludiņa sensorsValue3 = 0;
// int lasījumu izlīdzināšana [numReadings]; // nolasījumi no analogās ieejas int readIndex3 = 0; // pašreizējā rādījuma indekss int total3 = 0; // vidējais tekošais peldošais rādītājs3 = 0; // Vidējais
// Šī funkcija mums ir nepieciešama, lai izveidotu kontaktu ar apstrādes skici // Saglabājiet to šeit void createContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // nosūtīt simbolu un gaidīt atbildi… delay (loopPauseTime); } Sērijas.lasījums (); }
void setup () {// iestatiet pinModes visām tapām pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// inicializēt Serial comms Serial.begin (baudRate); kamēr (! Seriāls); // izlīdzināšana (int thisReading = 0; thisReading <numReadings; thisReading ++) {lasījumi [thisReading] = 0; }
// gaidiet rokasspiedienu izveidotContact (); }
void loop () {// aptaujājiet visas tapas un kartējiet nolasījumu uz atbilstošo diapazona poguState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// ienākošo vērtību kartēšana uz nepieciešamajām vērtībām sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = karte (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = karte (sensorValue3, 0, 700, 50, 100);
// izlīdzināšanas sensors: total3 = total3 - rādījumi [readIndex3]; // lasīt no sensora: rādījumi [readIndex3] = sensorValue3; // pievienojiet rādījumu kopsummai: total3 = total3 + rādījumi [readIndex3]; // pāriet uz nākamo masīva pozīciju: readIndex3 = readIndex3 + 1;
// ja mēs esam masīva beigās… if (readIndex3> = numReadings) {//… iesaiņojiet līdz sākumam: readIndex3 = 0; } // aprēķināt vidējo: vidēji3 = (kopā3 / numReadings); // izlīdzināšanas sensors
Serial.print (startString); // sākt ziņojumu secību // noslaucīt visus nosaukumus, vērtību pārus, atdalot tos ar komatiem Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("infrasensors"); Serial.print (","); Sērijas nospiedums (vidēji3/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);
// rakstīt ziņojuma beigas Serial.print (endString);
// pagaidi kādu laiku..
kavēšanās (loopPauseTime); }
4. solis: pļāvējs
1. solis: Ga bovenaan naar Iespējas> Prefrences
2. solis: Ga prefrences naar Control/OSC/web en druk op Add
3. solis: Kies bij Control virsmas režīms vai OSC (Open Sound Control)
4. solis: Vul je device name in, vink Recieve on port aan en vul in water er in processing no Sendport staat
5. solis. Kopēšanas rīks IP uzņēmumā tiek apstrādāts
6. solis: Druk op ok en de controller is verbonden met Reaper
5. solis: Behuizing
Šķirne: 170 mm
Garums: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (diametrs
Potenciometri: 3 mm (diametrs)
Afstand sensors: Breedte 2,9 mm
Garums 0,8 mm
Materiāls: MDF (3 mm)
6. solis: Elektronica
1. solis:
Verbind de ground lv 5 voltu van Arduino un maizes dēlis
2. solis:
Verbind pin A0 un potenciāls 1
Verbind pin A1 un potenciāls 2
Verbind pin A3 ar infrasarkano staru sensoru.
Verbind pin A2 ir lipīga poga.
Verbind pin A5 un lipīgā poga.
7. solis: Medewerkers
- Maijs El Baba
- Arno Gorisens
- Mičiēls De Vandelaers
Ieteicams:
Videonovērošanas plūsmas kontrolieris - Raspberry Pi: 3 soļi
Videonovērošanas plūsmas kontrolieris - Raspberry Pi: Sveiki visi, laipni lūdzam citā Scientify Inc. Instructable! Šis projekts optimizē videonovērošanas kameras ierakstus, izmantojot iebūvēto kustības noteikšanu, izmantojot vidējo kvadrāta (RMS) atšķirību starp diviem secīgiem attēliem. Tas palīdz izveidot videonovērošanas plūsmu
(ATJAUNINĀT - TĀDĒJĀM JAUTĀJUMIEM) USB SPĒLES KONTROLIERIS PC: 10 soļi (ar attēliem)
(ATJAUNINĀT - TĀDĒJIEM JAUTĀJUMIEM) USB SPĒLU KONTROLES PERSONA: SPĒLĒŠANAS KONTROLES KĀRTĪBA SPĒLĒ (GANDRĪZ)
Milzīgs retro spēļu deju grīdas stila kontrolieris: 4 soļi
Milzīgs retro spēļu deju grīdas stila kontrolieris: mūsu kāzām šī gada martā mēs gribējām Retro spēļu tēmu pieņemšanas ballīti, jo mēs sirdī esam tikai lieli bērni, un esmu pārliecināts, ka arī daudzi citi cilvēki! MakeyMakey's pētījumi Es domāju, ka būtu lieliska ideja apskaut
DIY spēļu kontrolieris uz Arduino bāzes - Arduino PS2 spēļu kontrolieris - Spēlējot Tekken ar DIY Arduino Gamepad: 7 soļi
DIY spēļu kontrolieris uz Arduino bāzes | Arduino PS2 spēļu kontrolieris | Spēlēt Tekken ar DIY Arduino Gamepad: Sveiki, puiši, spēlēt spēles vienmēr ir jautri, bet spēlēt ar savu DIY pielāgoto spēļu kontrolieri ir jautrāk. Tāpēc šajā instrukcijā mēs izveidosim spēles kontrolieri, izmantojot arduino pro micro
YABC - vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: 4 soļi
YABC - Vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: Sveiki, Makers, es nesen sāku audzēt sēnes mājās, austeru sēnes, bet man jau ir 3x no šiem kontrolieriem mājās, lai raudzētu temperatūras kontroli savai mājas brūvei, sieva arī tagad dara šo Kombucha lietu un kā siltuma termostatu