Mundarija:
- 1 -qadam: Wat Heb Je Nodig?
- 2 -qadam: kodni qayta ishlash
- 3 -qadam: Arduino kodi
- 4 -qadam: O'roq
- 5 -qadam: Behuizing
- 6 -qadam: Elektronika
- 7 -qadam: O'tkazuvchilar
Video: Retro nazoratchi: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Bryussel maktabi multimediya va kommunikatsiya texnologiyalari (Multec) va u erdagi talabalar bilan birgalikda o'qishni davom ettiradi.
Biz, albatta, musiqa tekshirgichini ishga tushiramiz/to'xtatamiz, bizni ovoz chiqarib yuboramiz, bu bizni qidirishimizga imkon beradi.
Bu kassetali kasetlarda, shuningdek, kasetlarda ham hamma narsani boshqaruvchi edi.
1 -qadam: Wat Heb Je Nodig?
Komponentlar
- 2 tugma;
- 2 ta potentsio metr;
- 2 dona (1K elk);
- Arduino uno/nano
- Draadjes (elektron sxemasi)
- Solderplaat
- MDF qoplamasi
Asboblar
- Lasercutter
- Nihoyat
- Striptang
- Soldeerbout (qalay bilan uchrashdi)
Dasturlar
- Ilustrator/indesign (Tekenprogramma)
- O'roqchi
- Qayta ishlash
- Arduino
2 -qadam: kodni qayta ishlash
/**
* Arduino-dan ketma-ket xabarlarni qabul qilishning asosiy eskizi * va uni "Reaper" uchun OSC-xabarlarga tarjima qiladi * * Siz USER PARAMETERS * ni moslashtirishingiz va kutubxonani o'rnatishingiz kerak bo'ladi: oscP5 * * werkcollege AV&IT * uchun annoo bob eddi * oktyabr 2017 * *//////////////////////////////////////// ////////
/ yakuniy int baudRate = 115200 Arduino eskizida bir xil tezlikni ishlatganingizga ishonch hosil qiling.
// OSC-dan foydalanganda Reaper-dan IP-manzilni qidirib toping // Bu ishlov berish yuboradigan va O'roqchi tinglaydigan manzil. // Bu satrni remoteIP -ga qo'ying, mana.
// final String remoteIP = "192.168.1.43"; // masalan. "127.0.0.1";
final String remoteIP = "o'rim -yig'im paytida gevonden vul hier ip";
// sendPort -ga e'tibor bering va uni Reaper -da to'ldiring. // Bu ishlov berish portiga yuboriladi va O'roqchi tinglaydi.
final int listenPort = 11000, sendPort = 12000;
// ListPort bu erda faol ravishda disk raskadrovka qilinadi.
// port nomlari bu erda disk raskadrovka uchun.
final String portName = "Arduino -da gevonden -dagi portname";
// yakuniy String portName = "COM6"; // "/dev/ttyUSB0";
///////////////////////////////// Foydalanuvchi parametrlarining oxiri ///////////////////////// ////
importni qayta ishlash.serial.*; java.util import qilish.*;
import oscP5.*; netP5 import qilish*.
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // ketma -ket portli boolean messageArrived = false;
Kiruvchi satr = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Biz faqat parametrlarni o'zgartiradigan parametrlarni (qiymatlarni) yuborishimizga ishonch hosil qilish uchun // bu global o'zgaruvchilar bu erda o'chiriladi, lekin // bu erda ishga tushirilmasligi kerak! HashMap oldParams, newParams, toSendParams;
// Biz xabarni har bir vergulga bo'lishimiz kerak void processIncoming () {String resVec = incoming.split (","); // biz ism+qiymat juftlarini olamiz // shuning uchun har bir nom uchun (+2)… harakat qilib ko'ring {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+) 1]); // ularni yangi Hashtable newParams.put -ga qo'ying (resVec , qiymati); }} // agar xatolik yuz bersa, keling uni ko'rsatamiz va chiqamiz. catch (Exception ex) {println ("Istisno xabari:" + ex); printArray (resVec); Chiqish(); }}
// Xabarlarimizni filtrlash uchun/ * Biz * kirish xabari (ketma-ket) o'zgarganda, faqat OSC-dan chiqib ketadigan xabar borligiga ishonch hosil qilamiz. * Shunday qilib, biz aslida o'zgaradigan kiruvchi qiymatlarni filtrlaymiz. HashMap (); for (String key: newParams.keySet ()) {// agar kalit allaqachon mavjud bo'lsa (oldParams.containsKey (key)) {// kalit mavjud bo'lsa va qiymati bir xil bo'lmasa, agar (! oldParams.get (key)). equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key))); }} else {// kaliti eski parametrlarda mavjud emas, shuning uchun! toSendParams.put (kalit, newParams.get (kalit)); } oldParams.put (kalit, newParams.get (kalit)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (kalit)); / * xabar yuborish */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // HashMap matnida ko'rsatilganidek, kiruvchi xabarni ko'rish uchun ShowIncoming () {// oynasiga bosmoqchi bo'lsak ("Arduino -dan kelganlar", 20, 20); int y = 20; for (String key: newParams.keySet ()) {y = y+20; matn (kalit, 20, y); matn (newParams.get (key), 300, y); }}
void showOsc () {matn (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {size (1000, 800); // Bosqichlar hajmini to'ldirish (255); fon (0); oldParams = yangi HashMap (); newParams = yangi HashMap (); // printArray (Serial.list ()); commsPort = yangi Serial (bu, portName, baudRate);
/ * oscP5 -ni ishga tushiring, kiruvchi xabarlarni tinglang */ oscP5 = yangi OscP5 (bu, listenPort);
/* myRemoteLocation - bu NetAddress. NetAddress ikkita parametrni oladi: * IP -manzil va port raqami. myRemoteLocation * oscP5.send () da osc paketlarini boshqa kompyuterga, qurilmaga, * ilovaga yuborishda parametr sifatida ishlatiladi. foydalanish quyida qarang. sinov maqsadida tinglash porti * va manzil manzili bir xil, shuning uchun siz * eskizga xabar yuborasiz. */ myRemoteLocation = yangi NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } ko'rsatishOsc (); }
void serialEvent (Serial commsPort) {// ketma -ket portdan bayt o'qing: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // ko'proq println so'rang ("boshlanmoqda …"); tanaffus; case startChar: kiruvchi = ""; tanaffus; case endChar: messageArrived = true; // println ("xabarning oxiri"); tanaffus; standart: kiruvchi += inChar; tanaffus; }}
/* kiruvchi osc xabari oscEvent usuliga yuboriladi. */ void oscEvent (OscMessage theOscMessage) {float qiymati = theOscMessage.get (0).floatValue (); // birinchi osc argumentini oling
IncomingOSCMessage + = "\ n" + String.format ("### osc xabarini oldi:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", qiymati); println (IncomingOSCMessage); }
3 -qadam: Arduino kodi
/* Bu kod ketma -ket ishlov berish bilan bog'lanish uchun asosiy eskizdir.
Bu o'z tugmachalari, potentsiometrlari yoki datchiklari uchun o'z kodingizni qo'yishingiz mumkin bo'lgan reja.
Bu biz bilan aloqada ekanligimizga va biz qaysi formatda muloqot qilayotganimizga ishonch hosil qilish uchun qo'l siqishdi
Xabarni xuddi shu tarzda tuzish juda muhim, shuning uchun ishlov berish uni qanday qismlarga ajratishni biladi va bizning DAWga to'g'ri OSC xabarlarini yuboradi.
werkcollege AV&IT 2017 yil oktyabr uchun tayyorlangan
kod smooothing 2007 yil 22 aprelda Devid A. Mellis tomonidan 2012 yil 9 aprelda Tom Igoe tomonidan o'zgartirilgan
*/
/ baud rate const long baudRate = 115200;
// so'rovlar oralig'ida pins kutish vaqti ms int int loopPauseTime = 200; // milli soniya
// Serial const String startString = "*", endString = "#" da yuborilgan xabarning boshlanish va tugash qiymatlari;
const char contactCharacter = '|';
// pin id ning const int tugmasiPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // yuk mashinasini tekislash
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// boshqa global o'zgaruvchilar int buttonState1 = 0; int tugmasiState2 = 0; // o'zgaruvchan tugma holatini o'qish uchun o'zgaruvchi sensoriValue1 = 0; float sensorValue2 = 0; float sensorValue3 = 0;
// int o'qilishini yumshatish [numReadings]; // analog o'qishdan o'qishlar int readIndex3 = 0; // joriy o'qish indeksi int total3 = 0; // ishlaydigan umumiy float o'rtacha3 = 0; // o'rtacha
// Bizga ishlov berish eskizi bilan aloqa o'rnatish uchun bu funksiya kerak // Bu erda saqlang void installContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // belgini yuboring va javobni kuting… kechiktirish (loopPauseTime); } Serial.read (); }
void setup () {// barcha pinMode pinMode uchun pinModlarni o'rnatish (buttonPin1, INPUT); pinMode (tugmaPin2, Kirish); pinMode (pitchReading, INPUT); pinMode (tezlikni o'qish, Kirish); pinMode (infraReading, INPUT);
// Serial comms Serial.begin (baudRate) ni ishga tushirish; while (! Seriyali); // tekislash (int thisReading = 0; thisReading <numReadings; thisReading ++) {o'qishlar [thisReading] = 0; }
// qo'l siqishni kuting installContact (); }
void loop () {// barcha pimlarni so'roq qiling va o'qishni tegishli diapazonga joylashtiring buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// kiruvchi qiymatlarni kerakli qiymatlarga moslashtirish sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = xarita (sensorValue2, 0, 1023, 0,0, 100) /100,0; sensorValue3 = xarita (sensorValue3, 0, 700, 50, 100);
// silliqlash sensori: total3 = jami3 - o'qishlar [readIndex3]; // sensordan o'qish: o'qishlar [readIndex3] = sensorValue3; // o'qishni jamiga qo'shing: total3 = total3 + o'qishlar [readIndex3]; // massivdagi keyingi pozitsiyaga o'tish: readIndex3 = readIndex3 + 1;
// agar biz qatorning oxirida bo'lsak … if (readIndex3> = numReadings) {//… boshiga o'raladi: readIndex3 = 0; } // o'rtacha hisob: o'rtacha3 = (jami3 / sonO'qishlar); // silliqlash sensori
Serial.print (startString); // xabarlar ketma -ketligini boshlang // barcha nomlarni, qiymat juftlarini vergul bilan ajratib yozing Serial.print ("potentio1"); Serial.print (","); Ketma -ket chop etish (sensorValue1); Serial.print (",");
Serial.print ("potentsio2"); Serial.print (","); Ketma -ket chop etish (sensorValue2); Serial.print (",");
Serial.print ("infraqizil"); Serial.print (","); Serial.print (o'rtacha 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 (tugmaState2);
// xabarning oxirini yozing Serial.print (endString);
// biroz kuting..
kechikish (loopPauseTime); }
4 -qadam: O'roq
1 -qadam: Options> Prefrences
2 -birikma: "Control"/"OSC"/"Internet" bo'limida "Qo'shish" tugmachasini bosing
3 -tayanch: OSC (Ovozni boshqarishning ochiq) rejimining sirt rejimini boshqarish.
4 -birikma: Qurilmaning nomi, vinki port portida, Sendport staatini qayta ishlashda.
5 -birikma: Xost IP -ni qayta ishlash bo'limida
6 -band: O'qishni nazorat qilish vositasi Reaper bilan bir xil
5 -qadam: Behuizing
Balandligi: 170 mm
Uzunligi: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (diametri)
Potensiometrlar: 3 mm (diametri)
Datchik sensori: Breedte 2,9 mm
Uzunligi 0,8 mm
Materiallar: MDF (3 mm)
6 -qadam: Elektronika
1 -band:
Verbind de ground 5 voltli Arduino non -taxtasida
2 -band:
A0 verbind pinasi potentsio 1 bilan uchrashdi
Verbind pin A1 potentsio 2 bilan uchrashdi
Verbind pin A3 infraqizil sensori bilan uchrashdi.
A2 verbind pinasi niet yopishqoq tugma bilan uchrashdi.
A5 verb pinasi yopishqoq tugma bilan uchrashdi.
7 -qadam: O'tkazuvchilar
- Mayes El -Baba
- Arno Gorissen
- Michiel De Vandelaer
Tavsiya:
Endstop tugmachali 3 ta magnit halqa antennasi uchun nazoratchi: 18 qadam (rasmlar bilan)
Endstop tugmachali 3 ta magnitli halqa antennalari uchun nazoratchi: Bu loyiha tijoriy bo'lmagan havaskorlar uchun mo'ljallangan. Lehimlash temiridan, plastmassadan yasalgan korpusdan va arduino haqida ozgina ma'lumotdan qurish oson. Nazoratchi byudjet komponentlaridan iborat bo'lib, uni Internetda osongina topish mumkin (~ 20 €).
Arduino DMX 512 sinovchi va nazoratchi: 19 qadam
Arduino DMX 512 tester va nazoratchi: aktualizaciones, ficheros, codigos … inglizcha versiya Este p
Arduino DMX 512 sinovchi va nazoratchi ENG: 19 qadam
Arduino DMX 512 Tester va Controller ENG: Yangilanishlar, fayllar, kodlar, sxemalar … Version en EspañolFacebook DMX-512 protokoli bo'yicha yorug'lik va shou ko'rsatish uchun nazorat vositasi, sobit yoki vaqtinchalik yoritgichlarni tezkor tekshirish uchun ideal. Bu loyiha portabopga bo'lgan ehtiyojdan kelib chiqadi
Kognitiv nogironlar uchun nazoratchi ushlagichi: 5 qadam
Kognitiv nogironlar uchun ushlagich ushlagichi: Shunday qilib, men bir kuni bilagim singanligi haqida qanday o'ylab qoldim. Men xohlagan narsani qila olmadim! O'z poyabzalimni bog'lashdan tortib, video o'yinlargacha, hamma narsa mashaqqatli edi. Keyin men o'yladim: " Odamlardan foydalana olmaydigan odamlar
Nazoratchi Erik ilhomlangan LED kub (Yer odamlari): 10 qadam (rasmlar bilan)
Supervayzer Erik ilhomlantiruvchi LED kub (Yer odamlari): Erik kim yoki nima va nima uchun siz buni qurasiz? Supervayzer Erik - bu BOX yoki kub yoki TBS "Er odamlari" ko'rsatuvidan biror narsa. Bu qanday kulgili kichkina chet elliklar tomonidan o'g'irlab ketilgan odamlar haqida ko'rsatuv - aksariyat hollarda