// Định nghĩa các chân động cơ và cầu H L298N
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
#define ENA 6
#define ENB 7
// Định nghĩa các chân cho cảm biến siêu âm HC-SR04
#define trigPinLeft 8
#define echoPinLeft 9
#define trigPinCenter 10
#define echoPinCenter 11
#define trigPinRight 12
#define echoPinRight 13
// Định nghĩa các chân cho cảm biến hồng ngoại TCRT5000
#define irLeft A0
#define irCenter A1
#define irRight A2
// Định nghĩa chân cho nút khởi động và nút nguồn
#define startButton A4
#define powerButton A5
// Biến lưu trữ trạng thái robot
bool robotRunning = false;
void setup() {
// Khởi tạo các chân đầu vào/ra cho động cơ
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
// Khởi tạo các chân cảm biến siêu âm
pinMode(trigPinLeft, OUTPUT);
pinMode(echoPinLeft, INPUT);
pinMode(trigPinCenter, OUTPUT);
pinMode(echoPinCenter, INPUT);
pinMode(trigPinRight, OUTPUT);
pinMode(echoPinRight, INPUT);
// Khởi tạo các chân cảm biến hồng ngoại
pinMode(irLeft, INPUT);
pinMode(irCenter, INPUT);
pinMode(irRight, INPUT);
// Khởi tạo các chân cho nút nhấn
pinMode(startButton, INPUT_PULLUP);
pinMode(powerButton, INPUT_PULLUP);
// Khởi tạo động cơ tắt ban đầu
analogWrite(ENA, 0);
analogWrite(ENB, 0);
Serial.begin(9600);
}
void loop() {
// Kiểm tra trạng thái nút nguồn
if (digitalRead(powerButton) == LOW) {
// Nếu nút nguồn bị bấm, khởi động lại robot
robotRunning = !robotRunning;
delay(500); // Tránh việc bị lặp liên tục khi bấm nút
}
// Nếu robot đang hoạt động
if (robotRunning) {
// Đọc giá trị cảm biến hồng ngoại để phát hiện vạch
int irLeftVal = digitalRead(irLeft);
int irCenterVal = digitalRead(irCenter);
int irRightVal = digitalRead(irRight);
// Đọc cảm biến siêu âm để phát hiện đối thủ
float distanceLeft = readUltrasonic(trigPinLeft, echoPinLeft);
float distanceCenter = readUltrasonic(trigPinCenter, echoPinCenter);
float distanceRight = readUltrasonic(trigPinRight, echoPinRight);
// Điều khiển động cơ dựa trên cảm biến siêu âm và hồng ngoại
if (distanceLeft < 20 || distanceCenter < 20 || distanceRight < 20) {
// Nếu phát hiện đối thủ, tiến tới
forward();
} else if (irLeftVal == LOW || irRightVal == LOW) {
// Nếu phát hiện vạch, quay lại
turn();
} else {
// Nếu không có vạch hoặc đối thủ, dừng lại
stopMotors();
}
}
}
// Hàm đọc cảm biến siêu âm
float readUltrasonic(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
return distance;
}
// Hàm điều khiển tiến tới
void forward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 255);
analogWrite(ENB, 255);
}
// Hàm điều khiển quay lại khi gặp vạch
void turn() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 255);
analogWrite(ENB, 255);
}
// Hàm dừng động cơ
void stopMotors() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}

More Related Content

DOC
Cam bien trong robot(sensor robot)
PDF
Bai2_Giao-tiep-robot-machine-controller_2021-01-20.pdf
PDF
Xây dựng dự án Robotic với Arduino uno.pdf
PPTX
Bài giảng môn học: Vi điều khiển ứng dụng
PDF
Giáo trình robocon nhiều tác giả
PPTX
Bài giảng môn học: Vi Điều Khiển Ứng Dụng.pptx
PDF
plant nghiên cứu cánh tay robot 4 dof có sẵn.pdf
PPTX
TÌM HIỂU ROBOT CÔNG NGHIỆP TRONG HỆ THỐNG FMS
Cam bien trong robot(sensor robot)
Bai2_Giao-tiep-robot-machine-controller_2021-01-20.pdf
Xây dựng dự án Robotic với Arduino uno.pdf
Bài giảng môn học: Vi điều khiển ứng dụng
Giáo trình robocon nhiều tác giả
Bài giảng môn học: Vi Điều Khiển Ứng Dụng.pptx
plant nghiên cứu cánh tay robot 4 dof có sẵn.pdf
TÌM HIỂU ROBOT CÔNG NGHIỆP TRONG HỆ THỐNG FMS

Similar to Code robot sumo cho cac ban tham khao nhe (20)

