Sisukord:
- Samm: Wat Heb Je Nodig?
- 2. samm: koodi töötlemine
- Samm: kood Arduino
- 4. samm: niidumasin
- Samm: Behuizing
- 6. samm: Elektronica
- Samm 7: Medewerkers
Video: Retrokontroller: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat music can starten/stoppen, de pitch can verhogen, kan terugspoelen en nog meer.
On idee kwam van van een cassette, ons doel was om een controller te maken dat lijkt op een cassette.
Samm: Wat Heb Je Nodig?
Komponent
- 2 nuppu;
- 2 potentsiomeetrit;
- 2 aru (1K põder);
- Arduino uno/nano
- Draadjes (zie elektronisch skeem)
- Soldeerplaat
- MDF plaat
Tööriistad
- Laserlõikur
- Kniptang
- Striptang
- Soldeerbout (metallist tina)
Programmid
- Illustraator/disain (Tekenprogramma)
- Niidumasin
- Töötlemine
- Arduino
2. samm: koodi töötlemine
/**
* Põhiline visand Arduino jadasõnumite vastuvõtmiseks * ja teisendab need OSC-sõnumiteks Reaperi jaoks * * Peate kohandama KASUTAJA PARAMETREID * ja installima raamatukogu: oscP5 * *, mis on loodud töökolleegiumi AV&IT * jaoks, autor annoo bob eddi * oktoober 2017 * *////////////////////// KASUTAJA PARAMETRID ////////////////// ////////
/ veenduge, et kasutate oma Arduino visandi lõplikus int baudis sama andmeedastuskiirust baudRate = 115200;
// Mine ja otsi OSC kasutamisel Reaperist IP-aadressi // See on aadress, mille töötlemine saadab ja mida Reaper kuulab. // Pane see string remoteIP -sse, siia.
// lõplik String remoteIP = "192.168.1.43"; // nt. "127.0.0.1";
final String remoteIP = "vul hier ip in gevonden in reaper";
// Võtke teadmiseks sendPort ja täitke see Reaperis. // See on port, mida töötlemine saadab ja mida Reaper kuulab.
lõplik int kuulamisport = 11000, sendPort = 12000;
// Kuulamisport siin on aktiivne silumine.
// ka portNames on siin silumiseks.
final String portName = "vul hier de portname in gevonden in Arduino";
// lõplik String portName = "COM6"; // "/dev/ttyUSB0";
///////////////////// KASUTAJA PARAMETRITE LÕPP //////////////////////// ////
impordi töötlemine.seriaalne.*; import java.util.*;
import oscP5.*; import netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Sarjapordi boolean messageArrived = false;
String sissetulev = "", IncomingOSCMessage = "";
lõplik sümbol startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Veendumaks, et saadame ainult muutuvaid parameetreid (väärtusi) // need globaalsed muutujad on delkaeritud siin, kuid neid ei tohiks siin vormindada! HashMap oldParams, newParams, toSendParams;
// Peame sõnumi jagama iga komaga tühja protsessi korralIncoming () {String resVec = sissetulev.split (","); // saame nime+väärtuspaarid // nii iga nime (+2) jaoks… proovige {jaoks (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // pane need uude Hashtable newParams.put (resVec , väärtus); }} // kui ilmneb tõrge, vaatame selle kuvamise välja ja väljume. catch (Erand erand) {println ("Eranditeade:" + ex); printArray (resVec); väljumine (); }}
// Meie sõnumite filtreerimiseks/ * Veendume, et * sisendsõnumi (jada) muutumisel on ainult OSC-väljumise teade * See tähendab: kui keerame/vajutame nuppu ja see muudab väärtust. * Seega filtreerime välja sissetulevad väärtused, mis tegelikult muutuvad. * Märkus: me ei väldi hüppavaid väärtusi *, mis pärinevad nt kiirendusmõõturitelt või kaugusanduritelt *, peate need ise Arduino -s siluma HashMap (); for (Stringi võti: newParams.keySet ()) {// kui võti on juba olemas, kui (oldParams.containsKey (võti)) {// võti on olemas ja väärtus pole sama, siis värskendage, kui (! oldParams.get (võti).equals (newParams.get (võti))) {toSendParams.put (võti, newParams.get (võti)); }} else {// võtit pole vanades parameetrites, nii et pange see! toSendParams.put (võti, newParams.get (võti)); } oldParams.put (võti, newParams.get (võti)); }}
void makeOSC () {for (Stringi võti: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ võti); myMessage.add (toSendParams.get (võti)); / * saatke sõnum */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kui tahame printida aknasse void ShowIncoming () {// sissetuleva sõnumi nägemiseks, nagu on määratud HashMapi tekstis ("Saabuv Arduino", 20, 20); int y = 20; for (Stringi võti: newParams.keySet ()) {y = y+20; tekst (võti, 20, y); tekst (newParams.get (võti), 300, y); }}
void showOsc () {tekst (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {suurus (1000, 800); // Lava suuruse täitmine (255); taust (0); oldParams = uus HashMap (); newParams = uus HashMap (); // printArray (Serial.list ()); commsPort = uus jada (see, pordiNimi, baudRate);
/ * käivitage oscP5, kuulake sissetulevaid sõnumeid */ oscP5 = uus OscP5 (see, kuulamisport);
/* myRemoteLocation on NetAddress. NetAddress võtab 2 parameetrit, * IP -aadressi ja pordi numbri. myRemoteLocation kasutatakse parameetrina * oscP5.send () osc -pakettide saatmisel teise arvutisse, seadmesse või * rakendusse. kasutamist vaata allpool. testimise eesmärgil on kuulamisport * ja kauge asukoha aadressi port sama, seega saadate * sõnumid sellele visandile tagasi. */ myRemoteLocation = uus NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// jadaportist baidi lugemine: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // küsi lisa println ("alustades …"); murda; juhtum startChar: sissetulev = ""; murda; case endChar: messageArrived = true; // println ("sõnumi lõpp"); murda; vaikimisi: sissetulev += inChar; murda; }}
/* sissetulev osc -teade edastatakse oscEvent -meetodile. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // saada 1. osc argument
IncomingOSCMessage + = "\ n" + String.format ("### sai osc -teate:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", väärtus); println (IncomingOSCMessage); }
Samm: kood Arduino
/* See kood on põhijoonis, et suhelda töötlemisega jada kaudu.
See on plaan, kuhu saate sisestada oma enda nuppude, potentsiomeetrite või andurite jaoks määratud koodi.
Sellel on käepigistus, et veenduda, et meil on kontakt ja milline suhtlusvorm on otsustatud
Oluline on sõnum koostada samamoodi, et töötlemine teaks, kuidas seda dekonstrueerida ja saata meie DAW-le õiged OSC-teated
tehtud töökollektiivile AV&IT okt 2017
koodi silumine loodud 22. aprillil 2007 David A. Mellise poolt muudetud 9. aprillil 2012, autor Tom Igoe
*/
/ baud rate const pikk baudRate = 115200;
// aeg oodata ms -is küsitluste vahel tihvtidele const int loopPauseTime = 200; // milli sekundit
// Serial const saadetud sõnumi algus- ja lõppväärtused String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int nuppPin1 = 2; const int nuppPin2 = 5; const int numReadings = 5; // määra van silumine
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// muud globaalsed muutujad int buttonState1 = 0; int nuppOlek2 = 0; // muutuja nupu oleku ujukanduri lugemiseksVäärtus 1 = 0; ujukandurVäärtus2 = 0; ujukandurVäärtus3 = 0;
// int näitude silumine [numReadings]; // näidud analoogsisendist int readIndex3 = 0; // praeguse näidu indeks int kokku3 = 0; // jooksva kogu ujuki keskmine3 = 0; // keskmine
// Vajame seda funktsiooni töötlemise visandiga kontakti loomiseks // Hoidke see siin void createContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // saata sümbol ja oodata vastust… delay (loopPauseTime); } Serial.read (); }
void setup () {// määrake kõigi tihvtide pinModes pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// initsialiseeri jadamiskommid Serial.begin (baudRate); while (! Seeria); // silumine (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// oodake käepigistuse loomistContact (); }
void loop () {// küsitle kõik nööpnõelad ja kaardista näit vastavale vahemikule buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// sissetulevate väärtuste vastendamine vajalikeks väärtusteks sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = kaart (sensorValue2, 0, 1023, 0,0, 100) /100,0; sensorValue3 = kaart (sensorValue3, 0, 700, 50, 100);
// silumisandur: kokku3 = kokku3 - näidud [loeindeks3]; // andurilt lugemine: näidud [readIndex3] = sensorValue3; // liida näit kokku: total3 = kokku3 + näitu [readIndex3]; // edasi massiivi järgmisele positsioonile: readIndex3 = readIndex3 + 1;
// kui oleme massiivi lõpus… if (readIndex3> = numReadings) {//… mässime algusesse: readIndex3 = 0; } // keskmist arvutada: keskmine3 = (kokku3 / numReadings); // silumisandur
Serial.print (startString); // sõnumite jada käivitamine // kustutage kõik nimed, väärtuspaarid, eraldades need komadega Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentsi2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("infrasensor"); Serial.print (","); Jadajälg (keskmine3/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);
// kirjutage kirja lõpp Serial.print (endString);
// oota natuke..
delay (loopPauseTime); }
4. samm: niidumasin
1. etapp: valige b> Valikud> Eeldused
2. etapp: saate eelvalikud naar Control/OSC/web ja dr Add op
3. samm: Kies bij Control pinnarežiim või OSC (avatud heli juhtimine)
4. etapp: Vul je seadme nimi sisse, vink Hankige port aan en vul in wat er in processing b Send Send staat
5. etapp: vastuvõtva IP -aadressi kogumine töötlemisel
6. etapp: Druk op ok en de controller is verbonden met Reaper
Samm: Behuizing
Pikkus: 170 mm
Pikkus: 90 mm
Hoogte 30 mm
Nupp: 16 mm (läbimõõt)
Potentsi meetrid: 3 mm (läbimõõt)
Afstandi andur: Breedte 2,9 mm
Pikkus 0,8 mm
Materjal: MDF (3mm)
6. samm: Elektronica
1. samm:
Verbind de ground ja Arduino 5 -voldine leiblaud
2. etapp:
Verbind A0 ja potentsiaal 1
Verbind -tihvt A1 ja potentsiaal 2
Verbind -tihvt A3 ja infrapunaandur.
Verbind -tihvt A2 ja kleepuv nupp.
Verbind pin A5 ja kleepuv nupp.
Samm 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust