Rất đơn giản, tôi đang kiểm soát các servo (9g Micro Servos) dựa trên một số dữ liệu được đọc từ nơi khác. Tất cả mọi thứ hoạt động tốt, ngoại trừ rằng các servo sẽ liên tục "rung chuyển". Đó là, chúng rung trở lại với các chuyển động rất tinh tế (với các chuyển động không liên tục là 1/2 -> 1cm hoặc hơn).
Tôi đã cố gắng khắc phục vấn đề này trong phần mềm bằng cách làm một cái gì đó như:
do{
delay(DTIME);
positionServo();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("X position: ");
lcd.print(xRead);
lcd.setCursor(0,1);
lcd.print("Y position: ");
lcd.print(yRead);
}while( readChange() ); //while there has been change
Trong trường hợp cần thiết là khởi tạo các biến lưu trữ giá trị servo được ánh xạ (sử dụng thư viện servo arduino).
Hàm readChange () được định nghĩa là:
int readChange(){
int x_Temp, y_Temp;
x_Temp = map(analogRead(x_axisReadPin), 0, 1023, 0, 179);
y_Temp = map(analogRead(y_axisReadPin), 0, 1023, 0, 179);
if( abs(x_Temp - xRead) < DEG && abs(y_Temp - yRead) < DEG ) return 0; // no change
else return 1; //change
}
Trong đó xRead là giá trị được khởi tạo (đầu ra servo đầu tiên được ánh xạ).
Mặc dù, đây thực sự không phải là một cách tiếp cận tốt. Nó yêu cầu các giá trị BÓNG không được thay đổi theo hệ số DEG (~ 10 độ hoặc ~ 0,28V trong trường hợp của tôi). Nếu tôi viết hàm sao cho HOẶC nhỏ hơn DEG, thì nếu tôi chỉ thay đổi một servo mỗi lần thì sao? Vì vậy, có một sự phân định ..
Đây có phải chỉ đơn giản là một tài sản của servo (có lẽ là giá rẻ?) Hoặc có một cách giải quyết?
Nó sẽ đơn giản hơn nhiều để bao gồm một liên kết pastie. Đây là mã đầy đủ: http://pastie.org/8191459
Tôi đã gắn hai động cơ servo cùng với một con trỏ laser để cho phép hai bậc tự do (X, Y). Có các tùy chọn, dựa trên trạng thái của một số nút, để điều khiển các servo theo nhiều cách khác nhau. Đầu tiên là "Chuyển động" nơi tôi có hai bộ phát quang, dựa trên mức độ tiếp xúc với ánh sáng, ảnh hưởng đến vị trí của các servo. Tôi chưa triển khai mã để điều khiển các servo bằng bộ điều khiển Xbox. Và lựa chọn thứ ba chỉ là chuyển động ngẫu nhiên.