Orodha ya maudhui:
- Hatua ya 1: Wat Heb Je Nodig?
- Hatua ya 2: Usindikaji wa Nambari
- Hatua ya 3: Nambari Arduino
- Hatua ya 4: Kuvuna
- Hatua ya 5: Kufurahi
- Hatua ya 6: Elektronica
- Hatua ya 7: Watazamaji
Video: Mdhibiti wa Retro: Hatua 7
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Je! Unapata habari zaidi kwa wanafunzi wanaosoma Multimedia & Communicatietechnologie (Multec) kutoka Erasmushogeschool Brussel.
Samen hebben tunaona mtawala wa mziki kwa njia ya msingi wa kuanza au kuacha, kutia alama kwenye uwanja, au kwa njia nyingine.
Kila mtu anapaswa kumiliki kaseti, ikiwa ni pamoja na dhibiti alikuwa mtawala.
Hatua ya 1: Wat Heb Je Nodig?
Sehemu
- Vifungo 2;
- mita 2 za Potentio;
- 2 weerstanden (1K elk);
- Arduino uno / nano
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- Bamba la MDF
Zana
- Lasercutter
- Kniptang
- Striptang
- Soldeerbout (bati iliyokutana)
Programu
- Ilustrator / indesign (Tekenprogramma)
- Kuvuna
- Inasindika
- Arduino
Hatua ya 2: Usindikaji wa Nambari
/**
* Mchoro wa kimsingi wa kupokea ujumbe wa Serial kutoka Arduino * na kuzitafsiri hizo kuwa barua-pepe za OSC kwa wavunaji * * Utahitaji kurekebisha VITUMBISHO VYA USER * na utahitaji kusakinisha Maktaba: oscP5 * * iliyoundwa kwa werkcollege AV&IT * na annoo bob eddi * oct 2017 * * / ////////////////////// MATUMIZI YA WATUMIAJI ///////////////////////// /////////
/ hakikisha unatumia kiwango sawa cha baud kwenye mchoro wako wa Arduino mwisho int baudRate = 115200;
// Nenda utafute anwani ya IP katika Reaper wakati unatumia OSC // Hii ndiyo anwani Inayotumia kushughulikia na Kuvuna inasikiliza. // Weka kamba hii kwenye kijijiniIP, hapa.
// mwisho Kamba ya mbaliIP = "192.168.1.43"; // mfano. "127.0.0.1";
kamba ya mwishoIP = "vul hier ip katika gevonden katika mvunaji";
// Angalia PostPort na ujaze hii katika Reaper. // Huu ndio Usindikaji wa bandari unaotuma na Kuvuna unasikiliza.
mwisho int listenPort = 11000, sendPort = 12000;
// ThePortPort hapa ni kufanya utatuzi kikamilifu.
// bandariMajina yako hapa kutatua pia.
String portName ya mwisho = "jina la jina la jina katika gevonden huko Arduino";
// mwisho String portName = "COM6"; // "/ dev / ttyUSB0";
////////////////////// END of USER PARAMETERS ////////////////////////////////// ////
usindikaji wa kuagiza.serial. *; kuagiza java.util. *;
kuagiza oscP5. *; kuagiza netP5. *;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Ujumbe wa boolean wa bandari ya serialIliwasili = uwongo;
Kamba inayoingia = "", IncomingOSCMessage = "";
mwisho char kuanzaChar = '*', endChar = '#'; mawasiliano ya mwisho ya charCharacter = '|';
// Kuhakikisha tunatuma tu vigezo (maadili) zinazobadilisha // hizi anuwai za ulimwengu zimesimamishwa hapa lakini hazipaswi kuzinduliwa hapa! HashMap oldParams, newParams, toSendParams;
// Tunahitaji kugawanya ujumbe katika kila mchakato wa utupu wa komaKuingia () {String resVec = incoming.split (","); // tunapata jozi za thamani ya jina // hivyo kwa kila jina (+ 2)… jaribu {kwa (int i = 0; i <resVec.length; i + = 2) {float value = Float.parseFloat (resVec [i + 1]); // ziweke kwenye Hashtable newParams.put (resVec , thamani); }} // ikiwa hitilafu inatokea, wacha tuigundue na tuondoke. kukamata (Exception ex) {println ("Ujumbe wa Isipokuwa:" + ex); chapaArray (resVec); Utgång(); }}
// Kuchuja ujumbe wetu / * Tunahakikisha kuna ujumbe wa OSC tu wakati * ujumbe wa kuingiza (Serial) unabadilika * Hiyo ni: ikiwa tutageuka / bonyeza kitufe na inabadilisha thamani. * Kwa hivyo tunachuja nambari zinazoingia ambazo hubadilika * kumbuka: hatutaepuka maadili ya kuruka * kama hutoka kwa mfano accelerometers au sensorer za umbali * utahitaji kulainisha hizo wewe mwenyewe katika Arduino * / batili filterParams () {toSendParams = new HashMap (); ya (Kitufe cha kamba: Usawa (newParams.get (ufunguo))) {toSendParams.put (key, newParams.get (key)); }} mwingine {// ufunguo haupo katika vifungu vya zamani, kwa hivyo uweke! toSendParams.put (ufunguo, newParams.get (ufunguo)); } OldParams.put (ufunguo, newParams.get (ufunguo)); }}
utupu makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/" + key); myMessage.add (toSendParams.get (ufunguo)); / * tuma ujumbe * / oscP5.send (myMessage, myRemoteLocation); }}
batili translateMessage () {processIncoming (); filterParams (); fanyaOSC (); } // Wakati tunataka kuchapisha kwenye dirisha tupu la ShowIncoming () {// kuona ujumbe unaoingia, kama ilivyo kwenye maandishi ya HashMap ("Incoming from Arduino", 20, 20); int y = 20; kwa (Kitufe cha Kamba: newParams.keySet ()) {y = y + 20; maandishi (ufunguo, 20, y); maandishi (newParams.get (ufunguo), 300, y); }}
batili showOsc () {maandishi (IncomingOSCMessage, 300, 200); InayoOSCMessage = ""; }
usanidi batili () {saizi (1000, 800); // Ukubwa wa hatua ya kujaza (255); msingi (0); oldParams = mpya HashMap (); newParams = mpya HashMap (); // kuchapaArray (Serial.list ()); commsPort = mpya Serial (hii, portName, baudRate);
/ * anza oscP5, kusikiliza ujumbe unaoingia * / oscP5 = OscP5 mpya (hii, sikilizaPort);
/ * myRemoteLocation ni NetAddress. NetAddress inachukua vigezo 2, * anwani ya ip na nambari ya bandari. myRemoteLocation hutumiwa kama kigezo katika * oscP5.send () wakati wa kutuma pakiti za osc kwa kompyuta nyingine, kifaa, * programu. matumizi angalia hapa chini. kwa madhumuni ya upimaji bandari ya kusikiliza na bandari ya anwani ya eneo la mbali ni sawa, kwa hivyo utatuma * ujumbe kwenye mchoro huu. * / myRemoteLocation = NetAddress mpya (remoteIP, sendPort); }
chora batili () {if (messageArrived) {background (0); translateMessage (); Onyesha Inayoingia (); messageArrived = uongo; } onyeshaOsc (); }
void serialEvent (Serial commsPort) {// soma ka kutoka bandari ya serial: char inChar = commsPort.readChar (); kubadili (inChar) {kesi contactCharacter: commsPort.write (contactCharacter); // kuuliza println zaidi ("kuanzia …"); kuvunja; kesi ya kuanzaChar: incoming = ""; kuvunja; mwisho wa kesiChar: messageArrived = kweli; // println ("mwisho wa msg"); kuvunja; chaguo-msingi: inayoingia + = inChar; kuvunja; }}
/ * ujumbe unaoingia wa osc hupelekwa kwa njia ya oscEvent. * / void oscEvent (OscMessage theOscMessage) {thamani ya kuelea = theOscMessage.get (0). FloatValue (); // pata hoja ya 1 osc
IncomingOSCMessage + = "\ n" + String.format ("### ilipokea ujumbe wa osc:" + "addrpattern:" + theOscMessage.addrPattern () + ":% f", value); println (InayoOSCMessage); }
Hatua ya 3: Nambari Arduino
/ * Nambari hii ni mchoro wa msingi wa kuwasiliana na Usindikaji kupitia Serial.
Ni ramani ambayo unaweza kuweka nambari yako mwenyewe iliyoainishwa kwa vifungo vyako, potentiometers au sensorer.
Inapeana mikono ili kuhakikisha kuwa tuna mawasiliano na muundo ambao tunawasiliana umeamuliwa
Ni muhimu kujenga ujumbe kwa njia hiyo hiyo, ili Usindikaji ujue kuijenga upya na kutuma ujumbe sahihi wa OSC kwa DAW yetu
imetengenezwa kwa werkcollege AV&IT oct 2017
laini ya nambari iliyoundwa 22 Aprili 2007 na David A. Mellis ilibadilishwa 9 Aprili 2012 na Tom Igoe
*/
/ kiwango cha baud const baud ndefu Kiwango = 115200;
// wakati wa kusubiri kwa ms kati ya kura hadi pini const int loopPauseTime = 200; sekunde // milli
// maadili ya kuanza na kumaliza kwa ujumbe uliotumwa kwenye Serial const String startString = "*", endString = "#";
mawasiliano ya const charCharacter = '|';
// kitufe cha siri cha siri cha pin pin = 1; kifungo cha int intPin2 = 5; usomaji wa hesabu = 5; // kiwango van laini
kusoma kwa sauti = A1; kasi ya kusoma> A2; kusoma infra = A3;
// vigeuzi vingine vya ulimwengu int buttonState1 = 0; kifungo cha ndaniState2 = 0; // kutofautisha kwa kusoma sensorer ya hali ya kifungo cha kushinikizaValue1 = 0; sensor ya kueleaValue2 = 0; sensor ya kueleaValue3 = 0;
// kulainisha usomaji wa ndani [kusoma kwa hesabu]; // masomo kutoka kwa pembejeo ya analog int readIndex3 = 0; // faharisi ya usomaji wa sasa wa int3 = 0; // jumla ya kuelea wastani3 = 0; // wastani
// Tunahitaji kazi hii kuanzisha mawasiliano na Mchoro wa Usindikaji // Itunze hapa batili kuanzishaContact () {wakati (Serial.available () <= 0) {Serial.print (contactCharacter); // tuma char na subiri majibu… kuchelewa (loopPauseTime); } Serial.read (); }
kuanzisha batili () {// weka alama za siri kwa pini zote za PinMode (buttonPin1, INPUT); pinMode (kifungoPin2, INPUT); pinMode (Kusoma lami, INPUT); pinMode (kasi ya Kusoma, INPUT); pinMode (infraReading, INPUT);
// anza serial Comms Serial.begin (baudRate); wakati (! Serial); // kulainisha kwa (int thisReading = 0; hiiReading <numReadings; thisReading ++) {masomo [hiiReading] = 0; }
// subiri kusalimiana kwa mikonoContact (); }
kitanzi batili () {// chagua pini zote na ramani usomaji kwenye kitufe kinachofaa State1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = AnalogRead (Kusoma lami); sensorValue2 = AnalogRead (kusoma kwa kasi); sensorValue3 = AnalogRead (infraReading);
// kupanga ramani zinazoingia kwa sensorer muhimuValue1 = ramani (sensorValue1, 0, 1023, 0, 100.0) / - 100.0; sensorValue2 = ramani (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = ramani (sensorValue3, 0, 700, 50, 100);
// sensorer ya kulainisha: jumla3 = jumla3 - masomo [somaIndex3]; // kusoma kutoka kwa sensorer: masomo [readIndex3] = sensorValue3; // ongeza usomaji kwa jumla: jumla3 = jumla3 + masomo [somaIndex3]; // mapema kwa nafasi inayofuata katika safu: somaIndex3 = somaIndex3 + 1;
// ikiwa tuko mwisho wa safu… ikiwa (readIndex3> = numReadings) {//… funga mpaka mwanzo: readIndex3 = 0; } // mahesabu wastani: wastani3 = (jumla3 / hesabu za kusoma); // sensorer ya kulainisha
Serial.print (startString); // kuanza mlolongo wa ujumbe // wirte jina lote, jozi za thamani, zilizotengwa na koma za serial.print ("potentio1"); Serial.print (","); Rekodi ya serial (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Printa ya serial (sensorValue2); Serial.print (",");
Serial.print ("infra-sensor"); Serial.print (","); Printa ya serial (wastani3 / 100); Serial.print (",");
Serial.print ("knop 1 in2 wit"); Serial.print (","); Serial.print (kifungoState1); Serial.print (","); Serial.print ("knop2 in5 geel"); Serial.print (","); Serial.print (kifungoState2);
// andika mwisho wa ujumbe Serial.print (endString);
// subiri kwa muda..
kuchelewesha (loopPauseTime); }
Hatua ya 4: Kuvuna
Kamba ya 1: Chaguo za chaguzi za juu> Viambishi
Stap 2: Ga katika prerences na Control / OSC / web sw druk op Ongeza
Stap 3: Kies bij Control mode mode voor OSC (Open Sound Control)
Stap 4: Vul jina la kifaa ndani, vink Pokea kwenye bandari moja kwa moja katika usindikaji wa ngazi ya Sendport
Stap 5: Kopieer de Host IP itafikia wakati huu katika Usindikaji
Stap 6: Druk op ok en de de controller is nu verbonden met Reaper
Hatua ya 5: Kufurahi
Ufugaji: 170 mm
Urefu: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (kipenyo
Mita za Potentio: 3 mm (kipenyo)
Sifa ya kuelewa: Breedte 2.9 mm
Urefu 0.8 mm
Vifaa: MDF (3mm)
Hatua ya 6: Elektronica
Kamba 1:
Verbind de ground en 5 volt van Arduino alikutana na ubao wa mkate
Kamba 2:
Pini ya kitenzi A0 ilikutana na nguvu 1
Pini ya kitenzi A1 ilikutana na nguvu 2
Pini ya Verbind A3 imekutana na sensa ya infrarood.
Pini ya kitenzi A2 imekutana na kitufe cha kunata.
Pini ya kitenzi A5 imekutana na kitufe cha kunata.
Hatua ya 7: Watazamaji
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Ilipendekeza:
Mdhibiti wa Deepcool AIO RGB Arduino Mdhibiti: 6 Hatua
Mdhibiti wa Deepcool Castle AIO RGB Arduino: Niligundua kuchelewa sana kuwa ubao wangu wa mama haukuwa na kichwa cha kichwa cha rgb kinachoweza kushughulikiwa kwa hivyo niliboresha kutumia mafunzo kama hayo. Mafunzo haya ni ya mtu aliye na Deepcool Castle AIOs lakini inaweza kutumika kwa vifaa vingine vya rgb pc. KANUSHO: Ninajaribu
Intro kwa Mdhibiti Mdhibiti wa CloudX: Hatua 3
Intro kwa Microcontroller ya CloudX: Mdhibiti mdogo wa CloudX ni vifaa vya kufungua na programu-kompyuta ndogo ambayo hukuruhusu kuunda miradi yako ya maingiliano. CloudX ni bodi ndogo ya chip ambayo inaruhusu watumiaji kuiambia nini cha kufanya kabla ya kuchukua hatua yoyote, inakubali k tofauti
Mdhibiti wa Mchezo bila waya na Arduino na NRF24L01 + (msaada kwa Mdhibiti mmoja au Wawili): Hatua 3
Mdhibiti wa Mchezo bila waya na Arduino na NRF24L01 + (msaada kwa Mdhibiti mmoja au Wawili): Unaweza kupata mradi kamili kutoka kwa wavuti yangu (iko katika Kifini): https://teukka.webnode.com/l/langaton-ohjain-atmega-lla- ja-nrf24l01-radiomoduulilla / Huu ni mkutano mfupi sana kuhusu mradi huo. Nilitaka tu kuishiriki ikiwa mtu angesema
Mdhibiti mdogo wa AVR. Pulse Modulation Upana. Mdhibiti wa DC Motor na Mwangaza wa Mwanga wa LED.: 6 Hatua
Mdhibiti mdogo wa AVR. Pulse Modulation Upana. Mdhibiti wa DC Motor na Uzito wa Mwanga wa LED. Halo kila mtu! Pulse Modding Width (PWM) ni mbinu ya kawaida sana katika mawasiliano ya simu na udhibiti wa nguvu. ni kawaida kutumika kudhibiti nguvu inayolishwa kwa kifaa cha umeme, iwe ni motor, LED, spika, n.k kimsingi ni modu
YABC - Mdhibiti Mwingine wa Blynk - Joto la IoT Cloud na Mdhibiti wa Unyevu, ESP8266: Hatua 4
YABC - Mdhibiti Mwingine wa Blynk - Mdhibiti wa Joto la IoT na Udhibiti wa Unyevu, ESP8266: Hi Makers, hivi karibuni nilianza kukuza uyoga nyumbani, uyoga wa Oysters, lakini tayari nina 3x ya vidhibiti hivi nyumbani kwa Udhibiti wa Joto la Fermenter kwa pombe yangu ya nyumbani, mke pia inafanya jambo hili la Kombucha sasa, na kama Thermostat ya Joto