ዝርዝር ሁኔታ:
- ደረጃ 1 - ዋት ሄብ ጀ ኖዲግ?
- ደረጃ 2 - ኮድ ማቀናበር
- ደረጃ 3 ኮድ አርዱinoኖ
- ደረጃ 4 - አጫጅ
- ደረጃ 5: Behuizing
- ደረጃ 6: Elektronica
- ደረጃ 7 - መካከለኛ ሠራተኞች
ቪዲዮ: ሬትሮ መቆጣጠሪያ 7 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:33
Wij zijn eerste jaar studenten uit de opleiding Multimedia & Communicatietechnologie (Multec) aan de Erasmushogeschool Brussel.
Samen hebben እኛ een muziek መቆጣጠሪያ gemaakt dat muziek kan starten/stoppen, de pitch kan verhogen, kan terugspoelen en nog meer.
ኦኔስ idee kwam ቫን ቫን een ካሴት, ons doel ነበር om een ተቆጣጣሪ te maken dat lijkt op een kaset.
ደረጃ 1 - ዋት ሄብ ጀ ኖዲግ?
Componenten
- 2 አዝራሮች;
- 2 Potentio ሜትር;
- 2 weerstanden (1K ኤልክ);
- አርዱዲኖ ኡኖ/ናኖ
- Draadjes (zie elektronisch schema)
- Soldeerplaat
- ኤምዲኤፍ plaat
መሣሪያዎች
- Lasercutter
- ክኒፕታንግ
- ስተርፕታንግ
- የጦር ሜዳ (የተገናኘ ቆርቆሮ)
የፕሮግራም
- አንጸባራቂ/ተለይቶ የማይታወቅ (Tekenprogramma)
- አጫጅ
- ሂደት
- አርዱinoኖ
ደረጃ 2 - ኮድ ማቀናበር
/**
* ከ Arduino * ተከታታይ መልዕክቶችን ለመቀበል መሰረታዊ ንድፍ እና እነዚያን ወደ OSC- መልእክቶች ለሪፔተር * * * የተጠቃሚውን ፓራሜተር * ማመቻቸት ያስፈልግዎታል እና ቤተመፃህፍት መጫን ያስፈልግዎታል-oscP5 * * ለ werkcollege AV&IT * የተሰራ በ annoo bob eddi * oct 2017 * *//////////// ////////
/ በ Arduino sketch final int baudRate = 115200 ውስጥ ተመሳሳይ የባውድ መጠን መጠቀሙን ያረጋግጡ።
// ይሂዱ እና OSC ን ሲጠቀሙ በሪፔር ውስጥ የአይፒ አድራሻውን ይፈልጉ // ይህ የአሠራር ሂደት የሚላክበት እና አጫጁ የሚያዳምጠው አድራሻ ነው። // ይህንን ሕብረቁምፊ በርቀት IP ውስጥ ያስገቡ ፣ እዚህ።
// የመጨረሻ ሕብረቁምፊ የርቀት IP = "192.168.1.43"; // ለምሳሌ። "127.0.0.1";
የመጨረሻ ሕብረቁምፊ የርቀት IP = "vul hier ip በ gevonden ውስጥ በአዝጋሚ";
// የላኪውንፖርት ልብ ይበሉ እና ይህንን በአጫጆች ውስጥ ይሙሉት። // ይህ የወደብ ማቀነባበር ወደ እሱ ይልካል እና አጫጁ ያዳምጣል።
የመጨረሻ int listenPort = 11000 ፣ sendPort = 12000;
// እዚህ ማዳመጥ ፖርት በንቃት ለማረም ነው።
// ወደብ ስሞች እንዲሁ ለማረም እዚህ አሉ።
የመጨረሻ ሕብረቁምፊ portName = "vul hier de portname in gevonden in Arduino";
// የመጨረሻ ሕብረቁምፊ ወደብ ስም = "COM6"; // "/dev/ttyUSB0";
///////////////////////// የአጠቃቀም ፓራሜርስ ///////////////////// ////
የማስመጣት ሂደት. አስመጣ java.util.*;
ማስመጣት oscP5.*; netP5.*;
OscP5 oscP5; NetAddress myRemoteLocation;
ተከታታይ commsPort; // ተከታታይ ወደብ ቡሊያን መልእክት ደርሷል = ሐሰት;
ገቢ ሕብረቁምፊ = "" ፣ IncomingOSCMessage =””;
የመጨረሻ ቻር ጅምር ቻር = '*' ፣ endChar = '#'; የመጨረሻ ቻር contactCharacter = '|';
// እኛ የሚለወጡትን መለኪያዎች (እሴቶች) ብቻ መላክን ለማረጋገጥ // እነዚህ ዓለም አቀፍ ተለዋዋጭዎች እዚህ ተፈልገዋል ፣ ግን // እዚህ መጀመር የለባቸውም! HashMap oldParams ፣ newParams ፣ ወደ መላክ ፓራሞች;
// በእያንዳንዱ ኮማ ባዶ ሂደት ውስጥ መልዕክቱን መከፋፈል አለብን () {String resVec = incoming.split (","); // ስም+እሴት ጥንዶች እናገኛለን // ስለዚህ ለእያንዳንዱ ስም (+2)… ይሞክሩ {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // በአዲሱ ሃሽታብ newParams.put (resVec ፣ እሴት) ውስጥ ያስቀምጧቸው ፤ }} // ስህተት ከተከሰተ ፣ እሱን እንይዘው እናየው። መያዝ (ልዩ ሁኔታ) {println (“የልዩ መልእክት ፦” + ex); printArray (resVec); መውጫ (); }}
// መልእክቶቻችንን ለማጣራት/ * * የግብዓት መልዕክቱ (ተከታታይ) ሲቀየር የ OSC- መውጫ መልእክት ብቻ መኖሩን እናረጋግጣለን * ያ ማለት-አዝራሩን አዙረን/ብንገፋው እና እሴቱን ቢቀይር። * ስለዚህ በእውነቱ የሚለወጡትን የገቢ እሴቶችን እናጣራለን * ማስታወሻ -ከመዝለል እሴቶች መራቅ አንችልም * ለምሳሌ ከአክስሌሮሜትር ወይም ከርቀት ዳሳሾች * እነዚያን በአርዱዲኖ ውስጥ */ ባዶ ባዶ ማጣሪያParams () {toSendParams = አዲስ ሃሽማፕ (); ለ (ሕብረቁምፊ ቁልፍ: newParams.keySet ()) {// ቁልፉ ቀድሞውኑ ካለ (oldParams.containsKey (ቁልፍ)) {// ቁልፍ ካለ እና እሴት አንድ ካልሆነ ፣ ከዚያ ያዘምኑ (! oldParams.get (ቁልፍ)).እኩል (newParams.get (ቁልፍ))) {toSendParams.put (ቁልፍ ፣ newParams.get (ቁልፍ)); }} ሌላ {// ቁልፍ በድሮ ፓራሞች ውስጥ የለም ፣ ስለዚህ ያስቀምጡት! toSendParams.put (ቁልፍ ፣ newParams.get (ቁልፍ)); } oldParams.put (ቁልፍ ፣ newParams.get (ቁልፍ)); }}
ባዶ makeOSC () {ለ (ሕብረቁምፊ ቁልፍ: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (ቁልፍ)); / * መልዕክቱን ይላኩ */ oscP5.send (myMessage, myRemoteLocation); }}
ባዶነት translateMessage () {processIncoming (); filterParams (); makeOSC (); } // በሃሽ ማፕ ጽሑፍ («ከአርዱinoኖ መምጣት» ፣ 20 ፣ 20) ላይ እንደተቀመጠው ገቢ መልዕክቱን ለማየት ShowIncoming () {//) ወደ መጪው መስኮት ባዶነት ማተም ስንፈልግ ፤ int y = 20; ለ (ሕብረቁምፊ ቁልፍ: newParams.keySet ()) {y = y+20; ጽሑፍ (ቁልፍ ፣ 20 ፣ y); ጽሑፍ (newParams.get (ቁልፍ) ፣ 300 ፣ እና); }}
ባዶነት showOsc () {ጽሑፍ (IncomingOSCMessage, 300, 200); መጪ OSCMessage = ""; }
ባዶነት ማዋቀር () {መጠን (1000 ፣ 800); // የመድረክ መጠን መሙላት (255); ዳራ (0); oldParams = አዲስ HashMap (); newParams = አዲስ HashMap (); // printArray (Serial.list ()); commsPort = አዲስ ተከታታይ (ይህ ፣ የወደብ ስም ፣ baudRate);
/ * መጪ መልዕክቶችን በማዳመጥ oscP5 ን ይጀምሩ// oscP5 = new OscP5 (ይህ ፣ listenPort);
/* myRemoteLocation የ NetAddress ነው። NetAddress 2 መለኪያዎች ፣ * የአይፒ አድራሻ እና የወደብ ቁጥር ይወስዳል። myRemoteLocation የ osc ፓኬጆችን ወደ ሌላ ኮምፒተር ፣ መሣሪያ ፣ * ትግበራ ሲልክ በ * oscP5.send () ውስጥ እንደ መለኪያ ሆኖ ያገለግላል። አጠቃቀም ከዚህ በታች ይመልከቱ። ለሙከራ ዓላማዎች የማዳመጥ ወደብ * እና የርቀት ሥፍራ አድራሻው ወደብ አንድ ናቸው ፣ ስለሆነም መልዕክቶችን ወደዚህ ስዕል ይልካሉ። */ myRemoteLocation = አዲስ NetAddress (remoteIP ፣ sendPort); }
ባዶ ስዕል () {ከሆነ (መልእክት ደርሷል) {ዳራ (0); translateMessage (); ገቢ መጪ (); messageArrived = ሐሰት; } showOsc (); }
ባዶነት serialEvent (Serial commsPort) {// ከተከታዩ ወደብ አንድ ባይት ያንብቡ ፦ char inChar = commsPort.readChar (); ማብሪያ (inChar) {ጉዳይ contactCharacter: commsPort.write (contactCharacter); // ተጨማሪ println ን ይጠይቁ (“መጀመር…”); ሰበር; መያዣ startChar: ገቢ = ""; ሰበር; case endChar: messageArrived = true; // println ("msg መጨረሻ"); ሰበር; ነባሪ: ገቢ += inChar; ሰበር; }}
/* የገቢ osc መልእክት ወደ oscEvent ዘዴ ይተላለፋል። */ ባዶ ባዶ oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // የ 1 ኛ osc ክርክርን ያግኙ
IncomingOSCMessage + = "\ n" + String.format ("### የ osc መልዕክት ተቀብሏል" + "addrpattern:" + theOscMessage.addrPattern () + ": %f" ፣ እሴት); println (IncomingOSCMessage); }
ደረጃ 3 ኮድ አርዱinoኖ
/* ይህ ኮድ በስርዓት በኩል ከሂደት ጋር ለመገናኘት መሰረታዊ ንድፍ ነው።
ለራስዎ አዝራሮች ፣ ፖታቲሞሜትሮች ወይም ዳሳሾች የተገለጸውን የራስዎን ኮድ የሚያስቀምጡበት ንድፍ ነው።
ግንኙነት እንዳለን ለማረጋገጥ እና የምንገናኝበት ቅርጸት መወሰኑን ለማረጋገጥ የእጅ መጨባበጥ አለው
ማቀነባበሪያው እንዴት እንደሚፈርስ እና ትክክለኛ የ OSC መልዕክቶችን ወደ የእኛ DAW እንደሚልክ እንዲያውቅ በተመሳሳይ መንገድ መልዕክቱን መገንባቱ አስፈላጊ ነው።
ለ werkcollege AV&IT oct 2017 የተሰራ
ኮድ smooothing ተፈጥሯል 22 ኤፕሪል 2007 በ ዴቪድ ኤ. Mellis ተሻሽሏል 9 ኤፕ 2012 በቶም Igoe
*/
/ የባውድ ተመን const ረጅም baudRate = 115200;
// ጊዜ በምርጫዎች መካከል በ ms ውስጥ ለመጠበቅ ወደ ፒኖች const int loopPauseTime = 200; // ሚሊ ሰከንዶች
// በተከታታይ const String startString = "*" ፣ endString = "#" ላይ ለተላከው መልእክት የመጀመሪያ እና የመጨረሻ እሴቶች;
const char contactCharacter = '|';
// የፒን መታወቂያ የ const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // ደረጃ ቫን ማለስለስ
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// ሌሎች ዓለም አቀፍ ተለዋዋጮች int buttonState1 = 0; int buttonState2 = 0; የግፊት ቁልፍን ተንሳፋፊ ዳሳሽ ለማንበብ // ተለዋዋጭ ።Value1 = 0; ተንሳፋፊ ዳሳሽ ቫልዩ 2 = 0; ተንሳፋፊ ዳሳሽ ቫልዩ 3 = 0;
// int ንባቦችን ማለስለስ [numReadings]; // ንባቦቹ ከአናሎግ ግብዓት int readIndex3 = 0; // የአሁኑ ንባብ int total3 = 0; // የሚሮጠው ጠቅላላ ተንሳፋፊ አማካይ 3 = 0; // አማካይ
// ከሂደቱ ረቂቅ ንድፍ ጋር ግንኙነት ለመመስረት ይህንን ተግባር እንፈልጋለን // እዚህ ያቆዩት ባዶውን ያዘጋጁኮንክትክት () {ሳለ (Serial.available () <= 0) {Serial.print (contactCharacter) ፤ // ቻርተር ይላኩ እና ምላሽ ይጠብቁ… መዘግየት (loopPauseTime); } Serial.read (); }
ባዶነት ማዋቀር () {// ለሁሉም ፒኖች pinMode (buttonPin1 ፣ INPUT) የፒን ሞዶቹን ያዘጋጁ ፤ pinMode (አዝራር ፒን 2 ፣ ግቤት); pinMode (pitchReading ፣ ማስገቢያ); pinMode (የፍጥነት ንባብ ፣ ማስገቢያ); pinMode (ኢንፍራራዲንግ ፣ ግቤት);
// አስጀምር Serial comms Serial.begin (baudRate); ሳለ (! ተከታታይ); // ማለስለስ ለ (int thisReading = 0; thisReading <numReadings; thisReading ++) {reading [thisReading] = 0; }
// የእጅ መጨባበጥ ተቋማትን ይጠብቁ እውቂያ (); }
ባዶነት loop () {// ሁሉንም ካስማዎች መርጠው ንባቡን ወደ ተገቢው ክልል አዝራር State1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// የገቢ እሴቶችን ወደ አስፈላጊ እሴቶች ዳሳሾችValue1 = ካርታ (sensorValue1 ፣ 0 ፣ 1023 ፣ 0 ፣ 100.0)/-100.0; sensorValue2 = ካርታ (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = ካርታ (sensorValue3, 0, 700, 50, 100);
// ማለስለሻ ዳሳሽ - total3 = total3 - ንባቦች [readIndex3]; // ከአነፍናፊው ያንብቡ - ንባቦች [readIndex3] = sensorValue3; // ንባቡን በድምሩ ይጨምሩ - ጠቅላላ 3 = ጠቅላላ 3 + ንባቦች [readIndex3]; // በድርድሩ ውስጥ ወደሚቀጥለው ቦታ ይሂዱ - readIndex3 = readIndex3 + 1;
// በድርድሩ መጨረሻ ላይ ከሆንን… ከሆነ (readIndex3> = numReadings) {//… ወደ መጀመሪያው ጠቅልለው ያንብቡ - readIndex3 = 0; } // አማካይውን ያስሉ አማካይ 3 = (total3 / numReadings); // የማለስለሻ ዳሳሽ
Serial.print (startString); // የመልዕክት ቅደም ተከተል ያስጀምሩ // ሁሉንም ስም ፣ ዋጋ ጥንድ ፣ በኮማ 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 (አማካይ3/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);
// የመልእክቱን መጨረሻ ይፃፉ Serial.print (endString);
// ለተወሰነ ጊዜ ይጠብቁ..
መዘግየት (loopPauseTime); }
ደረጃ 4 - አጫጅ
ደረጃ 1 - አማራጮች> ምርጫዎች
ደረጃ 2: በቅድመ -እይታዎች ውስጥ Ga/Control/OSC/ድር en druk op አክል
ደረጃ 3: Kies bij የመቆጣጠሪያ ገጽ ሞድ ኦኤስሲ (የድምፅ ቁጥጥር ክፈት)
ስቴፕ 4 - የመሣሪያ ስም በ ውስጥ ፣ በቪን ሪሲቬቭ ላይ በወደቦች ላይ በሪፖርት ፖስታ አገልግሎት ሂደት ውስጥ
ደረጃ 5: በሂደት ላይ ያለ ኮፒየር ዴ አስተናጋጅ አይፒ
ደረጃ 6 Druk op ok en de መቆጣጠሪያ is nu verbonden meet Reaper
ደረጃ 5: Behuizing
ዘር - 170 ሚሜ
ርዝመት - 90 ሚሜ
Hoogte 30 ሚሜ
ኖፕፔን - 16 ሚሜ (ዲያሜትር
የፖታቲዮ ሜትር - 3 ሚሜ (ዲያሜትር)
የመቋቋም አነፍናፊ - Breedte 2.9 ሚሜ
ርዝመት 0.8 ሚሜ
ቁሳቁስ -ኤምዲኤፍ (3 ሚሜ)
ደረጃ 6: Elektronica
ደረጃ 1 ፦
Verbind de ground en 5 ቮልት ቫን አርዱinoኖ ሄት የዳቦ ሰሌዳ ተገናኘ
ደረጃ 2 ፦
Verbind pin A0 ተገናኘ potentio 1
Verbind pin A1 potentio 2 ተገናኘ
Verbind pin A3 የኢንፍራሬድ ዳሳሽ ተገናኘ።
Verbind pin A2 met de niet ተለጣፊ አዝራር።
Verbind pin A5 met de sticky አዝራር።
ደረጃ 7 - መካከለኛ ሠራተኞች
- ማይስ ኤል ባባ
- አርኖ ጎሪሰን
- ሚኪኤል ደ Wandelaer
የሚመከር:
ሬትሮ “ራዮትሮን” የሌሊት ብርሃን (ክፍል 1) 16 ደረጃዎች
ሬትሮ “ራዮትሮን” የሌሊት ብርሃን (ክፍል 1)-መግቢያ በታህሳስ 1956 ፣ አቶሚክ ላቦራቶሪዎች ራዮትሮን ለ “ሳይንስ የመጀመሪያ ደረጃ ዝቅተኛ ዋጋ ኤሌክትሮስታቲክ ጀነሬተር እና ቅንጣት አፋጣኝ” ለሳይንስ መምህራን እና ለትርፍ ጊዜ ማሳለፊያዎች አስተዋውቀዋል [1]። ራዮትሮን ከፍተኛ ፣ የጎማ ቀበቶ የታጠቀ ፣
ሬትሮ ሲፒ/ኤም ቆሞ ብቸኛ አምሳያ -8 ደረጃዎች
Retro CP/M Stand Alone Emulator - ይህ ፕሮጀክት ጥምርን ወይም RunCPM እና FabGL ን ለሲፒ/ኤም 2.2 ተመጣጣኝ ስርዓትን የሚያከናውን የቆመ ኮምፒተርን ለማቅረብ የ VGA32 ESP v1.4 ሞጁሉን ይጠቀማል። ለአነስተኛ ኮምፒተሮች እንደ ስርዓተ ክወና በ 1980 ዎቹ ውስጥ ታዋቂ። ተመልሰው መግባት ይችላሉ
ሬትሮ ኤ/ቪ ወደ ረዳት ኦዲዮ ገመድ 8 ደረጃዎች (ከስዕሎች ጋር)
ሬትሮ ኤ/ቪ ወደ ረዳት ኦዲዮ ገመድ - እኔ ይህንን ገመድ የፈጠርኩት በጣም ልዩ ተግባር ለማገልገል ነው - የ MP3 ማጫወቻን ከ A/V ወደብ ከሚመጣው የመኪና ሬዲዮ ጋር ለማገናኘት። ይህ ሂደት ከኔ Retro ስቴሪዮ ጠጋኝ ኬብል ጋር ተመሳሳይ ነው ፣ ብቸኛው ልዩነት
ATBOY አነስተኛ ሬትሮ ጨዋታ ኮንሶል 5 ደረጃዎች
ATBOY Minimal Retro Gaming Console-ቦታ ወራሪዎችን ፣ ቴትሪስን ፣ ወዘተ ለመጫወት በ ATtiny85 x 0.96 OLED ዙሪያ የተመሠረተ ትንሽ የሬትሮ ኮንሶል መሰል ቅንብር።
AVR ማይክሮ መቆጣጠሪያ Fuse ቢት ውቅር። በማይክሮ መቆጣጠሪያ መቆጣጠሪያ ፍላሽ ማህደረ ትውስታ ውስጥ የ LED ብልጭ ድርግምተኛ መርሃ ግብር መፍጠር እና መስቀል። 5 ደረጃዎች
AVR ማይክሮ መቆጣጠሪያ Fuse ቢት ውቅር። በማይክሮ መቆጣጠሪያ ተቆጣጣሪው ፍላሽ ማህደረ ትውስታ ውስጥ የ LED ብልጭ ድርግምተኛ መርሃ ግብር መፍጠር እና መስቀል የ Atmel ስቱዲዮን እንደ የተቀናጀ የልማት መድረክ በመጠቀም የራሳችንን ፕሮግራም እንጽፋለን እና የሄክሱን ፋይል እናጠናቅቃለን። እኛ ፊውዝ bi ን እናዋቅራለን