Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Cách xây dựng một robot tránh chướng ngại vật
Bước 1: Hộp đen
bước đầu tiên tôi sử dụng hộp đen làm cơ sở cho rô bốt của mình.
Bước 2: Arduino
Arduino là bộ não của toàn bộ hệ thống và điều phối động cơ của chúng ta
Bước 3: Gắn Arduino vào hộp đen
Tôi đã gắn arduino vào hộp đen bằng keo nóng
Bước 4: Cảm biến siêu âm
Để tạo ra một robot có thể tự di chuyển, chúng ta cần một số loại đầu vào, một cảm biến phù hợp với mục tiêu của chúng ta. Cảm biến siêu âm là một công cụ đo khoảng cách đến một vật thể bằng sóng âm siêu âm. Cảm biến siêu âm sử dụng một bộ chuyển đổi để gửi và nhận các xung siêu âm để chuyển tiếp thông tin về khoảng cách gần của một đối tượng
Bước 5: Kết nối Breadboard của Cảm biến với Arduino
Tôi đã sử dụng dây để nối kết nối giữa breadboard và arduino.
Hãy chú ý rằng cảm biến ping của bạn có thể có cách bố trí chân khác nhưng nó phải có chân điện áp, chân nối đất, chân trig và chân echo.
Bước 6: Tấm chắn động cơ
Bo mạch Arduino không thể tự điều khiển động cơ một chiều do dòng điện chúng tạo ra quá thấp. Để giải quyết vấn đề này, chúng tôi sử dụng lá chắn động cơ. động cơ bước. … Bằng cách định địa chỉ các chân này, bạn có thể chọn một kênh động cơ để bắt đầu, chỉ định hướng động cơ (cực tính), đặt tốc độ động cơ (PWM), dừng và khởi động động cơ và theo dõi sự hấp thụ hiện tại của mỗi kênh
Bước 7: Kết nối Motor Shield với Arduino
Đơn giản chỉ cần gắn tấm chắn động cơ vào arduino bằng các dây cảm biến được quấn vào
Bước 8: Kết nối 4 động cơ và pin với lá chắn
Mỗi Tấm chắn động cơ có (ít nhất) hai kênh, một cho động cơ và một cho nguồn điện, Hãy kết nối chúng với nhau
Bước 9: Lập trình Robot
chạy mã này
#include #include
Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMotor động cơ1 (1, MOTOR12_1KHZ); AF_DCMotor động cơ2 (2, MOTOR12_1KHZ); AF_DCMotor động cơ3 (3, MOTOR34_1KHZ); AF_DCMotor động cơ4 (4, MOTOR34_1KHZ); Servo myservo;
# xác định TRIG_PIN A2 # xác định ECHO_PIN A3 # xác định MAX_DISTANCE 150 # xác định MAX_SPEED 100 # xác định MAX_SPEED_OFFSET 10
boolean goForward = false; int khoảng cách = 80; int speedSet = 0;
void setup () {
myservo.attach (10); myservo.write (115); chậm trễ (2000); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); }
void loop () {int distanceR = 0; int khoảng cáchL = 0; chậm trễ (40); if (khoảng cách <= 15) {moveStop (); chậm trễ (50); moveBackward (); chậm trễ (150); moveStop (); chậm trễ (100); khoảng cáchR = lookRight (); chậm trễ (100); khoảng cáchL = lookLeft (); chậm trễ (100);
if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } khoảng cách = readPing (); }
int lookRight () {myservo.write (50); chậm trễ (250); int khoảng cách = readPing (); chậm trễ (50); myservo.write (100); khoảng cách trở lại; }
int lookLeft () {myservo.write (120); chậm trễ (300); int khoảng cách = readPing (); chậm trễ (100); myservo.write (115); khoảng cách trở lại; chậm trễ (100); }
int readPing () {delay (70); int cm = sonar.ping_cm (); if (cm == 0) {cm = 200; } trả về cm; }
void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {
if (! goForward) {goForward = true; motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); chậm trễ (5); }}}
void moveBackward () {goForward = false; motor1.run (PHẦN THƯỞNG); motor2.run (PHẦN THƯỞNG); motor3.run (PHẦN THƯỞNG); motor4.run (PHẦN THƯỞNG); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); chậm trễ (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (PHẦN THƯỞNG); motor3.run (FORWARD); motor4.run (FORWARD); chậm trễ (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (PHẦN THƯỞNG); motor3.run (FORWARD); motor4.run (FORWARD); chậm trễ (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }