Mục lục:
- Bước 1: Wat Heb Je Nodig?
- Bước 2: Xử lý mã
- Bước 3: Mã Arduino
- Bước 4: Máy cắt
- Bước 5: Chỉnh sửa
- Bước 6: Elektronica
- Bước 7: Medewerkers
Video: Bộ điều khiển Retro: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Wij zijn eerste jaar studenten uit de opleiding Đa phương tiện & Giao tiếp (Multec) aan de Erasmushogeschool Brussel.
Samen hebben we een muziek controller gemaakt dat muziek kan starten / stoppen, de pitch kan verhogen, kan terugspoelen en nog meer.
Ons Idee kwam van van een cassette, ons doel was om een controller te maken dat lijkt op een cassette.
Bước 1: Wat Heb Je Nodig?
Thành phần
- 2 Nút;
- 2 máy đo Potentio;
- 2 con nai sừng tấm (1K nai sừng tấm);
- Arduino una / nano
- Draadjes (lược đồ zie elektronisch)
- Soldeerplaat
- Tấm ván MDF
Công cụ
- Lasercutter
- Kniptang
- Striptang
- Soldeerbout (gặp thiếc)
Programma's
- Ilustrator / indesign (Tekenprogramma)
- Máy cắt
- Xử lý
- Arduino
Bước 2: Xử lý mã
/**
* Phác thảo cơ bản để nhận các thông báo Serial từ Arduino * và dịch chúng thành các thông báo OSC cho Reaper * * Bạn sẽ cần điều chỉnh CÁC THÔNG SỐ NGƯỜI DÙNG * và bạn sẽ cần cài đặt Thư viện: oscP5 * * được tạo cho werkcollege AV&IT * của thông báo eddi * oct 2017 * * / ////////////////////////////////////////////////////////// ////////
/ đảm bảo rằng bạn sử dụng cùng một tốc độ truyền trong bản phác thảo cuối cùng của Arduino int baudRate = 115200;
// Đi và tìm địa chỉ IP trong Reaper khi sử dụng OSC // Đây là địa chỉ mà Process gửi đến và Reaper lắng nghe. // Đặt chuỗi này vào remoteIP, tại đây.
// final String remoteIP = "192.168.1.43"; //ví dụ. "127.0.0.1";
final String remoteIP = "vul hier ip trong gevonden trong máy gặt";
// Ghi lại sendPort và điền vào Reaper. // Đây là cổng mà Xử lý gửi đến và Reaper lắng nghe.
cuối cùng int nghePort = 11000, sendPort = 12000;
// NghePort ở đây là để gỡ lỗi tích cực.
// portNames cũng ở đây để gỡ lỗi.
final String portName = "vul hier de portname trong gevonden trong Arduino";
// final String portName = "COM6"; // "/ dev / ttyUSB0";
/////////////////////// HẾT THAM SỐ NGƯỜI DÙNG /////////////////////////// ////
nhập xử lý.serial. *; nhập java.util. *;
nhập oscP5. *; nhập netP5. *;
OscP5 oscP5; NetAddress myRemoteLocation;
Serial commsPort; // Cổng nối tiếp boolean messageArrived = false;
String incoming = "", IncomingOSCMessage = "";
cuối cùng char startChar = '*', endChar = '#'; cuối cùng char contactCharacter = '|';
// Để đảm bảo rằng chúng tôi chỉ gửi các tham số (giá trị) thay đổi // các biến thể chung này được xóa ở đây nhưng // không được khởi tạo ở đây! HashMap oldParams, newParams, toSendParams;
// Chúng ta cần tách thông báo tại mỗi dấu phẩy void processIncoming () {String resVec = incoming.split (","); // chúng ta nhận được các cặp tên + giá trị // vì vậy với mọi tên (+2)… hãy thử {for (int i = 0; i <resVec.length; i + = 2) {float value = Float.parseFloat (resVec [i + 1]); // đưa chúng vào Hashtable newParams.put (resVec , value); }} // nếu lỗi xảy ra, hãy bắt nó hiển thị và thoát. catch (Exception ex) {println ("Thông báo ngoại lệ:" + ex); printArray (resVec); lối ra(); }}
// Để lọc tin nhắn của chúng ta / * Chúng ta đảm bảo chỉ có tin nhắn OSC-out khi * thông báo đầu vào (Serial) thay đổi * Nghĩa là: nếu chúng ta vặn / ấn nút và nó thay đổi giá trị. * Vì vậy, chúng tôi lọc ra các giá trị đến thực sự thay đổi * lưu ý: chúng tôi sẽ không tránh các giá trị nhảy * đến từ ví dụ như cảm biến gia tốc hoặc cảm biến khoảng cách * bạn sẽ cần tự làm mịn các giá trị đó trong Arduino * / void filterParams () {toSendParams = new Bản đồ băm(); for (String key: newParams.keySet ()) {// nếu khóa đã có if (oldParams.containsKey (key)) {// key hiện tại và giá trị không giống nhau, sau đó cập nhật if (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// khóa không có trong các tham số cũ, vì vậy hãy đặt nó! toSendParams.put (key, newParams.get (key)); } oldParams.put (key, newParams.get (key)); }}
void makeOSC () {for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/" + key); myMessage.add (toSendParams.get (key)); / * gửi tin nhắn * / oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {processIncoming (); filterParams (); makeOSC (); } // Khi chúng ta muốn in ra cửa sổ void ShowIncoming () {// để xem thông báo đến, như được thiết lập trong văn bản HashMap ("Incoming from Arduino", 20, 20); int y = 20; for (Khóa chuỗi: newParams.keySet ()) {y = y + 20; text (key, 20, y); text (newParams.get (key), 300, y); }}
void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
void setup () {size (1000, 800); // Kích thước sân khấu fill (255); nền (0); oldParams = new HashMap (); newParams = new HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * khởi động oscP5, lắng nghe các tin nhắn đến * / oscP5 = new OscP5 (this, listeningPort);
/ * myRemoteLocation là một NetAddress. NetAddress nhận 2 tham số, * địa chỉ ip và số cổng. myRemoteLocation được sử dụng làm tham số trong * oscP5.send () khi gửi gói tin osc đến máy tính, thiết bị, ứng dụng * khác. cách sử dụng xem bên dưới. cho các mục đích thử nghiệm, cổng lắng nghe * và cổng của địa chỉ vị trí từ xa giống nhau, do đó bạn sẽ * gửi thông báo trở lại bản phác thảo này. * / myRemoteLocation = new NetAddress (remoteIP, sendPort); }
void draw () {if (messageArrived) {background (0); dịchMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {// đọc một byte từ cổng nối tiếp: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // hỏi thêm println ("bắt đầu…"); nghỉ; case startChar: incoming = ""; nghỉ; case endChar: messageArrived = true; // println ("end of msg"); nghỉ; mặc định: incoming + = inChar; nghỉ; }}
/ * tin nhắn osc đến được chuyển tiếp đến phương thức oscEvent. * / void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // lấy đối số osc đầu tiên
IncomingOSCMessage + = "\ n" + String.format ("### đã nhận được tin nhắn osc:" + "addrpattern:" + theOscMessage.addrPattern () + ":% f", value); println (IncomingOSCMessage); }
Bước 3: Mã Arduino
/ * Mã này là một bản phác thảo cơ bản để giao tiếp với Xử lý thông qua Nối tiếp.
Đây là một bản thiết kế trong đó bạn có thể đặt mã của riêng mình được chỉ định cho các nút, chiết áp hoặc cảm biến của riêng bạn.
Nó có sự bắt tay để đảm bảo rằng chúng ta có liên hệ và định dạng mà chúng ta đang giao tiếp được quyết định
Điều quan trọng là phải xây dựng thông báo theo cách tương tự, để Xử lý biết cách giải cấu trúc nó và gửi các thông báo OSC chính xác đến DAW của chúng tôi
made for werkcollege AV&IT tháng 8 năm 2017
mã Smooothing được tạo ngày 22 tháng 4 năm 2007 bởi David A. Mellis được sửa đổi vào ngày 9 tháng 4 năm 2012 bởi Tom Igoe
*/
/ tốc độ truyền const long baudRate = 115200;
// thời gian chờ tính bằng ms giữa các lần thăm dò đến các chân const int loopPauseTime = 200; // mili giây
// giá trị bắt đầu và kết thúc cho thông báo được gửi trên Serial const String startString = "*", endString = "#";
const char contactCharacter = '|';
// mã pin của const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // đánh giá làm mịn van
int pitchReading = A1; int speedReading = A2; int InfraReading = A3;
// các biến toàn cục khác int buttonState1 = 0; int buttonState2 = 0; // biến để đọc trạng thái nút nhấn float sensorValue1 = 0; cảm biến floatValue2 = 0; cảm biến phaoValue3 = 0;
// làm trơn các lần đọc int [numReadings]; // các bài đọc từ đầu vào tương tự int readIndex3 = 0; // chỉ số của lần đọc hiện tại int total3 = 0; // tổng đang chạy float average3 = 0; // Trung bình
// Chúng ta cần hàm này để thiết lập liên hệ với phác thảo Xử lý // Giữ nó ở đây void settingContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // gửi một ký tự và đợi phản hồi… delay (loopPauseTime); } Serial.read (); }
void setup () {// đặt mã pin cho tất cả các chân pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (tốc độ đọc, INPUT); pinMode (đọc hạ tầng, INPUT);
// khởi tạo Serial comms Serial.begin (baudRate); while (! nối tiếp); // làm trơn for (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }
// đợi bắt tay thành lậpContact (); }
void loop () {// thăm dò tất cả các chân và ánh xạ giá trị đọc đến phạm vi thích hợp buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (tốc độ đọc); sensorValue3 = analogRead (đọc hạ tầng);
// ánh xạ các giá trị đến thành các giá trị cần thiết sensorValue1 = map (sensorValue1, 0, 1023, 0, 100.0) / - 100.0; sensorValue2 = map (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = map (sensorValue3, 0, 700, 50, 100);
// cảm biến làm mịn: total3 = total3 - readings [readIndex3]; // đọc từ cảm biến: readings [readIndex3] = sensorValue3; // thêm bài đọc vào tổng số: total3 = total3 + bài đọc [readIndex3]; // chuyển đến vị trí tiếp theo trong mảng: readIndex3 = readIndex3 + 1;
// nếu chúng ta đang ở cuối mảng… if (readIndex3> = numReadings) {//… quấn quanh đầu: readIndex3 = 0; } // tính giá trị trung bình: average3 = (total3 / numReadings); // cảm biến làm mịn
Serial.print (startString); // bắt đầu một chuỗi thông báo // xóa tất cả các cặp tên, giá trị, được phân tách bằng dấu phẩy Serial.print ("potentio1"); Serial.print (","); Serial.print (sensorValue1); Serial.print (",");
Serial.print ("potentio2"); Serial.print (","); Serial.print (sensorValue2); Serial.print (",");
Serial.print ("cảm biến hồng ngoại"); Serial.print (","); Serial.print (trung bình3 / 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);
// ghi kết thúc thông báo Serial.print (endString);
// chờ một lúc..
trì hoãn (loopPauseTime); }
Bước 4: Máy cắt
Stap 1: Ga bovenaan naar Tùy chọn> Prefrences
Stap 2: Ga in prefrences naar Control / OSC / web en druk op Add
Stap 3: Kies bij Chế độ bề mặt điều khiển voor OSC (Điều khiển âm thanh mở)
Stap 4: Vul je device name in, vink Recieve on port aan en vul in wat er in bij Sendport staat
Stap 5: Kopieer de Host IP die je hier ziet en vul deze in in Processing
Stap 6: Druk op ok en de controller is nu verbonden met Reaper
Bước 5: Chỉnh sửa
Giống: 170 mm
Chiều dài: 90 mm
Hoogte 30 mm
Knoppen: 16 mm (đường kính
Potentio mét: 3 mm (đường kính)
Cảm biến chân đế: Breedte 2,9 mm
Lengte 0,8 mm
Vật liệu: MDF (3mm)
Bước 6: Elektronica
Stap 1:
Verbind de ground en 5 volt van Arduino đáp ứng het breadboard
Stap 2:
Verbind pin A0 gặp potentio 1
Verbind pin A1 gặp potentio 2
Verbind pin A3 đã gặp cảm biến hồng ngoại.
Verbind pin A2 đã gặp nút dính.
Pin Verbind A5 gặp nút dính.
Bước 7: Medewerkers
- Mayes El Baba
- Arno Gorissen
- Michiel De Wandelaer
Đề xuất:
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: 5 bước
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: Đây là các hướng dẫn để tạo ô tô được điều khiển từ xa của riêng bạn, được điều khiển bằng bộ điều khiển Xbox 360 không dây
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Tự làm bộ điều khiển bay điều khiển đa hệ điều khiển Arduino: 7 bước (có hình ảnh)
Tự làm bộ điều khiển máy bay đa năng điều khiển Arduino: Dự án này là tạo ra một bảng logic máy bay không người lái đa năng linh hoạt nhưng tùy chỉnh dựa trên Arduino và Multiwii
Bộ vi điều khiển AVR. Điều chế độ rộng xung. С bộ điều khiển động cơ DC và cường độ ánh sáng LED.: 6 bước
Bộ vi điều khiển AVR. Điều chế độ rộng xung. Bộ điều khiển của Động cơ DC và Cường độ ánh sáng LED: Xin chào mọi người! Điều chế độ rộng xung (PWM) là một kỹ thuật rất phổ biến trong viễn thông và điều khiển điện năng. nó thường được sử dụng để điều khiển công suất cấp cho thiết bị điện, cho dù đó là động cơ, đèn LED, loa, v.v. Về cơ bản, nó là một modu
Điều khiển các thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) với Màn hình nhiệt độ và độ ẩm: 9 bước
Điều khiển thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) Có Hiển thị nhiệt độ và độ ẩm: xin chào, tôi là Abhay và đây là blog đầu tiên của tôi về Các thiết bị điện và hôm nay tôi sẽ hướng dẫn bạn cách điều khiển các thiết bị điện bằng điều khiển từ xa bằng cách xây dựng cái này dự án đơn giản. cảm ơn atl lab đã hỗ trợ và cung cấp tài liệu