Mục lục:

Bộ điều khiển Servo nối tiếp dựa trên Arduino: 6 bước
Bộ điều khiển Servo nối tiếp dựa trên Arduino: 6 bước

Video: Bộ điều khiển Servo nối tiếp dựa trên Arduino: 6 bước

Video: Bộ điều khiển Servo nối tiếp dựa trên Arduino: 6 bước
Video: Điều khiển động cơ Servo với Arduino - Tự học lập trình Arduino Tập 32 2024, Tháng bảy
Anonim
Bộ điều khiển Servo nối tiếp dựa trên Arduino
Bộ điều khiển Servo nối tiếp dựa trên Arduino
Bộ điều khiển Servo nối tiếp dựa trên Arduino
Bộ điều khiển Servo nối tiếp dựa trên Arduino

Đây là một bộ điều khiển nối tiếp đơn giản cho nhiều Servos dựa trên Arduino. (hướng dẫn đầu tiên của tôi quá:))

Hầu hết công việc trong việc này là làm cho phần mềm nói chuyện với arduino và tạo ra một giao thức để truyền dữ liệu. Đối với khía cạnh phần cứng, tất cả những gì tôi sử dụng là hai servo (Servo chuẩn Parallax ở đây.) Một Sparkfun Arduino ProtoShield và một Arduino Duemilanove với ATMEGA328, nhưng hầu hết các bộ phận này có thể được thay thế bằng các vật phẩm tương tự. Tôi đã nghĩ ra dự án này như một phần của hệ thống RC, nhưng việc thiết lập thông tin liên lạc mất rất nhiều thời gian. Nếu bất kỳ ai có bất kỳ cải tiến, ý tưởng hoặc lỗi nào, vui lòng bình luận. CHỈNH SỬA: Tôi đã viết bài này một thời gian trước, vừa mới xuất bản nó gần đây.

Bước 1: Những thứ bạn có thể cần…

Những thứ bạn có thể cần…
Những thứ bạn có thể cần…
Những thứ bạn có thể cần…
Những thứ bạn có thể cần…

Một số thứ bạn sẽ cần để xây dựng cái này. 1. Bo mạch Arduino (bạn chọn) 2. hai (hoặc một) servos 3. jumper 4. Visual Studio 2008 Express - liên kết (tùy chọn) 5. Arduino IDE - liên kết Xin lỗi người hâm mộ Linux và Apple, chương trình của tôi chỉ chạy trên cửa sổ hiện tại, nhưng bạn vẫn có thể gửi các lệnh nối tiếp đến arduino theo cách thủ công mà không cần thay đổi mã.

Bước 2: Kết nối phần cứng

Kết nối phần cứng
Kết nối phần cứng

Bước này không có gì phức tạp lắm, bạn chỉ cần kết nối một servo với chân 9 và servo kia với chân 10.

Bước 3: Lập trình Arduino

Lập trình Arduino
Lập trình Arduino

bây giờ bạn có thể tải bản phác thảo lên arduino.

Đây là một phân tích đơn giản về mã: #include Servo myservo; // tạo đối tượng servo để điều khiển một servo Servo myservo1; int incomingByte = 0, datacount = 0, counter = 0, ready = 0; // cho dữ liệu nối tiếp đến dữ liệu char data [10]; const char verify [8] = "ma11hew"; lệnh char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // mở cổng nối tiếp, đặt tốc độ dữ liệu Serial.println ("Hi Arduino Here!"); // được thêm vào để giúp xác định cổng nối tiếp Điều này chỉ thiết lập cổng nối tiếp và servos. int i; for (i = 0; i <180; i ++) {myservo.write (i); chậm trễ (15); } myservo.write (5); for (i = 0; i <180; i ++) {myservo1.write (i); chậm trễ (15); } myservo1.write (5); } Chuyển động quét đơn giản để xác minh các servos hoạt động chính xác. void loop () {ready = 0; bộ đếm = 0; while (1 == 1) {if (Serial.read ()! = verify [counter]) {break; } if (counter == 6) {delay (20); lệnh [0] = Serial.read (); lệnh [1] = Serial.read (); // if (Serial.read () == ((command [1] * 12)% 8)) // {ready = 1; //} Serial.println ("lệnh đã lưu"); } bộ đếm ++; chậm trễ (2); } điều này sẽ kiểm tra bộ đệm nối tiếp để tìm chuỗi ủy quyền chính xác, sau đó lấy hai byte cho lệnh. câu lệnh if được nhận xét cho phép tổng kiểm tra tạm thời nhưng sẽ làm khó giao diện thủ công. Sẵn sàng có thể được đặt thành 0 để các lệnh sẽ không được phân tích cú pháp, chẳng hạn như trong trường hợp dữ liệu bị hỏng. // tìm kiếm thông qua các lệnh if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("điều khiển bướm ga trên chân số 9 thành:"); Serial.println (map (lệnh [1], 32, 126, 2, 180), DEC); myservo.write (map (lệnh [1], 32, 126, 2, 180)); } if (command [0] == 'S') {command [0] = 0; Serial.print ("điều khiển bướm ga trên chân 10 thành:"); Serial.println (map (lệnh [1], 32, 126, 2, 180), DEC); myservo1.write (map (lệnh [1], 32, 126, 2, 180)); }}} phần còn lại của mã là tìm kiếm lệnh cho các lệnh hợp lệ (T hoặc S.) nếu phù hợp, nó sẽ lấy byte tiếp theo và gửi nó đến servo. thêm trên bản đồ (lệnh [1], 32, 126, 2, 180) sau đó… mã ở đây có thể mở rộng cho bất kỳ thứ gì khác mà bạn có thể cần (ví dụ: đèn, động cơ, IR, v.v.) mã này sẽ hoạt động tốt mà không các sửa đổi.