DOCX
613610506-Dự-an-cuối-ki-ROBOT-do-line.docx
PDF
Bai1_Van-hanh-robot_23333333333333333333333021-01-20.pdf
PDF
Servo 3
PDF
Nghiên cứu thực thi bộ điều khiển robot công nghiệp trên nền tảng FPGA.pdf
PDF
Thiết kế và thi công mạch xe điều khiển từ xa thông qua Smartphone
PDF
CNN Robot Following Tracking With CNN.pdf
PDF
ME5512-ĐA TKHTCDT-Robogưerafawerfwefwefweft.pdf
PDF
sjdfklsjdflksjdfklsjdf12312222222222222222222222222222222222
PDF
Cải tiến giải thuật điều khiển robot tự hành thông minh tích hợp cảm biến đa ...
PPTX
People của Dale Carnegie là quyển sách nổi tiếng nhất, bán chạy nhất và có tầ...
DOCX
Robot bám đường ứng dụng thuật toán PID - Line follow robot with PID . Chu Qu...
DOCX
Nhập môn bài 2 sao chép - sao chép (1)
PPTX
slide lap trinh arduino cho nguoi moi bat dau
PDF
Servo 2
PDF
Đo khoảng cách bằng MSP430 Launchpad
PDF
Đo khoảng cách bằng kit launchpad + srf05
DOCX
ĐỒ ÁN - ROBOT HÚT BỤI SỬ DỤNG ARDUINO.docx
PDF
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
DOC
Luận văn: Tính toán thiết kế cho robot elbow, HAY, 9đ
DOC
Tailieu.vncty.com do-an-vi-dieu-khien
613610506-Dự-an-cuối-ki-ROBOT-do-line.docx
Bai1_Van-hanh-robot_23333333333333333333333021-01-20.pdf
Servo 3
Nghiên cứu thực thi bộ điều khiển robot công nghiệp trên nền tảng FPGA.pdf
Thiết kế và thi công mạch xe điều khiển từ xa thông qua Smartphone
CNN Robot Following Tracking With CNN.pdf
ME5512-ĐA TKHTCDT-Robogưerafawerfwefwefweft.pdf
sjdfklsjdflksjdfklsjdf12312222222222222222222222222222222222
Cải tiến giải thuật điều khiển robot tự hành thông minh tích hợp cảm biến đa ...
People của Dale Carnegie là quyển sách nổi tiếng nhất, bán chạy nhất và có tầ...
Robot bám đường ứng dụng thuật toán PID - Line follow robot with PID . Chu Qu...
Nhập môn bài 2 sao chép - sao chép (1)
slide lap trinh arduino cho nguoi moi bat dau
Servo 2
Đo khoảng cách bằng MSP430 Launchpad
Đo khoảng cách bằng kit launchpad + srf05
ĐỒ ÁN - ROBOT HÚT BỤI SỬ DỤNG ARDUINO.docx
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
Luận văn: Tính toán thiết kế cho robot elbow, HAY, 9đ
Tailieu.vncty.com do-an-vi-dieu-khien
Ad

Recently uploaded (16)

PPT
i dont know cdzmnnnnnnnnnnnnnnnnnnnnnnnnnn
PPTX
Bài giảng lý thuyết ung thư cổ tử cung 02.23.(SV).pptx
PDF
Báo Phú Thọ: FPT Cloud chia sẻ lợi ích của điện toán đám mây đem lại
DOC
Thủ tục cấp chứng nhận xuất xứ C/O mẫu D
PDF
SLIDE20TRIET triet triettttttttttttttttt
PPTX
1750906527_Cloud-Computing-Seminar-TeamNB (1).pptx
PDF
Giới thiệu về Xuyên Việt Media - Công ty Digital Marketing tại TPHCM
PDF
404127_Kỹ thuật điện - điện tử cơ bản_Ch1 (1).pdf
PPTX
HIỆP ĐỊNH ĐỐI TÁC KINH TẾ TOÀN DIỆN - Cục GSQL về Hải quan 2022.pptx
PDF
ESG: Chuyển đổi xanh trong quản lý chuỗi cung ứng ngành sản xuất.pdf
PPTX
Gioi-thieu-nen-tang-DMP-T32023-52023.pptx
PDF
Báo Thanh Hóa: Doanh nghiệp nên thuê server vật lý hay cloud server cho hạ tầ...
PPT
C2 Sứ mệnh lịch sử của GCCN.ppt
PPTX
51452a0a89fbb693c3316f6a7a17ca4hsdhvhc.pptx
PPTX
FPTU - Fall 2025 - VNR202 - Session 3.pptx
DOCX
Báo cáo môn tuyến điểm du lịch (11).docx
i dont know cdzmnnnnnnnnnnnnnnnnnnnnnnnnnn
Bài giảng lý thuyết ung thư cổ tử cung 02.23.(SV).pptx
Báo Phú Thọ: FPT Cloud chia sẻ lợi ích của điện toán đám mây đem lại
Thủ tục cấp chứng nhận xuất xứ C/O mẫu D
SLIDE20TRIET triet triettttttttttttttttt
1750906527_Cloud-Computing-Seminar-TeamNB (1).pptx
Giới thiệu về Xuyên Việt Media - Công ty Digital Marketing tại TPHCM
404127_Kỹ thuật điện - điện tử cơ bản_Ch1 (1).pdf
HIỆP ĐỊNH ĐỐI TÁC KINH TẾ TOÀN DIỆN - Cục GSQL về Hải quan 2022.pptx
ESG: Chuyển đổi xanh trong quản lý chuỗi cung ứng ngành sản xuất.pdf
Gioi-thieu-nen-tang-DMP-T32023-52023.pptx
Báo Thanh Hóa: Doanh nghiệp nên thuê server vật lý hay cloud server cho hạ tầ...
C2 Sứ mệnh lịch sử của GCCN.ppt
51452a0a89fbb693c3316f6a7a17ca4hsdhvhc.pptx
FPTU - Fall 2025 - VNR202 - Session 3.pptx
Báo cáo môn tuyến điểm du lịch (11).docx
Ad

