Trích dẫn Gửi bởi CKD Xem bài viết
Delay sau vòng lặp for mà. Nội dung của cái đoạn code đó nôm na thế này.

Khởi tạo.
Phát 5000 xung đồng thời báo cáo số xung qua RS232
Chờ 2000ms
Lăp lại quá trình.


Có nhiều nguyên nhân gây chậm trong chương trình này.
- Arduino không phải không thể chạy nhanh hơn (vì nó vẫn dùng atmega32 16MHz như nhiều ứng dụng đơn giản khác). Nhưng các lệnh của nó đều chạy qua thư viện, nên in/out của nó đều phải tra qua pin map. Do đó nó mất nhiều thời gian mới thay đổi trạng thái của 1 in/out được.
- Mỗi khi thay đổi trạng thái, đều phải báo cáo qua RS232, làm mất thêm một khoảng thời gian chờ thực hiện xong việc này.
- Ngay cả delayMicroseconds(1) nó cũng ngốn mất khá thời gian, thực hiện riêng lệnh đã mất đâu hơn 10us.

Để cải thiện.
- Tăng tốc tối đa cho giao tiếp RS232, hoặc bỏ luôn, chỉ báo cáo khi hoàn tất 5000 xung.
- Thay vì dùng các lệnh như digitalWrite thì dùng bitwise (như bitRead, bitWrite v.v...) để truy cập trực tiếp lên pin/port của vxl sẽ cải thiện nhiều về tốc độ. Tất nhiên khi truy cập trực tiếp lên pin/port thì ta phải nắm rỏ pinout của vxl, vì lúc đó output nó không theo pin number của arduino nữa.

thanks anh CKD,em đã bỏ cái rs232 và cải thiện tốc độ rất nhiều
mỗi chu kì 40us thì mất bước 50us trở lên thì ổn rồi
nhưng có vấn đề là toàn bộ quá trình máy chạy nếu cứ để mặc định tốc độ như vậy cho dù về home thì cũng chạm cử rất mạnh,rung cả máy
em định dùng bộ thư viện accelstepper,do thư viện có gia tốc
nhưng e tìm tài liệu thì không thấy nói rõ phải sử dụng thư viện ntn,em không biết làm sao để chỉnh tốc độ,tọa độ bước,gia tốc,code mẫu e thấy toàn random...chiều quay nữa,vì thằng vexta cấp xung CW quay thuận CCW lại quay ngược
a có tài liệu hay code mẫu nào cho em tham khảo với ạ,tiếng anh cũng được