Tôi xây dựng các phần tiếp theo âm nhạc .
Chỉ có điều nó không chính xác là trình sắp xếp chuỗi, đó là giao diện vật lý cho trình phân tích. Trình sắp xếp thứ tự là một ứng dụng chạy trên máy tính xách tay mà trình sắp xếp kết nối với, điều này cho phép người dùng tạo các vòng lặp trống khi đang di chuyển. Điều này khá thú vị, nhưng nó đòi hỏi một máy tính xách tay vì trình sắp xếp không phải là 'trên tàu'.
Những gì tôi thích là thực hiện tuần tự trên thiết bị của tôi.
Bây giờ hãy giả sử tôi biết cách giải quyết tuân thủ lớp cho kết nối USB MIDI và cũng giả sử tôi có thể tìm ra cách nối dây arduino để gửi ghi chú MIDI từ cổng DIN 5 chân. Điều tôi quan tâm nhất là nhịp độ trôi theo thời gian do thời gian không nhất quán tính theo số phút trong mỗi lần chạy vòng lặp sự kiện.
Một số điều tôi biết:
Bạn không nên dựa vào
delay()
để kiểm soát vòng lặp nhịp độ. Trì hoãn dừng tất cả hoạt động của phần sụn và điều đó không thể hoạt động vì tôi cần thăm dò giao diện người dùng vật lý để thay đổi trong khi trình tự đang chạy.Tính toán dựa trên
millis()
là tốt hơn bởi vì phần sụn có thể tiếp tục hoạt động và hành động khi một số lượng nhất định đã trôi qua.Mặc dù không có điều khiển vật lý nào của tôi kích hoạt các thói quen gián đoạn, một số thao tác có thể trì hoãn hoạt động chính
loop()
. Nếu tôi thiết kế một chức năng chờ đầu vào của người dùng, điều đó rõ ràng có thể gây ra vấn đề thiếu "thời hạn" để hành động nếumillis()
số lượng đã hết. Tôi biết vấn đề này là do thiết kế của riêng tôi ...
Câu hỏi:
A. Có phải arduino dựa trên AVR là một vi điều khiển thích hợp để thăm dò giao diện người dùng và chạy một vòng lặp thời gian quan trọng không? Tôi biết có một Arduino dựa trên ARM bây giờ nhanh hơn rất nhiều. Một Teensy 3.0 sẽ là một sự thay thế tốt hơn? Cả hai đều là bo mạch 3.3V, vì vậy đó là một loạt vấn đề khác cần giải quyết ... nhưng bây giờ tôi sẽ bỏ qua vấn đề đó.
B. Tôi có nên chia nhiệm vụ thành hai bộ vi xử lý? Một để xử lý bỏ phiếu và cập nhật giao diện người dùng và một cho nhiệm vụ vòng lặp thời gian quan trọng.
c. Thứ gì khác?
Mục tiêu chính của tôi là không phải sử dụng máy tính. Tôi cũng muốn tính toán cho swing, nhưng trong trường hợp này, swing không có nghĩa là nếu tôi không có nhịp độ chính xác bị khóa và thời gian. Cảm ơn lời khuyên của bạn!
noInterrupts();
dừng jitter, nhưng cũng dừng tất cả các ngắt mong muốn.