Përmbajtje:
- Hapi 1: Wat Heb Je Nodig?
- Hapi 2: Përpunimi i Kodit
- Hapi 3: Kodi Arduino
- Hapi 4: Korrës
- Hapi 5: Behuizing
- Hapi 6: Elektronika
- Hapi 7: Meduerkers
Video: Kontrolluesi Retro: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:28
Wij zijn eerste jaar studentë uit de opleiding Multimedia & Communicatietechnologie (Multec) nga Erasmushogeschool Brussel.
Samen hebben ne kemi kontrolluar një kontrollues që mund të fillojë/ndalojë, për të sqaruar verhogenin, duke u terugspoelen en nog meer.
Sipas ideve të tyre për kasetën, ishte e mundur të kontrolloni të gjitha kasetat që lidhen me të.
Hapi 1: Wat Heb Je Nodig?
Komponenti
- 2 butona;
- 2 metra Potentio;
- 2 kuptohemi (1K dre);
- Arduino uno/nano
- Draadjes (skema zie elektronisch)
- Soldeerplaat
- pllakë MDF
Mjetet
- Prerës me lazer
- Kniptang
- Striptang
- Soldeerbout (metali i kallajit)
Të programit
- Ilustruesi/indizajni (Tekenprogramma)
- Korrës
- Përpunimi
- Arduino
Hapi 2: Përpunimi i Kodit
/**
* Skica bazë për të marrë mesazhe serike nga Arduino * dhe i përkthen ato në mesazhe OSC për Reaper * * Ju do të duhet të përshtatni PARAMETRAT E PERRDORUESIT * dhe do t'ju duhet të instaloni një Bibliotekë: oscP5 * * e bërë për werkcollege AV&IT * nga annoo bob eddi * tetor 2017 * *///////////////////// Parametrat e perdoruesit //////////////////// /////////
/ sigurohuni që përdorni të njëjtën normë baud në skicën tuaj Arduino final int baudRate = 115200;
// Shkoni dhe kërkoni adresën IP në Reaper kur përdorni OSC // Kjo është adresa që përpunimi dërgon dhe Reaper dëgjon. // Vendoseni këtë varg në remoteIP, këtu.
// tela e largët String IP = "192.168.1.43"; // p.sh. "127.0.0.1";
final String remoteIP = "vul hier ip në gevonden në korrës";
// Merrni shënim sendPort dhe plotësojeni këtë në Reaper. // Ky është porti që përpunimi dërgon dhe dëgjon Reaper.
int int listenPort = 11000, sendPort = 12000;
// Porta e dëgjimit këtu është të korrigjosh në mënyrë aktive.
// emrat e portit janë këtu për të korrigjuar gjithashtu.
emri përfundimtar i stringut portName = "vul hier de portname në gevonden në Arduino";
// emri i fundit String portName = "COM6"; // "/dev/ttyUSB0";
////////////////////// FUNDI I PARAMETRAVE TER PERRDORUESIT //////////////////////// ////
përpunimi i importit.serial.*; import java.util.*;
importo oscP5.*; importi neto5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Porta serike mesazh booleanArrived = false;
String hyrëse = "", IncomingOSCMessage = "";
fillimi i karbonit startChar = '*', endChar = '#'; contact char përfundimtarCharacter = '|';
// Për tu siguruar që ne dërgojmë vetëm parametrat (vlerat) që ndryshojnë // këto variabla globale janë të shënuara këtu, por nuk duhet të inicializohen këtu! HashMap oldParams, newParams, toSendParams;
// Ne duhet të ndajmë mesazhin në çdo proces të pavlefshëm me presjeIncoming () {String resVec = incoming.split (","); // marrim çifte emri+vlerash // kështu që për çdo emër (+2)… provoni {për (int i = 0; i <resVec.length; i+= 2) {vlera e notit = Float.parseFloat (resVec [i+ 1]); // vendosini ato në HasPtable newParams.put (resVec , vlera); }} // nëse ndodh një gabim, le ta kapim atë të shfaqet dhe të dalë. kap (Përjashtim ex) {println ("Mesazhi i Përjashtimit:" + ish); printArray (resVec); dalje (); }}
// Për të filtruar mesazhet tona/ * Ne sigurohemi që ka vetëm një mesazh OSC kur * mesazhi hyrës (Serial) ndryshon * Domethënë: nëse e kthejmë/shtypim butonin dhe ai ndryshon vlerën. * Kështu që ne filtrojmë vlerat hyrëse që ndryshojnë në të vërtetë HashMap (); për (Çelësi i vargut: newParams.keySet ()) {// nëse çelësi është tashmë i pranishëm nëse (oldParams.containsKey (çelësi)) {// çelësi i pranishëm dhe vlera nuk është e njëjtë, atëherë përditësoni nëse (! oldParams.get (çelësi). barazohet (newParams.get (çelësi))) {toSendParams.put (çelësi, newParams.get (çelësi)); }} else {// çelësi nuk është i pranishëm në parametrat e vjetër, prandaj vendoseni! toSendParams.put (çelësi, newParams.get (çelësi)); } oldParams.put (çelësi, newParams.get (çelësi)); }}
void makeOSC () {for (Çelësi i vargut: toSendParams.keySet ()) {OscMessage myMessage = OscMessage i ri ("/"+ çelës); myMessage.add (toSendParams.get (kyç)); / * dërgoni mesazhin */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Kur duam të printojmë në dritare void ShowIncoming () {// për të parë mesazhin në hyrje, siç është vendosur në tekstin HashMap ("Hyrja nga Arduino", 20, 20); int y = 20; për (Çelësi i vargut: newParams.keySet ()) {y = y+20; tekst (çelësi, 20, y); tekst (newParams.get (kyç), 300, y); }}
void showOsc () {tekst (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {madhësia (1000, 800); // Plotësoni madhësinë e fazës (255); sfond (0); oldParams = e re HashMap (); newParams = e re HashMap (); // printArray (Serial.list ()); commsPort = Serial i ri (ky, emri i portit, baudRate);
/ * fillo oscP5, dëgjo për mesazhet hyrëse */ oscP5 = OscP5 i ri (ky, listenPort);
/* myRemoteLocation është një AdAdress. një NetAddress merr 2 parametra, * një adresë IP dhe një numër porti. myRemoteLocation përdoret si parametër në * oscP5.send () kur dërgoni pako osc në një kompjuter, pajisje, * aplikacion tjetër. përdorimi shihni më poshtë. për qëllime testimi porti i dëgjimit * dhe porta e adresës së largët të vendndodhjes janë të njëjta, prandaj ju * do të dërgoni mesazhe përsëri në këtë skicë. */ myRemoteLocation = NetAddress e re (IP e largët, sendPort); }
void barazim () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// lexoni një bajt nga porti serial: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // kërkoni më shumë println ("duke filluar …"); pushim; rasti startChar: hyrëse = ""; pushim; rasti endChar: messageArrived = true; // println ("fundi i mesazhit"); pushim; parazgjedhje: hyrëse += nëChar; pushim; }}
/* mesazhi hyrës osc përcillen në metodën oscEvent. */ void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // merrni argumentin e parë osc
IncomingOSCMessage + = "\ n" + String.format ("### mori një mesazh osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", vlera); println (IncomingOSCMessage); }
Hapi 3: Kodi Arduino
/* Ky kod është një skicë bazë për të komunikuar me Përpunimin përmes Serialit.
Shtë një plan në të cilin mund të vendosni kodin tuaj të specifikuar për butonat, potenciometrat ose sensorët tuaj.
Ka një shtrëngim duarsh për t'u siguruar që kemi kontakte dhe formati në të cilin po komunikojmë është vendosur
Isshtë e rëndësishme që mesazhi të ndërtohet në të njëjtën mënyrë, në mënyrë që Përpunimi të dijë si ta zbërthejë atë dhe të dërgojë mesazhe të sakta OSC tek DAW-ja jonë
bërë për werkcollege AV&IT tetor 2017
kodi smooothing krijuar më 22 Prill 2007 nga David A. Mellis i modifikuar më 9 Prill 2012 nga Tom Igoe
*/
/ norma baud konstante baudRate e gjatë = 115200;
// koha për të pritur në ms midis sondazheve deri në kunjat const int loopPauseTime = 200; // milili sekonda
// vlerat e fillimit dhe mbarimit për mesazhin e dërguar në Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numRlexime = 5; // norma zbutjen e furgonit
int pitchReading = A1; int speedReading = A2; int infraR leximi = A3;
// variabla të tjerë global int buttonState1 = 0; butoni int Shteti2 = 0; // ndryshore për leximin e sensorit të notimit të statusit të butonit me vlerë1 = 0; sensori i notimitVlera2 = 0; sensori i notimitVlera3 = 0;
// zbutjen e leximeve int [numReadings]; // leximet nga hyrja analoge int readIndex3 = 0; // indeksi i leximit aktual int total3 = 0; // mesatarja totale e notimit3 = 0; // mesatar
// Ne kemi nevojë për këtë funksion për të vendosur kontakt me skicën e Përpunimit // Mbaje këtu void estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // dërgoni një shenjë dhe prisni një përgjigje … vonesë (loopPauseTime); } Serial.read (); }
void setup () {// vendosni pinModes për të gjitha kunjat pinMode (buttonPin1, INPUT); pinMode (butoniPin2, HYRJE); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (infraReading, INPUT);
// inicoj Serial comms Serial.begin (baudRate); ndërsa (! Serial); // zbutje për (int thisReading = 0; thisReading <numReadings; thisReading ++) {leximet [thisReading] = 0; }
// prisni për shtrëngimin e dorës estabContact (); }
void loop () {// anketoni të gjitha kunjat dhe hartoni leximin në gamën e duhur buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (butoniPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// hartëzimi i vlerave hyrëse në vlerat e nevojshme sensorValue1 = hartë (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = hartë (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = hartë (sensorValue3, 0, 700, 50, 100);
// sensori i zbutjes: total3 = total3 - lexime [readIndex3]; // lexoni nga sensori: leximet [readIndex3] = sensorValue3; // shtoni leximin në total: total3 = total3 + lexime [readIndex3]; // avanconi në pozicionin tjetër në grup: readIndex3 = readIndex3 + 1;
// nëse jemi në fund të grupit … if (readIndex3> = numReadings) {// … përfundoni deri në fillim: readIndex3 = 0; } // llogarisni mesataren: mesatare3 = (total3 / numReadings); // sensori i zbutjes
Serial.print (startString); // filloni një sekuencë mesazhi // shkruani të gjithë emrin, çiftet e vlerës, të ndara me presje Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("infra-sensor"); Serial.print (","); Serial.print (mesatarja3/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);
// shkruaj fundin e mesazhit Serial.print (endString);
// prit pak..
vonesë (loopPauseTime); }
Hapi 4: Korrës
Hapi 1: Zgjedhja e opsioneve> Preferencat
Hapi 2: Paraqitjet paraprakisht për Kontrollin/OSC/uebin dhe shtimin
Hapi 3: Modaliteti i sipërfaqes së kontrollit Kies bij ose OSC (Hapni kontrollin e zërit)
Hapi 4: Vul je emri i pajisjes në, vink Merrni në port aan en vul në ujë në përpunimin e bij Sendport staat
Hapi 5: Kopjimi i IP -së së hostit mund të lexohet në procesin e përpunimit
Hapi 6: Druk op ok en de controller is not verbonden met Reaper
Hapi 5: Behuizing
Breed: 170 mm
Gjatësia: 90 mm
Ngjitës 30 mm
Knoppen: 16 mm (diametër
Matës potencial: 3 mm (diametër)
Sensori Afstand: Breedte 2.9 mm
Gjatësia 0.8 mm
Materiali: MDF (3mm)
Hapi 6: Elektronika
Hapi 1:
Verbind de ground en 5 volt van Arduino met hetboard
Hapi 2:
Verbind pin A0 u takua me potencialin 1
Verbind pin A1 met potentio 2
Verbind pin A3 met infrarood sensor.
Verbind pin A2 u takua me butonin ngjitës ngjitës.
Verbind pin A5 u takua me butonin ngjitës.
Hapi 7: Meduerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Recommended:
Kontrolluesi i furnizimit me kamera CCTV - Raspberry Pi: 3 hapa
Kontrolluesi i ushqimit të CCTV -Raspberry Pi: Përshëndetje të gjithëve, mirë se vini në një Instructable tjetër nga Scientify Inc.! Ky projekt optimizon atë që regjistron një aparat fotografik CCTV duke përdorur ndijimin e ndërtuar në lëvizje duke përdorur ndryshimin në katrorin mesatar të rrënjës (RMS) midis dy imazheve të njëpasnjëshme. Kjo ndihmon në bërjen e ushqimit të CCTV
(PPRDITSIM - KA NJ ÇSSHTJE TL DREJT) KONTROLLUESI I LOJS USB P FORR KP: 10 hapa (me fotografi)
(PPRDITSIM - KA NJ ÇSSHTJE TL DREJT) KONTROLLUESI I LOJS S USB USB -së P P.: Një KONTROLLUES GAMING P ANR ÇDO LOJ (Pothuajse)
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: 4 hapa
Kontrolluesi dhe kontrolluesi i zënies së dhomës MicroBit: Gjatë një pandemie, një mënyrë për të zvogëluar transmetimin e virusit është të maksimizoni distancën fizike midis njerëzve. Në dhoma ose dyqane, do të ishte e dobishme të dini se sa njerëz janë në hapësirën e mbyllur në çdo kohë. Ky projekt përdor një palë
Kontrolluesi IOT DMX Me Arduino dhe Stage Monster Live: 6 hapa
Kontrolluesi IOT DMX Me Arduino dhe Stage Monster Live: Kontrolloni ndriçimin e skenës dhe pajisjet e tjera DMX nga telefoni juaj ose ndonjë pajisje tjetër e aktivizuar në internet. Unë do t'ju tregoj se si të krijoni shpejt dhe me lehtësi kontrolluesin tuaj DMX që funksionon në platformën Stage Monster Live duke përdorur një Arduino Mega
Kontrolluesi i lojërave të bazuara në Arduino - Kontrolluesi i lojërave Arduino PS2 - Duke luajtur Tekken Me DIY Arduino Gamepad: 7 hapa
Kontrolluesi i lojërave të bazuara në Arduino | Kontrolluesi i lojërave Arduino PS2 | Luajtja e Tekken Me DIY Arduino Gamepad: Përshëndetje djema, të luani lojëra është gjithmonë argëtuese, por të luani me Kontrolluesin tuaj të personalizuar të lojës DIY është më argëtuese. Pra, ne do të bëjmë një Kontrollues të lojës duke përdorur arduino pro micro në këtë udhëzues