• HOME
  • DỰ ÁN & MẠCH ĐIỆN
    • Lập trình
      • ARDUINO PROJECT
      • ESP8266 PROJECT
      • ESP32 PROJECT
      • RASPBERRY PI PROJECT
      • Vi điều khiển
    • Điện tử ứng dụng
      • Audio / Amplifiers
      • Nguồn điện
      • Pin sạc/Acquy và mạch sạc
      • Biến đổi AC và DC
      • Robotic
      • Cảm biến
      • LED
      • LCD
      • Động cơ bước
      • Mạch linh tinh
      • Test & Measurement
      • RF – FM
    • Nixie Clock
    • HOME AUTOMATION
    • Dân dụng
    • Công nghiệp
  • KIẾN THỨC CĂN BẢN
    • Điện tử cơ bản
    • Điện tử số
    • PCB
    • Nixie Tube
    • Raspberry Pi
    • Vi điều khiển
    • Arduino
    • IN 3D
  • DOWNLOAD
    • Phần mềm điện tử
    • Giáo trình
      • Giáo trình Điện – Điện tử
      • Giáo trình Tự Động Hóa
      • Giáo trình Viễn thông
    • Đề tài
      • Đề tài – Điện – Điện Tử
      • Đề tài – Tự Động Hóa
      • Đề tài – Viễn thông
    • Điện tử ứng dụng
    • Tài liệu nước ngoài
    • Hướng dẫn, sửa chữa
    • Sơ đồ, nguyên lý thiết bị
    • Tiêu chuẩn – Đo lường – Thử nghiệm
    • Datasheet
  • LIÊN HỆ
  • SẢN PHẨM

Mạch Điện Lý Thú

Sơ đồ nguyên lý, PCB, đồ án, tài liệu, DIY

Trang chủ » DỰ ÁN & MẠCH ĐIỆN » Lập trình » ARDUINO PROJECT » Chế tạo Robot tránh vật cản – Hướng dẫn chi tiết

Chế tạo Robot tránh vật cản – Hướng dẫn chi tiết

27/03/2026 by admin Để lại bình luận

Đã được đăng vào 11/12/2019 @ 11:26

Chế tạo Robot tránh vật cản – Hướng dẫn chi tiết 

Mục lục hiện
Chế tạo Robot tránh vật cản – Hướng dẫn chi tiết
Các linh kiện cần thiết để làm Robot tránh vật cản
Lắp ráp
Sơ đồ đấu nối
Đấu nối
Giải thích Code

Các linh kiện cần thiết để làm Robot tránh vật cản 

Xem thêm: 

  • Hệ thống khóa cửa thông minh sử dụng RFID RC-522 và Arduino
  • Cảm biến độ ẩm | Hệ thống tưới tự động sử dụng Arduino
Tên linh kiện Link đặt mua
Khung Robot https://arduinokit.vn/khung-xe-robot
Mạch Arduino UNO https://arduinokit.vn/arduino-uno-r3-ch340-cap-nap
Motor Shield https://arduinokit.vn/arduino-motor-shield-l293d
SG90 Servo https://arduinokit.vn/dong-co-rc-servo-sg90
Cảm biến tránh vật cản https://arduinokit.vn/cam-bien-sieu-am-hc-sr04
Công tắc  (Được tặng kèm khi mua trọn gói )
Tụ 100nF https://educ8s.tv/part/CeramicCapacitors (Được tặng kèm khi mua trọn gói )
Tụ 300uF https://educ8s.tv/part/ElectrolyticCapacitors (Được tặng kèm khi mua trọn gói )
Dây nối https://educ8s.tv/part/Wires (Được tặng kèm khi mua trọn gói )

Lắp ráp

Hàn thêm tụ 100nF vào đầu của động cơ.

Hoàn thiện quá trình lắp linh kiện vào khung Robot.

Sơ đồ đấu nối

Đấu nối 

Đấu nối cảm biến tránh vật cản vào Shield Motor

VCC 5V
GND GND
TRIG A4
ECHO A5

Đấu nối Servo vào Shield Motor

Dây tín hiệu (màu vàng) S
VCC (Màu đỏ) +
GND (Màu đen) –

Giải thích Code

Để chương trình hoạt động và không báo lỗi khi nạp chương trình. Bước đầu tiên chúng ta cần tải thư viện và Add thư viện vào Arduino IDE.

Thư viện Motor Shield: https://github.com/adafruit/Adafruit-Motor-Shield-library

Thư viện NewPing: https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home#!download-install

   //////////////////////////////////////////////
  //          Arduino ROBOT v0.1              //
 //                                          //
//           http://www.educ8s.tv           //
/////////////////////////////////////////////

#include <AFMotor.h>
#include <NewPing.h>
#include <Servo.h> 

Tiếp theo, chúng ta khai báo chân kết nối cho cảm biến tránh vật cản và hiệu chỉnh tốc độ của động cơ, các bạn có thể thay đổi thông số tốc độ động cơ đến 255.