Bước 4: Cài đặt phần mềm

Cài đặt phần mềm
Cài đặt phần mềm

Tôi có hai cách để cài đặt… nsis installer này: Tải xuống trình cài đặt tự giải nén bên dưới và chạy nó. Bạn sẽ có tùy chọn cài đặt các nguồn trong quá trình cài đặt. gói nhị phân trình cài đặt cài đặt lõi c ++ dlls để nó có thể chạy trên máy tính mà không cần cài đặt trực quan c ++. Sau khi trình cài đặt hoàn tất, bạn có thể chạy nó từ màn hình nền hoặc menu bắt đầu. zip way (chưa được xác minh): Tải xuống và chạy, nó sẽ hoạt động. có lẽ. (Tệp lưu trữ zip có cùng cấu trúc thư mục do trình cài đặt tạo, không có nguồn. Tôi không có máy không có visual studio để kiểm tra nên nó có thể không hoạt động.)

Bước 5: Sử dụng chương trình giao diện

Sử dụng chương trình giao diện
Sử dụng chương trình giao diện
Sử dụng chương trình giao diện
Sử dụng chương trình giao diện

Để sử dụng chương trình, trước tiên hãy chọn tốc độ truyền được xác định trong bản phác thảo arduino. Bản phác thảo chưa sửa đổi mặc định là 38400 baud nhưng có thể được thay đổi để phù hợp với nhu cầu của bạn cho những thứ như liên kết vô tuyến chậm hơn. lưu ý: tốc độ truyền cao hơn 38400 không được ổn định lắm, tôi nghĩ điều này là do uart đầy trước khi dữ liệu có thể được xử lý. Tiếp theo, chọn cổng COM để sử dụng. chương trình mặc định là COM4, hãy chắc chắn thay đổi nó nếu không chương trình sẽ bị treo. Cuối cùng, bấm mở. Nếu mọi việc suôn sẻ, chương trình sẽ mở cổng nối tiếp đã chọn ở tốc độ truyền đã chọn. Nếu không, chương trình có thể sẽ gặp sự cố với một ngoại lệ không được xử lý. đảm bảo rằng cổng là chính xác và thử lại. Sử dụng các hộp văn bản để gửi các lệnh trực tiếp đến arduino. "Bản đồ (lệnh [1], 32, 126, 2, 180)" chia tỷ lệ tất cả 94 lệnh có thể, * khoảng trắng * đến ~, có thể đọc được bởi arduino trong ASCII thành 2 đến 180 cho servo. bất kỳ byte nào nhỏ hơn ASCII 32 (khoảng trắng) hoặc trên 126 (~) mặc định là 63 (?) Các thanh theo dõi cung cấp giao diện eaiser cho các lệnh trực tiếp. mỗi bước sẽ gửi một lệnh nối tiếp đến arduino tăng dần.

Bước 6: Sáng tạo

Sáng tạo!
Sáng tạo!
Sáng tạo!
Sáng tạo!

Hãy nghĩ về những điều thú vị để làm với cái này. Một số ý tưởng: 1. Điều khiển từ xa cho ô tô. 2. Gắn máy ảnh 3D 3. thám hiểm dưới nước Chúc các bạn vui vẻ !!

Đề xuất: