Mündəricat:
- Addım 1: Wat Heb Je Nodig?
- Addım 2: Kod İşlənməsi
- Addım 3: Arduino kodlayın
- Addım 4: biçici
- Addım 5: Davranış
- Addım 6: Elektronika
- Addım 7: Medewerkers
Video: Retro nəzarətçi: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bir çox tələbə, Multimedia və Kommunikasiya Texnologiyaları (Multec) və Brüssel məktəblərində təhsil alır.
Səbəbi ilə biz, nə qədər işlədiyini və nə vaxt açıldığını, nə də bir neçə dəfə açıldığını yoxlaya bilərik.
Onlardan biri də kasetdə, həm də bir kassetdə ən böyük nəzarətçi idi.
Addım 1: Wat Heb Je Nodig?
Komponentlər
- 2 düymə;
- 2 ədəd potensial metr;
- 2 ədəd dayaq (1K geyik);
- Arduino uno/nano
- Draadjes (elektron elektron sxem)
- Soldeerplaat
- MDF örtük
Alətlər
- Lasercutter
- Şəkil
- Striptang
- Soldeerbout (qalay ilə görüşdü)
Proqramın
- İlustrator/indesign (Tekenprogramma)
- biçən
- İşlənir
- Arduino
Addım 2: Kod İşlənməsi
/**
* Arduino-dan Serial mesajları almaq üçün * eskiz * və bunları Reaper üçün OSC mesajlarına çevirir * * İSTİFADƏÇİ PARAMETRƏLƏRİNİ uyğunlaşdırmalısınız * və Kitabxana quraşdırmalısınız: oscP5 * * werkcollege AV&IT * üçün hazırlanmış annoo bob eddi * oktyabr 2017 * *//////////////////////////////////////////////////////////////////////////////////////// ////////
/ inte baudRate = 115200 Arduino eskizinizin finalında eyni ötürmə sürətindən istifadə etdiyinizə əmin olun.
// Gedin və OSC-dən istifadə edərkən Reaper-də IP ünvanını axtarın // İşlənmənin göndərdiyi və biçənin dinlədiyi ünvandır. // Bu simli burada remoteIP -ə qoyun.
// final String remoteIP = "192.168.1.43"; // məsələn. "127.0.0.1";
final String remoteIP = "biçmə maşınında gevonden vul hier ip";
// sendPort -a diqqət yetirin və bunu Reaper -də doldurun. // Bu, İşlənmənin göndərdiyi və Oraqlının dinlədiyi portdur.
final int listenPort = 11000, sendPort = 12000;
// Buradakı listenPort aktiv olaraq debug etmək üçündür.
// portNames də debug etmək üçün buradadır.
final String portName = "Arduino -da gevonden -də çoxlu bağlantı adı";
// son String portName = "COM6"; // "/dev/ttyUSB0";
//////////////////////////////////////////////////////////////////////////////////////////////////// ////
idxal emalı.serial.*; java.util idxal edin.*;
idxal oscP5.*; netP5 idxal edin.*;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Serial port boolean messageArrived = false;
Gələn sətir = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Yalnız dəyişən parametrləri (dəyərləri) göndərdiyimizdən əmin olmaq üçün // bu qlobal dəyişənlər burada silinir, lakin // burada başlanmamalıdır! HashMap oldParams, newParams, toSendParams;
// Mesajı hər virgüllə boş yerə bölməliyik void processIncoming () {String resVec = incoming.split (","); // ad+dəyər cütləri alırıq // hər ad üçün (+2)… cəhd edin {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+) 1]); // onları yeni Hashtable newParams.put'a qoyun (resVec , dəyər); }} // bir səhv olarsa, onu göstərək və çıxaq. catch (Exception ex) {println ("İstisna Mesajı:" + ex); printArray (resVec); çıxış (); }}
// Mesajlarımızı süzmək üçün/ * Giriş mesajı (Serial) dəyişəndə * Yalnız OSC-dən çıxan bir mesaj olduğuna əminik * Yəni: düyməni çevirsək/bassaq və dəyəri dəyişərsə. * Beləliklə, əslində dəyişən daxil olan dəyərləri süzgəcdən keçiririk * qeyd: məsələn, sürətləndiricilərdən və ya məsafə sensorlarından gəldiyimiz kimi dəyərlərin atlanmasından qaçmayacağıq * bunları Arduino -da özünüz düzəltməlisiniz */ void filterParams () {toSendParams = new HashMap (); for (String key: newParams.keySet ()) {// əgər açar artıq mövcuddursa (oldParams.containsKey (key)) {// açar mövcuddursa və dəyəri eyni deyilsə, (! oldParams.get (key)). bərabərdir (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} başqa {// açar köhnə parametrlərdə yoxdur, belə deyək! toSendParams.put (açar, newParams.get (açar)); } oldParams.put (açar, newParams.get (açar)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (açar)); / * mesaj göndər */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // HashMap mətnində göstərildiyi kimi daxil olan mesajı görmək üçün void ShowIncoming () {// pəncərəsinə çap etmək istədiyimiz zaman ("Arduinodan Gələnlər", 20, 20); int y = 20; for (String düyməsi: newParams.keySet ()) {y = y+20; mətn (açar, 20, y); mətn (newParams.get (key), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); GələnOSCMessage = ""; }
void setup () {size (1000, 800); // Mərhələ ölçüsünün doldurulması (255); fon (0); oldParams = yeni HashMap (); newParams = yeni HashMap (); // printArray (Serial.list ()); commsPort = yeni Serial (bu, portName, baudRate);
/ * başlamaq oscP5, gələn mesajları dinləmək */ oscP5 = yeni OscP5 (bu, listenPort);
/* myRemoteLocation bir NetAddressdir. bir NetAddress 2 parametr alır, * bir ip ünvanı və bir port nömrəsi. myRemoteLocation, osc paketlərini başqa bir kompüterə, cihaza, * tətbiqə göndərərkən * oscP5.send () də parametr kimi istifadə olunur. istifadəsi aşağıya baxın. test məqsədləri üçün dinləmə limanı * və uzaq yer ünvanı portu eynidir, buna görə də * bu eskizə mesaj göndərəcəksiniz. */ myRemoteLocation = yeni NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = yalan; } showOsc (); }
void serialEvent (Serial commsPort) {// seriyalı portdan bir baytı oxuyun: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // daha çox println istəyin ("başlayır…"); fasilə; case startChar: gələn = ""; fasilə; case endChar: messageArrived = true; // println ("msg -nin sonu"); fasilə; standart: daxil olan += inChar; fasilə; }}
/* gələn osc mesajı oscEvent metoduna göndərilir. */ void oscEvent (OscMessage theOscMessage) {float dəyəri = theOscMessage.get (0).floatValue (); // birinci oscar arqumentini əldə edin
IncomingOSCMessage + = "\ n" + String.format ("### bir osc mesajı aldı:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", dəyər); println (IncomingOSCMessage); }
Addım 3: Arduino kodlayın
/* Bu kod, Seri ilə İşləmə ilə əlaqə qurmaq üçün əsas bir eskizdir.
Öz düymələriniz, potensiometrlər və ya sensorlar üçün öz kodunuzu qoya biləcəyiniz bir plandır.
Əlaqə qurduğumuzdan və ünsiyyət qurduğumuz formata qərar verdiyimizdən əmin olmaq üçün bir əl sıxışması var
Mesajın eyni şəkildə qurulması vacibdir, belə ki, Qenerasiya onu sökməyi və DAW-a düzgün OSC mesajlarını göndərməyi bilir.
werkcollege AV&IT oktyabr 2017 üçün hazırlanmışdır
kod smooothing, 22 aprel 2007 -ci ildə David A. Mellis tərəfindən Tom Igoe tərəfindən 9 Aprel 2012 tarixində yaradılmışdır
*/
/ baud rate const uzun baudRate = 115200;
// sorğular arasında sancaqlar arasında ms gözləmək vaxtı const int loopPauseTime = 200; // milli saniyə
// Serial const String -də göndərilən mesajın başlanğıc və bitiş dəyərləri startString = "*", endString = "#";
const char contactCharacter = '|';
// pin id -nin const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // hamarlaşdırma dərəcəsi
int pitchReading = A1; int speedReading = A2; int infraReading = A3;
// digər qlobal dəyişənlər int buttonState1 = 0; int düyməsiState2 = 0; // düymənin vəziyyəti float sensorunu oxumaq üçün dəyişənValue1 = 0; float sensorValue2 = 0; float sensorValue3 = 0;
// int oxunuşlarını hamarlaşdırmaq [numReadings]; // analoq girişdən oxunmalar int readIndex3 = 0; // cari oxu indeksi int total3 = 0; // işləyən ümumi float orta3 = 0; // orta
// İşləmə eskizi ilə əlaqə qurmaq üçün bu funksiyaya ehtiyacımız var // Burda saxlayın void installContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // simvol göndər və cavab gözlə… gecikmə (loopPauseTime); } Serial.read (); }
void setup () {// bütün pin pinMode üçün pinModları təyin edin (buttonPin1, INPUT); pinMode (düyməPin2, GİRİŞ); pinMode (pitchReading, INPUT); pinMode (sürət oxu, GİRİŞ); pinMode (infraReading, INPUT);
// Serial komutlarını işə salın Serial.begin (baudRate); while (! Serial); // hamarlaşdırma (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// əl sıxmağı gözləyin installContact (); }
void loop () {// bütün sancaqlar arasında sorğu keçirin və oxunuşu müvafiq aralığa uyğunlaşdırın buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (infraReading);
// daxil olan dəyərlərin lazımi dəyərlərə uyğunlaşdırılması sensorValue1 = xəritə (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = xəritə (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = xəritə (sensorValue3, 0, 700, 50, 100);
// hamarlaşdırıcı sensor: total3 = total3 - oxunuşlar [readIndex3]; // sensordan oxumaq: oxunuşlar [readIndex3] = sensorValue3; // oxunuşu cəminə əlavə edin: total3 = total3 + oxunuş [readIndex3]; // serialdakı növbəti mövqeyə keçin: readIndex3 = readIndex3 + 1;
// dizinin sonundayıqsa… if (readIndex3> = numReadings) {//… əvvəldən bükün: readIndex3 = 0; } // ortalamanı hesabla: orta3 = (cəmi3 / sayıOxumlar); // hamarlaşdırıcı sensor
Serial.print (startString); // bir mesaj ardıcıllığına başlayın // bütün adları, dəyər cütlərini virgüllə ayırın Serial.print ("potentio1"); Serial.print (","); Serial. çap (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial. çap (sensorValue2); Serial.print (",");
Serial.print ("infra-sensor"); Serial.print (","); Serial. çap (orta hesabla 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);
// mesajın sonunu yazın Serial.print (endString);
// biraz gözlə..
gecikmə (loopPauseTime); }
Addım 4: biçici
Zımba 1: Seçimlər> Prefrences
Zımba 2: Control/OSC/veb səhifələrində Əlavə et
Stap 3: Kies bij OSC (Açıq Səs Nəzarəti) üçün səthi rejimi idarə edin
Zımba 4: Vul je cihazın adı, vink Alıcı portu işlənərkən Sendport staatında
5 -ci hissə: İşəgötürən IP -ni yükləyin
Zımba 6: Nəzarətçi Reaper ilə tanışdır
Addım 5: Davranış
Çəkisi: 170 mm
Uzunluq: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (çap
Potansiyometrlər: 3 mm (diametr)
Dəstək sensoru: Breedte 2.9 mm
Uzunluğu 0,8 mm
Material: MDF (3 mm)
Addım 6: Elektronika
Zımba 1:
Verbind de ground en 5 volt van Arduino het breadboard ilə tanış oldu
Zımba 2:
A0 verbind pin A potentio 1 ilə tanış oldu
Verbind pin A1 potentio 2 ilə tanış oldu
Verbind pin A3, infraqırmızı sensorla görüşdü.
Verbind pin A2 de niet yapışqan düymə ilə tanış oldu.
Yapışqan düymə A5 ilə Verbind pin.
Addım 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Tövsiyə:
DIY MIDI NƏZARƏTÇİ USB Plug & Play (NEOPIXEL HALQASINI YÜKSƏLƏŞTİR): 12 addım
DIY MIDI NƏZARƏTÇİ USB Plug & Play (NEOPIXEL HALKASINI YÜKSƏLƏŞTİR): Ehtiraslı MAO və Elektron Musiqi, həm də fərdiləşdirmək üçün Midi İnterfeysi yaratmağın mümkün olduğunu görərək mina 6 Potansiyometr və 12 düyməni (açma / söndürmə) yerinə yetirmək çətinləşdi. Vizual göstərici əlavə etmək istərdim artıq
Mikro nəzarətçi olmayan LED Saat: 12 addım
Mikro nəzarətçi olmayan bir LED Saatı: Göründüyü kimi, fərqli saatlar düzəltməyi sevirəm. Çoxsaylı elektron və mexaniki saatlar qurmuşam və dizayn etmişəm, bu da başqasıdır. İlk elektronik saatım bir neçə təkrarlama tələb etdi və çox şey öyrəndim. Təqdim olunan dizayn təkmilləşdirilmiş
Endstop Switch ilə 3 Maqnit Loop Anteninə Nəzarətçi: 18 Addım (Şəkillərlə)
Endstop Switch ilə 3 Maqnitli Döngə Anteninə Nəzarətçi: Bu layihə, kommersiya olmayan bir ham həvəskarlar üçündür. Bir lehimləmə dəmiri, plastik bir qutu və bir az arduino biliyi ilə qurmaq asandır. Nəzarətçi İnternetdə (~ 20 €) asanlıqla tapa biləcəyiniz büdcə komponentlərindən hazırlanmışdır
LoRa Əsaslı Uzaqdan Nəzarətçi - Böyük Məsafələrdən Alətlərə Nəzarət: 8 Addım
LoRa Əsaslı Uzaqdan Nəzarətçi | Cihazları böyük məsafələrdən idarə edin: Hey, nə var, uşaqlar! Akarsh burada CETech-dən. Bu layihədə LEDlər, mühərriklər kimi müxtəlif alətləri idarə etmək üçün istifadə edilə bilən və ya gündəlik həyatımızdan danışsaq ev tətbiqetməmizi idarə edə biləcəyimiz bir uzaqdan idarəetmə cihazı yaradacağıq
Arduino DMX 512 Tester və Nəzarətçi: 19 addım
Arduino DMX 512 Test Cihazı və Nəzarətçisi: Aktualizasiones, ficheros, códigos … İngilis versiyasıFacebookHerramienta, DMX-512 üçün ən yaxşı seçimdir, ən yaxşı seçimdir. Este p