#define TRIG_PIN A4 
#define ECHO_PIN A5 
#define MAX_DISTANCE 200 
#define MAX_SPEED 190 // sets speed of DC  motors
#define MAX_SPEED_OFFSET 20

Khai báo biến cho hàm Servo và khởi tạo kết nối động cơ trên thư viện AFMotor.

AF_DCMotor motor1(1, MOTOR12_1KHZ); 
AF_DCMotor motor2(3, MOTOR12_1KHZ);

Servo myservo;   

Tiếp theo trong hàm setup(), chúng ta khai báo kết nối cho chân servo, ở đây chúng ta kết nối servo vào chân 9 của board mạch, góc xoay servo đặt là 115 độ.

Các bạn có thể tự thử nghiệm ra góc quay phù hợp cho robot của mình.

void setup() {

  myservo.attach(9);  
  myservo.write(115); 
  delay(2000);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
}

Trong hàm loop() đưa các giá trị đo về 0 và thực hiện chương trình sau 40ms.

Nếu khoảng cách cảm biến đo được nhỏ hơn hoặc bằng 15cm thì Robot sẽ dừng lại trong khoảng thời gian 100ms và lùi lại phía sau 300ms, dừng lại trong 200ms.

Robot quay đầu nhìn sang trái, sang phải và đo khoảng cách.

Nếu khoảng cách đo bên nào lớn hơn hoặc bằng thì robot sẽ quay về hướng lớn nhất và di chuyển về phía trước. 

void loop() {
 int distanceR = 0;
 int distanceL =  0;
 delay(40);
 
 if(distance<=15)
 {
  moveStop();
  delay(100);
  moveBackward();
  delay(300);
  moveStop();
  delay(200);
  distanceR = lookRight();
  delay(200);
  distanceL = lookLeft();
  delay(200);

  if(distanceR>=distanceL)
  {
    turnRight();
    moveStop();
  }else
  {
    turnLeft();
    moveStop();
  }
 }else
 {
  moveForward();
 }
 distance = readPing();
}

Tải Code

Nguồn: arduinokit.vn

5/5 - (2 bình chọn)
  • Chia sẻ lên Facebook
  • Chia sẻ lên Twitter
  • Chia sẻ lên LinkedIn

Thuộc chủ đề:ARDUINO PROJECT, Robotic Tag với:arduino, cảm biến, code, robot, siêu âm

Bài viết trước « Arduino cơ bản 02 – Phần 2: PWM | Thay đổi ánh sáng của LED trên Arduino
Bài viết sau Đồng hồ sử dụng LCD máy Homephone – Gphone Clock »

Reader Interactions

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Sidebar chính

Zalo hỏi đáp 24/7

Theo dõi qua mạng xã hội

  • Facebook

Bạn đang tìm gì?

Bài viết mới nhất

Nguồn tuyến tính là gì

14/04/2026

Cài đặt Package cho CubeMX và Keil C

14/04/2026

Hệ sinh thái STM32 Cube trong Lập trình STM32 với HAL

14/04/2026

Sơ đồ chân ESP32 và ngoại vi

14/04/2026

Sửa chữa nguồn xung trong thực tế như thế nào

14/04/2026

Danh mục

  • DỰ ÁN & MẠCH ĐIỆN (241)
    • Công nghiệp (16)
    • Dân dụng (29)
    • Điện tử ứng dụng (178)
      • Audio / Amplifiers (34)
      • Biến đổi AC và DC (24)
      • Cảm biến (40)
      • Động cơ bước (5)
      • Kiểm thử và đo đạc (23)
      • LCD (15)
      • LED (20)
      • Mạch linh tinh (27)
      • Nguồn điện (42)
      • Pin sạc/Acquy và mạch sạc (24)
      • RF – FM (5)
      • Robotic (2)
    • HOME AUTOMATION (23)
    • Lập trình (82)
      • ARDUINO PROJECT (39)
      • ESP32 PROJECT (6)
      • ESP8266 PROJECT (17)
      • RASPBERRY PI PROJECT (9)
      • Vi điều khiển (24)
    • Nixie Clock (3)
  • Kiến thức căn bản (168)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (16)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

Bài viết mới nhất

  • Nguồn tuyến tính là gì
  • Cài đặt Package cho CubeMX và Keil C
  • Hệ sinh thái STM32 Cube trong Lập trình STM32 với HAL
  • Sơ đồ chân ESP32 và ngoại vi
  • Sửa chữa nguồn xung trong thực tế như thế nào
  • Những bộ truyện tranh thuở bé

Bình luận mới nhất

  • admin trong Kỹ thuật truyền sóng RF 433Mhz và 315Mhz
  • Minh Hoàng trong Kỹ thuật truyền sóng RF 433Mhz và 315Mhz
  • Hè trong IC 4017 và ứng dụng 555 với 4017
  • Dương trong Mua đồng hồ vạn năng loại kim hay số?

Tìm kiếm

Tất cả nội dung trên website chỉ dùng để tham khảo. Chúng tôi không chịu trách nhiệm về thông tin thành viên đăng tải lên website và xóa bài viết khi có vi phạm bản quyền tác giả.