anh ơi! Nếu em điều khiển bằng bluetooth HC-06 thì cách mắc nối dây như thế nào ? ( theo em nghĩ là mình lấy nguồn từ các chân 1 đến 13 và dùng lệnh digitalWrite( HIGH hoặc LOW) nhưng vẫn không chạy được. vậy a hướng dẫn em với. cám ơn anh!

Chào em,

Bluetooth HC-06 chỉ là thiết bị nhận tín hiệu và gửi đến cho Arduino còn servo là thiết bị nhận tín hiệu từ Arduino và thực thi. Em cần kiểm tra lại các việc sau:

- Kết nối giữa Arduino và Bluetooth đã thành công chưa? => Đơn giản nhất em có thể cho chớp LED 13.

- Kết nối giữa Arduino và servo thành công chưa? Lưu ý với em hàm digitalWrite là hàm xuất tín hiệu, để điều khiển servo em nên sử dụng thư viện servo (xem lại phần bài viết bên trên).

- Cuối cùng nếu đã ổn kiểm tra code logic điều khiển đã hoạt động chính xác như mong muốn chưa?

Nhìn HC-06, chân RX trên module nối Tx trên arduino, Tx trên module nối rx trên arduino.

// Khai báo biến

char data;

void setup() {

pinMode(13, OUTPUT);

Serial.begin(9600); // Cài đặt tốc độ 9600 bit/s cho arduino

}

void loop() {

if(Serial.available() > 0){

// kiểm tra có dữ liệu được nhận

data = Serial.read();//dữ liệu dạng mã ASCII

}

if(data=='w') digitalWrite(13,HIGH); //nếu nhận được ký tự w thì cho led sáng, ngược lại thì tắt

else digitalWrite(13,LOW);

}

Cấp nguồn riêng cho arduino, rút dây kết nối máy tính đi. Mở blutooth trên laptop tìm kiếm thiết bị hc-06 pass mặc định là 1234, sau khi kết nối xong dùng phần mềm giao tiếp công Com kết nối với Com port hiện ra sau khi hc-06 kết nối với máy tính, tiếp theo guiwr ký tự w từ phần mềm và xem kết qủa

anh ơi! cái đó là điều khiển 1 servo còn điều khiển nhiều servo cùng lúc thì làm thế nào vậy anh?

Chào em,

Khi điều khiển nhiều servo em cũng áp dụng quy tắc trên, quan trọng nhất là em phải attach servo của em vào pin tương ứng.

Ví dụ anh có 2 servo, anh sẽ cấp điện cho 2 servo đó qua nguồn 5V và pin GND (dây đỏ và đen). Sau đó anh lần lượt nối dây điều khiển (màu vàng) của servo 1 vào pin 5 và servo 2 vào pin 6. Vậy để điều khiển anh chỉ việc tạo lần lượt 2 đối tượng servo, lần lượt attach vào pin 5, 6 là có thể sử dụng được.

Cảm ơn anh nhiều!

a cho e hỏi :khi e dùng 4 cái servo,em tạo lần lượt 4 đối tượng servo,lần lượt attach vào pin 5 6 7 8 .trong void loop() e chỉ điều khiển 1 cái servo thui,mak sao cả 3 servo kia cũng quay ạ??? a giải thích giúp e vs.

Anh ơi cho em hỏi code trên chỉ điều khiển servo theo 3 góc 0 - 90 - 180 độ thôi phải không anh. muốn cho nó chạy chậm chậm từng độ thì phải làm sao ạ.

Chào em,

Góc quay của servo phụ thuộc vào tham số em truyền vào, ví dụ anh muốn servo xoay 30 độ anh sẽ viết gServo.write(30). Nếu em muốn chạy chậm từng độ em tạo một biến góc xoay và tăng biến này từ 0 tới 180, tại mỗi thời điểm em gửi giá trị góc xoay cho servo và sử dụng hàm delay để làm chậm quá trình xoay.

anh ơi cho em hỏi mình có thể điều chỉnh để cho động cơ khi xoay đến góc 90 hoặc 180 thì nó dừng lại lâu hơn được không ạ

Chào em,

Để động cơ dừng lại lâu hơn, em chỉ cần tăng thời gian chờ bằng hàm delay(...) sau khi động cơ xoay tới vị trí mong muốn.

Anh cho em hỏi Module điều khiển động cơ trong arduino ( ví dụ L293D) dùng để làm gì ạ? Sự khác nhau về điều khiển động cơ không dùng module và không dùng module là gì? Em chưa rõ về cái này lắm, mong anh giải thích cho em hiểu. Em cảm ơn!

Anh ơi em muốn điều khiển góc vi dụ như 12,3 thi lam the nào a.?

Chào em,

Mặc định hàm write của servo chỉ cho phép ta truyền vào một góc nguyên. Để thực hiện điều em nói, em xem thêm hàm writeMicroseconds(...) tại https://www.arduino.cc/en/Reference/ServoWriteMicroseconds.

anh ơi cho em hỏi điều khiển lập trình động cơ servo mg995 bằng atemega được không ạ

em xin phần lập trình cho nó anh có thể cho em được ko

Chào em,

Arduino Uno R3 đang sử dụng chip Atmega328P, em có thể tham khảo code điều khiển servo MG995 trong bài viết.

chào anh, em đang làm đồ án điều khiển tự động, đề tài là dùng động cơ bước để điều khiển cần gạt nước xe ô tô.Em điều khiển động cơ bước bằng arduino với module là mạch cầu H L298N. Cơ cấu của em là động cơ bước truyền qua hộp giảm tốc sau đó đến trục cần gạt. Em có vấn đề muốn hỏi anh là em muốn giới hạn hành trình động cơ quay trong một phạm vi nhất định 180 độ ( nửa trên, phần có kính xe) thì phải làm sao. Tại vì khi thử nghiệm sau khi ngắt điện rồi bật lại thì động cơ từ vị trí đó quay tiếp đủ số bước và vượt qua ngoài vùng giới hạn.

Chào em,

Em có thể cho anh thông tin về phần cứng em sử dụng được chứ: loại stepper motor, driver sử dụng, loại Arduino ... để anh có thể hỗ trợ cho em.

Mình nghĩ cách đơn gian nhất là bạn phải set vị trí Home cho nó, gioi hạn nó bằng công tắc hành trình. Công tắc hành trình gắn chặn cần gạt ở nơi bạn muốn dừng. Khi cần gạt chạm công tắc nó gửi tín hiệu ON/OFF xuống Arduino. Arduino xử lý tín hiệu cho dừng cần gạt hoặc la set vị trí Home cho động cơ bước từ đó mình chỉ việc chỉnh số lượng step cho cần gạt. Vì có hộp số nên mình nghĩ hiện tượng mất bước sẽ ít xảy ra. Thân !

Anh ơi cho e hỏi nếu muốn điều khiển nhiều servo cùng lúc với chung 1 lệnh điều khiển trên trên cùng 1 board arduino thì phải làm sao vậy a.E cám ơn

Chào em,

Nếu như vậy em mắc chân nhận tín hiệu của 3 servo vào cùng pin trên board Arduino. Tuy nhiên anh không khuyến khích sử dụng cách này bởi vì nó dễ dẫn tới quá tải trên cùng một pin. Tốt nhất em nên điều khiển từng servo riêng biệt, hay viết một hàm cho phép một lần gọi thay đổi cho cả 3 servo.

em dùng đầu ra của mạch nhận dạng giọng nói dùng HM2007 có điều khiển được 2 động cơ servo đc k anh?

Chào em,

Điều này hoàn toàn có thể làm được, em cần phải tìm hiểu xung PWM cần để servo xoay với một góc cho trước. Và trên mạch HM2007 em xuất ra xung tương ứng với góc cần xoay trên servo.

anh có thể giúp em viết code cho cái này đc k ạ.Em cám ơn!

Em có viết đoạn code này mà chạy ko được.anh xem rồi sửa giúp em với!!! http://bugs.vn/4181

Chào em,

Em đổi 2 pin điều khiển servo sang pin 5, 6 thì servo của em sẽ hoạt động được.

Chào bạn Nguyen Huu Quan, theo mình biết, STDIO có dịch vụ này, bạn thử tham khảo đi, họ đào tạo cho các nhu cầu đặc biệt của bạn: http://www.stdio.vn/training/consultants

Mình mún cứ 8h quá trình này lặp đi lặp lại đc k ạ

a cho e hỏi :khi e dùng 4 cái servo,em tạo lần lượt 4 đối tượng servo,lần lượt attach vào pin 5 6 7 8 .trong khi e chỉ điều khiển 1 cái servo thui,mak sao cả 3 servo kia cũng quay ạ??? a giải thích giúp e vs.

e viet doan code nay.a xem nó sai ở dau ạ http://bugs.vn/4215

Anh ơi ! em muốn điều khiển servo theo ý mình thì làm như thế nào hả anh

Em có thể băm xung PWM nếu muốn điều khiển servo tùy ý mà không dùng thư viện có sẵn của Arduino.

em cũng đang tìm hiểu về điều khiển Servo bằng Arduino, mạch của em cũng gần tương tự như anh nhưng nhiều người bảo em nên thêm con LM2596 để bảo vệ. Anh có thể cho em biết nếu thêm con LM2596 thì mắc mạch như thế nào không ạ?

Chào em,

Bản thân LM2596 là IC giảm áp, dùng trong trường hợp em sử dụng servo có công suất cao, hoạt động với điện áp lớn. Khi đó vai trò của Arduino chỉ là điều khiển còn cấp nguồn sẽ do thành phần khác đảm nhiệm.

Em chào anh. anh cho em hỏi em có bộ thu nhận Rf 4 kênh và Arduino UNO,em muốn điều khiển vị tri servo( làm chân vịt cho tàu) thì phải làm như thế nào ạ?em dùng hàm it và digitalWrite thì không chạy ạ. CẢm ơn anh!

Em sử dụng thư viện servo có sẵn của Arduino điều khiển với tham số truyền vào là góc xoay của servo. Ví dụ em muốn xoay 90 độ thì sẽ là: gServo.write(90).

Cho em hỏi, có thể dùng arduino để điều khiển động cơ servo 360 quay như động cơ thường được không ạ? Tức là quay nhiều vòng liên tục ấy, chứ không phải là quay 180 độ bên trái và 180 độ bên phải.

Em cảm ơn!

Tùy vào loại servo em dụng mà sẽ có góc xoay tối đa khác nhau. Như anh có nói ở trên bài viết các servo có mã: MG995, MG996R ... là dạng servo xoay được 360 độ.

em chào anh. anh cho em hỏi về phần điều khiển servo từ xa thông qua RF và arduino, em viết code dk nhưng không hiều sau khi em cấp tín hiệu điều khiển thì động cơ quay luôn 1 vòng, nó không ngừng ngay vị trí mà em ngưng phát tín hiệu dk.Nhờ anh giúp em với.cảm ơn anh!

Anh ơi cho em hỏi em điều khiển 4 servo bằng Arduino Uno r3 module nRF24L01+ nhưng chỉ dùng pin 9v cho Arduino không dùng thêm nguồn ngoài 5v thì ở mạch thu đèn TX chớp liên tục mà không nhận tín hiệu từ mạch phát,còn khi em dùng cáp nối vào máy tính để cấp nguồn thì lại chạy bình thường là vì sao và làm sao để khắc phục ạ?

Thầy cho em hỏi !!! muốn điều khiến servo bằng cảm biến hồng ngoại vs siêu âm ntn ạ, em chỉ biết thực hành trên led thôi ạ.

Anh cho em hỏi? Giờ em muốn viết code cho Arduino kết nối với servo nhưng e chưa rành về tập lệnh để viết. anh có thể cho em bài học căn bản để em học viết được không?

Em muốn điều khiển servo bằng mạch thu phát RF UART CC1101 433Mhz, anh có thể giúp em được không ạ? Em cảm ơn.

Chuyển sang điều khiển qua các chân Analog vẫn được chứ?

Với pin analog điều này là không thể vì việc điều khiển động cơ server chỉ được thực hiện trên chân PWM (có kí hiệu ~ ở trước), bạn tham khảo lại phần "Lắp đặt động cơ". Ngoài ra bạn có thể đọc thêm về tín hiệu PWM tại https://www.stdio.vn/articles/read/395/dieu-che-do-rong-xung-pulse-width-modulation.

Bạn đọc kỹ bài viết lại, mình thấy tác giả ghi không thiếu cái gì cả.

Anh ơi cho em hỏi sao em nạp code vào Arduino UNO nó không nhận code vậy anh?

Coi thử coi thật sự đã nạp code thành công chưa, ngoài ra còn nhiều lý do:

1. Dây nối lỏng.

2. Code sai hoặc đã sửa code mẫu của bài viết theo ý bản thân nhưng không biết bản thân làm đúng hay sai.

3. Arduino đã hư.

Cuối cùng, hỏi vậy như mò kim đáy bể.

Anh ơi nếu thêm pca9685 để điều khiển 16 servo thì mình sửa code như thế nào ạ?

Chào bạn! mình muốn giảm tốc độ của servo thì phải làm thế nào? cám ơn bạn!

Bạn "delay" ở mỗi bước nhé.

Cám ơn bạn! nhưng "delay" là thời gian nghỉ giữa các bước chứ nhỉ, ý mình là servo quay chậm lại cơ.

Giả sử cần quay 1 bước từ 15 đến 90 độ, bạn cần cho nó quay từ 15 đến góc lớn hơn 15 độ, rồi tiếp tục tuyến tính cho đến khi đạt 90 độ. Tốc độ quay ở mỗi bước cũng rất lớn, bạn phải delay 1 chút.

A ơi cho e hỏi cách điều khiển servo chạy chậm lại thì sao ạ? Ví dụ 0 đến 90 độ bình thường là 2 giây nhưng giờ em muốn chuyển sang khoảng 5 giây hoặc 7 giây thì code thế nào anh?

Mỗi lần vào loop em phải tính xem, ở mỗi độ mà em quay sẽ cần dừng bao lâu để tăng thêm 1 độ nữa. Đây là 1 bài toán tam suất.

Chào mọi người , Em đang viết 1 đồ án nhưng chưa hoàn chỉnh, ai biết trợ giúp chỉnh sửa giúp em cái code bên dưới.

Em viết gần hoàn chỉnh nhưng có cái Servo không mất xung khi cảm biến A2 không còn tác động, Nó vẫn còn điện hoài. Em xin cảm ơn.

#include <Servo.h>

#define SERVO_PIN 9

Servo gServo;

void setup()

{

pinMode(A2, INPUT_PULLUP);

gServo.attach(SERVO_PIN );

}

void loop()

{

if(digitalRead(A2)==1)

digitalWrite(9,HIGH);

delay(1000);

gServo.write(120);

if(digitalRead(A2)==0)

delay(5000);

digitalWrite(9,LOW);

gServo.write(0);

}

Anh ơi! anh cho em hỏi servo chỉ quay 1 chiều hay có cách nào đảo chiều quay của con servo không ạ? Em muốn nó vừa quay trái vừa quay phải.

a ơi,em muốn điều khiển động cơ nhận tín hiệu từ cảm biến hồng ngoại thì làm thế nào ạ

Debugging chăm chỉ gấp đôi như viết mã ở nơi đầu tiên. Do đó, nếu bạn viết mã rõ ràng đến mức có thể, bạn sẽ, theo định nghĩa, không đủ thông minh để gỡ rối nó. Christopher Thompson