Code robot sumo cho cac ban tham khao nhe

  • 1. // Định nghĩa các chân động cơ và cầu H L298N #define IN1 2 #define IN2 3 #define IN3 4 #define IN4 5 #define ENA 6 #define ENB 7 // Định nghĩa các chân cho cảm biến siêu âm HC-SR04 #define trigPinLeft 8 #define echoPinLeft 9 #define trigPinCenter 10 #define echoPinCenter 11 #define trigPinRight 12 #define echoPinRight 13 // Định nghĩa các chân cho cảm biến hồng ngoại TCRT5000 #define irLeft A0 #define irCenter A1 #define irRight A2 // Định nghĩa chân cho nút khởi động và nút nguồn #define startButton A4 #define powerButton A5 // Biến lưu trữ trạng thái robot
  • 2. bool robotRunning = false; void setup() { // Khởi tạo các chân đầu vào/ra cho động cơ pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); // Khởi tạo các chân cảm biến siêu âm pinMode(trigPinLeft, OUTPUT); pinMode(echoPinLeft, INPUT); pinMode(trigPinCenter, OUTPUT); pinMode(echoPinCenter, INPUT); pinMode(trigPinRight, OUTPUT); pinMode(echoPinRight, INPUT); // Khởi tạo các chân cảm biến hồng ngoại pinMode(irLeft, INPUT); pinMode(irCenter, INPUT); pinMode(irRight, INPUT); // Khởi tạo các chân cho nút nhấn pinMode(startButton, INPUT_PULLUP);
  • 3. pinMode(powerButton, INPUT_PULLUP); // Khởi tạo động cơ tắt ban đầu analogWrite(ENA, 0); analogWrite(ENB, 0); Serial.begin(9600); } void loop() { // Kiểm tra trạng thái nút nguồn if (digitalRead(powerButton) == LOW) { // Nếu nút nguồn bị bấm, khởi động lại robot robotRunning = !robotRunning; delay(500); // Tránh việc bị lặp liên tục khi bấm nút } // Nếu robot đang hoạt động if (robotRunning) { // Đọc giá trị cảm biến hồng ngoại để phát hiện vạch int irLeftVal = digitalRead(irLeft); int irCenterVal = digitalRead(irCenter); int irRightVal = digitalRead(irRight); // Đọc cảm biến siêu âm để phát hiện đối thủ float distanceLeft = readUltrasonic(trigPinLeft, echoPinLeft);
  • 4. float distanceCenter = readUltrasonic(trigPinCenter, echoPinCenter); float distanceRight = readUltrasonic(trigPinRight, echoPinRight); // Điều khiển động cơ dựa trên cảm biến siêu âm và hồng ngoại if (distanceLeft < 20 || distanceCenter < 20 || distanceRight < 20) { // Nếu phát hiện đối thủ, tiến tới forward(); } else if (irLeftVal == LOW || irRightVal == LOW) { // Nếu phát hiện vạch, quay lại turn(); } else { // Nếu không có vạch hoặc đối thủ, dừng lại stopMotors(); } } } // Hàm đọc cảm biến siêu âm float readUltrasonic(int trigPin, int echoPin) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH);
  • 5. float distance = duration * 0.034 / 2; return distance; } // Hàm điều khiển tiến tới void forward() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 255); analogWrite(ENB, 255); } // Hàm điều khiển quay lại khi gặp vạch void turn() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 255); analogWrite(ENB, 255); } // Hàm dừng động cơ void stopMotors() {
  • 6. digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENA, 0); analogWrite(ENB, 0); }