You are on page 1of 29

TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐIỆN-ĐIỆN TỬ

---***    ***---

DỰ ÁN CUỐI KÌ
TÌM HIỂU, THIẾT KẾ, LẮP ĐẶT
VÀ LẬP TRÌNH CHO ROBOT DÒ LINE

Nhóm : Dove
Thành viên : Trương Ngọc Minh MSSV: 22161286
Nguyễn Viết Đức MSSV: 22161245
Đỗ Quốc Bình MSSV: 22161225
Trang Đặng Vĩ Thắng MSSV: 22161320
Năm : 2022
Ngành : Kĩ thuật điện tử- viễn thông
GV Hướng dẫn : Bùi Thị Tuyết Đan

Thành phố Hồ Chí Minh, tháng 12 năm 2022


CỘNG HOÀ XÃ HỘI CHŨ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

Thành phố Hồ Chí Minh ngày 20 tháng 11, năm 2022

NHIỆM VỤ ĐỀ TÀI
Nhóm: Dove

Ngành: Kĩ thuật điện tử - viễn thông

Hệ đào tạo: Đại trà

Năm học: 2022 – 2023 Lớp: 221611

I. DỰ ÁN

Tìm hiểu, thiết kế, lắp đặt và lập trình cho robot dò line.

II. NHIỆM VỤ

1. Tìm hiểu thiết bị

 Chuẩn bị linh kiện


 Vẽ sơ đồ khối

2. Thi công phần cứng

 Lắp đặt linh kiện


 Thiết kế, tạo hình cho robot

3. Lập trình

4. Kiểm tra thiết bị

 Chạy thử robot


 Chỉnh sửa robot

III. NGÀY BỔ NHIỆM : 19 tháng 11 năm 2022

IV. NGÀY HOÀN THÀNH : 16 tháng 12 năm 2022

V. GV HƯỚNG DẪN : Bùi Thị Tuyết Đan

Hồ Chí Minh, Tháng 11 năm 2022 Hồ Chí Minh, Tháng 11 năm 2022
GV HƯỚNG DẪN TRƯỞNG BỘ PHẬN

Khoa Điện-Điện Tử – HCMUTE


CỘNG HOÀ XÃ HỘI CHŨ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

Thành phố Hồ Chí Minh ngày 20 tháng 11, năm 2022

KẾ HOẠCH THỰC HIỆN


Nhóm: Dove

Ngành: Kĩ thuật điện tử - viễn thông

Hệ đào tạo: Đại trà

Năm học: 2022 – 2023 Lớp: 221611

GV hướng dẫn: Bùi Thị Tuyết Đan

Tuần/ Ngày Nội Dung Thông Tin Hướng Dẫn

Tuần 8: 19/11-20/11, 2022 -Tìm hiểu thiết bị và chuẩn bị


linh kiện

Tuần 9: 21/11-27/11, 2022 -Vẽ sơ đồ thiết bị

-Lắp đặt lần 1

Tuần 10: 28/11-4/12, 2022 -Lắp đặt lần 2

-Viết code cho thiết bị, tiến


hành thử nghiệm

ii

Khoa Điện-Điện Tử – HCMUTE


Tuần 11: 5/12-11/12, 2022 -Tiến hành thử nghiệm lần 2,
sữa chữa, trang trí cho thiết bị

-Làm poster, viết báo cáo, tạo


ppt thuyết trình

Hồ Chí Minh, Tháng 11 năm 2022


GV HƯỚNG DẪN

CỘNG HOÀ XÃ HỘI CHŨ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

Thành phố Hồ Chí Minh ngày 20 tháng 11, năm 2022

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN


Nhóm: Dove

Ngành: Kĩ thuật điện tử - viễn thông

Hệ đào tạo: Đại trà

Năm học: 2022 – 2023 Lớp: 221611

GV hướng dẫn: Bùi Thị Tuyết Đan

1. Nội dung :

- .

2. Ưu điểm:

- .

3. Nhược điểm:

iii

Khoa Điện-Điện Tử – HCMUTE


- .

4. Đề xuất bảo vệ luận điểm?

- .

5. Xếp loại:

- .

6. Điểm:…./10 .(Chữ:) ……. / Ten.

Hồ Chí Minh, Tháng 11 năm 2022


GV HƯỚNG DẪN

CỘNG HOÀ XÃ HỘI CHŨ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

Thành phố Hồ Chí Minh ngày 20 tháng 11, năm 2022

LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn đến Bộ môn Điện tử viễn thông Khoa Điện- Điện
Tử đã tạo điều kiện để chúng em thực hiện dự án này.
Để hoàn thành bài tập lớn này, chúng em xin gửi lời cảm ơn đến giảng viên Bùi
Thị Tuyết Đan đã tận tình giảng dạy, hướng dẫn chúng em trong suốt quá trình học
tập, nghiên cứu và rèn luyện để có thể thực hiện tốt dự án này.
Chúng em cũng xin chân thành cảm ơn đến các thành viên trong nhóm đã cùng
nhau thảo luận, thu thập tài liệu và cùng nhau giúp đỡ, giải quyết các vấn đề nảy sinh
trong quá trình thực hiện bài tập lớn này.
Mặc dù đã cố gắng để thực hiện dự án một cách tốt nhất. Song do có sự hạn chế
về kiến thức chuyên môn cũng như kinh nghiệm thực tế nên không thể tránh khỏi
những thiếu sót. Vì vậy chúng em rất mong được sự góp ý của thầy cô và các bạn để
đề tài này được hoàn chỉnh hơn.
Chúng em xin chân thành cảm ơn!

iv

Khoa Điện-Điện Tử – HCMUTE


Hồ Chí Minh, Tháng 11 năm 2022
NHÓM SV THỰC HIỆN

ABSTRACT

Line detection robot is a type of robot that can follow the available line
drawing so that the robot can recognize and move for the purpose of going to the
original proposed position.
The basic operating principle of this robot is to use a photoelectric sensor
(photoresistor or infrared diode) to compare the light intensity and then adjust
the appropriate direction. The robot's sensor is located near the road surface and
the light source for comparison will now be generated by the robot itself. The
reason there is a deviation in light intensity lies in the line drawn, this line will
have different properties than the surrounding plane, usually it is black to absorb
light. When the robot deviates into the drawn area, the light emitted by the robot
does not reflect back as usual, but is partially absorbed by the line, distorting the
brightness between the two sensors.
Therefore, we have to design and program for the robot to have the
behavior to overcome that deviation and we have a robot that follows the drawn
line at a fast speed to conduct the competition.

Khoa Điện-Điện Tử – HCMUTE


TÓM TẮT ĐỀ TÀI
Robot dò line là loại robot có khả năng đi theo dường vẽ có sẵn để robot
có thể nhận biết và di chuyển theo mục đích đi đến vị trí đã đề ra ban đầu.
Nguyên lý hoạt động cơ bản của loại robot này là sử dụng cảm biến quang
điện (quang điện trở hoặc diode hồng ngoại) để so sánh cường độ ánh sáng rồi
điều chỉnh hướng đi phù hợp. Cảm biến của robot sẽ được đặt sát mặt đất và
nguồn sáng để so sánh lúc này sẽ do chính robot tạo ra. Sở dĩ có sự sai lệch về
cường độ ánh sáng nằm ở đường vẽ, đường vẽ này sẽ có tính chất khác so với
mặt phẳng xung quanh, thông thường nó có màu đen để hấp thụ ánh sáng. Khi
robot đi lệch vào vùng đã vẽ, ánh sáng do robot phát ra không phản xạ trở lại
như bình thường mà bị đường kẻ hấp thụ một phần, làm sai lệch độ sáng giữa
hai cảm biến.
Do đó chúng ta phải thiết kế, lập trình sao cho robot có hành vi khắc phục
sự sai lệch đó và chúng ta có một robot chạy theo đường vẽ với tốc độ nhanh để
tiến hành thi đấu.

vi

Khoa Điện-Điện Tử – HCMUTE


MỤC LỤC
NHIỆM VỤ ĐỀ TÀI
KẾ HOẠCH THỰC HIỆN
NHẬN XÉT CỦA GV HƯỚNG DẪNii
LỜI CẢM ƠN
ABSTRACT
TÓM TẮT ĐỀ TÀI
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC BẢNG
DANH MỤC HÌNH
CHƯƠNG 1: TỔNG QUAN
1.1. Vật liệu- linh kiện
1.2. Phương án thiết kế
CHƯƠNG 2: XÂY DỰNG PHẦN CỨNG
2.1. Thiết kế tổng quan
2.2. Chi tiết thiết kế
2.2.1. Khối nguồn
2.2.2. Khối cảm biến
2.2.3. Khối động cơ

vii
2.2.4. Khối điều khiển
2.2.5. Khối so sánh
CHƯƠNG 3: PHƯƠNG THỨC DI CHUYỂN
3.1. Đường line
3.2. Biểu đồ điều khiển
CHƯƠNG 4: VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN
4.1. Chương trình khởi tạo
4.2. Chương trình cho xe chạy theo line
4.3. Chương trình cho xe né vật cản
4.4. Chương trình cho xe di chuyển
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN
5.1. Human detection training
5.1.1. Collecting dataset
5.1.2. Dataset labelling
5.1.3. Training task
5.3. Detection and tracking
5.3.1. Detection
5.3.2. Tracking
5.3.3. Combining detecting and tracking
5.4. Experiments of autonomous human-following quadcopter
CHAPTER 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
6.1. Conclusion
6.2. Future works
REFERENCES
APPENDICES

viii
DANH MỤC CÁC TỪ VIẾT TẮT

ix
DANH MỤC BẢNG

x
DANH MỤC HÌNH

xi
CHƯƠNG 1: TỔNG QUAN
1.1. Vật liệu- linh kiện
 1 Arduino UNO R3 SMD
 1 Mạch điều khiển động cơ L298N
 2 Pin và 1 đế pin
 1 Công tắc
 3 Cảm biến hồng ngoại dò line
 1 Cảm biến siêu âm HC-SR04
 4 Động cơ giảm tốc V1
 4 Bánh xe
 1 Khung xe mica
1.2. Phương án thiết kế
 Xe vận hành bằng 4 bánh, dẫn động bằng 4 động cơ giảm tốc.
 Xe có hiển thị trạng thái LED (báo nguồn, động cơ…) tương ứng với
trạng thái xe.
 Phần điều khiển chuyển động chọn 2 mạch cầu H được tích hợp sẵn trong
L298.
 Phần dò đường dùng 3 cảm biến hồng ngoại dò line

xii
CHƯƠNG 2: XÂY DỰNG PHẦN CỨNG
2.1. Thiết kế tổng quan
 Khối nguồn: cung cấp điện áp 12V cho động cơ và 5V cho khối vi điều
khiển
 Khối vi điều khiển
 Khối cảm biến: nhận tín hiệu đường đi
 Khối so sánh
 Khối điều khiển động cơ
2.2. Chi tiết thiết kế
2.2.1. Khối nguồn
Dùng nguồn 12V để cấp điện áp vào, sau đó thông qua khối lọc, hạ áp
dùng 7805 ta lấy ra điện áp 5V ổn định để cung cấp cho các khối còn lại.
Ngoài ra còn có một số biện pháp bảo vệ như dùng cầu chi 2A, dùng
diode chống ngược nguồn.

xiii
Hình 1: Sơ đồ khối nguồn

2.2.2. Khối cảm biến


Gồm 3 đèn led và 3 quang trở

Hình 2: Sơ đồ Khối cảm biến hồng ngoại

xiv
 Khi Led phát tín hiệu khi có tín phản lại thì quang trở sẽ thay đổi điện trở
nó phát tín hiệu vào để so sánh rồi đưa vào vi điều khiển để vi điều khiển
xử lý rồi đưa ra tín hiệu để phát lệnh điều khiển động cơ.

Hình 3: Nguyên lí cảm biến

Chức năng của khối:


+ Tạo tín hiệu phản hồi về khối vi xử lý trung tâm để từ đó điều khiển
động cơ.
+ Nguyên lý hoạt động: Khi có ánh sáng thì điện trở của quang trở sẽ
giảm và ngược lại, điện trở của nó thay đổi cỡ từ 0.5k (khi có ánh sáng) đến
250k (không có ánh sáng), ta sử dụng led phát làm nguồn sáng cho nó. Khi gặp
nền trắng, ánh sáng sẽ phản xạ lên quang trở làm điện trở nó giảm xuống và khi
gặp vạch đen (băng keo đen) thì ánh sáng sẽ khó phản xạ nên quang trở nhận ít
ánh sáng => điện trở tăng. Từ đó dựa vào 2 quang trở, robot có thể phân biệt
được vạch đen trên nền.

2.2.3. Khối động cơ


Gồm 4 động cơ giảm tốc V1 với các thông số:

xv
 Điện áp hoạt động: 3~12V DC
 Dòng điện tiêu thụ: 110-200 mAh
 Tỉ số truyền: 1:48
125 vòng / 1 phút tại 3VDC
208 vòng / 1 phút tại 5VDC
 Moment: 0.8 kg.cm
 Tiếng ồn: <65dB
 Trọng lượng: ~50g

Hình 4: Sơ đồ nguyên lí động cơ V1

Mạch điều khiển động cơ L298N: Điều khiển động cơ với 2 mạch cầu H
đã tích hợp sẵn ở bên trong. Trong mỗi IC L298 được tích hợp 2 cầu H, mỗi cầu
H chịu được 2 dòng Ampe. Khi nối các chân có cùng chức năng của 2 cầu H
trên IC với nhau thì IC có thể cung cấp được dòng 4 Ampe đủ để cho động cơ
hoạt động hết công suất.
 Điện áp đầu vào: 5~30VDC
 Công suất tối đa: 25W 1 cầu (lưu ý công suất = dòng điện x điện áp nên
áp cấp vào càng cao, dòng càng nhỏ, công suất có định 25W).
 Dòng tối đa cho mỗi cầu H là: 2A
 Mức điện áp logic: Low -0.3V~1.5V, High: 2.3V~Vss
xvi
 Kích thước: 43x43x27mm

Hình 5: Sơ đồ khối động cơ

2.2.4. Khối điều khiển


Sử dụng vi điều khiển 8bit ATmega328. Vi điều khiển này cho phép lập
trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh với các
loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều
ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn
giao tiếp đa dạng như UART, SPI, TWI (I2C).
 Kiến trúc: AVR 8bit
 Xung nhịp lớn nhất: 20Mhz

xvii
 Bộ nhớ chương trình (FLASH): 32KB
 Bộ nhớ EEPROM: 1KB
 Bộ nhớ RAM: 2KB
 Điện áp hoạt động rộng: 1.8V – 5.5V
 Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
 Số kênh xung PWM: 6 kênh (1timer 2 kênh)

Cấu trúc chân và sơ đồ khối bên trong:

Hình 6: Cấu trúc chân ATmega328

xviii
Hình 7: Sơ đồ khối bên trong của ATmega328

2.2.5. Khối so sánh


Mạch gồm hai phần: mạch ngõ vào là một khuếch đại thuật toán có hệ số
khuếch lớn, và mạch ngõ ra thông dụng của các mạch logic.
Mức điện áp đầu ra so sánh được nhận biết bằng 5 led ở 5 đầu ra so sánh,
nếu gặp vạch trắng, mức điện áp ra là 0V, đèn sáng và nếu gặp vạch đen, mức
điện áp ra là 5V, đèn tắt.
xix
CHƯƠNG 3: PHƯƠNG THỨC DI CHUYỂN
3.1. Đường line

Hình 8. Các kiểu đường line


Ta có thể sử dụng đường line trắng trên nền đen hoặc ngược lại sao cho cảm
biến ở xe có thể nhận diện và chạy theo.
3.2. Biểu đồ điều khiển

KHỞI TẠO
GIỚI THIỆU

DÒ ĐƯỜNG

YES
NO
LỆCH

QUAY TRÁI
ĐI THẲNG HOẶC PHẢI

NO
VẠCH

YES

CHƯƠNG TRÌNH CON


KHI BẮT VACH ĐÍCH

Hình 9. Biểu đồ điểu khiển Robot xe dò line

xx
CHƯƠNG 4: VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN
4.1. Chương trình khởi tạo
int stop_distance = 12;// Khoảng cách phát hiện vật cản
//Kết nối SRF 05 OR 04
const int trigPin = 11; // kết nối chân trig với chân 11 arduino
const int echoPin = 12; // kết nối chân echo với chân 12 arduino

//L298 kết nối arduino


const int motorA1 = 3; // kết nối chân IN1 với chân 3 arduino
const int motorA2 = 4; // kết nối chân IN2 với chân 4 arduino
const int motorAspeed = 5; // kết nối chân ENA với chân 5 arduino
const int motorB1 = 7; // kết nối chân IN3 với chân 7 arduino
const int motorB2 = 8; // kết nối chân IN4 với chân 8 arduino
const int motorBspeed = 6; // kết nối chân ENB với chân 6 arduino

//kết nối của 3 cảm biến hồng ngoại (dò line )


const int L_S = 9; // cb dò line phải
const int S_S = 2; // cb dò line giữa
const int R_S = 10; //cb dò line trái

int left_sensor_state;// biến lưu cảm biến hồng ngoại line trái
int s_sensor_state; // biến lưu cảm biến hồng ngoại line giữa
int right_sensor_state;// biến lưu cảm biến hồng ngoại line phải

long duration; //
int distance; // biến khoảng cách

void setup() {
pinMode(L_S, INPUT); // chân cảm biến khai báo là đầu vào
pinMode(R_S, INPUT);
pinMode(S_S, INPUT);
xxi
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(motorAspeed, OUTPUT);
pinMode(motorBspeed, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

Serial.begin(9600);
analogWrite(motorAspeed, 110); // tốc độ động cơ a ban đầu 120 ( 0 - 255)
analogWrite(motorBspeed, 110);// tốc độ động cơ b ban đầu 120 ( 0 - 255)
delay(2000);
}
4.2. Chương trình cho xe chạy theo line
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);

left_sensor_state = digitalRead(L_S);
s_sensor_state = digitalRead(S_S);
right_sensor_state = digitalRead(R_S);

if ((digitalRead(L_S) == 0) && (digitalRead(S_S) == 1) &&


(digitalRead(R_S) == 0)) {

xxii
forword(); // đi tiến
}

if ((digitalRead(L_S) == 1) && (digitalRead(S_S) == 1) &&


(digitalRead(R_S) == 0)) {
turnLeft(); // rẻ trái
}
if ((digitalRead(L_S) == 1) && (digitalRead(S_S) == 0) &&
(digitalRead(R_S) == 0)) {
turnLeft(); // rẻ trái
}

if ((digitalRead(L_S) == 0) && (digitalRead(S_S) == 1) &&


(digitalRead(R_S) == 1)) {
turnRight(); // rẻ phải
}
if ((digitalRead(L_S) == 0) && (digitalRead(S_S) == 0) &&
(digitalRead(R_S) == 1)) {
turnRight(); // rẻ phải
}

if ((digitalRead(L_S) == 1) && (digitalRead(S_S) == 1) &&


(digitalRead(R_S) == 1)) {
Stop(); // stop
}
4.3. Chương trình cho xe né vật cản
if (distance < stop_distance) // nếu khoảng cách nhỏ hơn giới hạn
{
digitalWrite (motorA1, HIGH); // cho xe robot chạy lùi 1 đoạn
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, HIGH);
delay(350);

xxiii
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(300);

digitalWrite (motorA1, HIGH); // cho xe robot xoay sang trái


digitalWrite(motorA2, LOW);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);
delay(400);
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(200);

digitalWrite (motorA1, LOW); //cho xe robot đi thẳng 1 đoạn


digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);
delay(600);
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(200);

digitalWrite (motorA1, LOW); // cho xe robot xoay phải 1 đoạn


digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, LOW);

xxiv
digitalWrite(motorB2, LOW);
delay(550);
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(200);

///////////////////
digitalWrite (motorA1, LOW); //cho xe robot đi thẳng 1 đoạn
digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);
delay(600);
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(200);

////////////////////////
digitalWrite (motorA1, LOW); //cho xe robot xoay phải 1 đoạn
digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(500);
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(200);

xxv
digitalWrite (motorA1, LOW); //cho xe robot đi thẳng 1
digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);

while (left_sensor_state == LOW) {

left_sensor_state = digitalRead(L_S);
s_sensor_state = digitalRead(S_S);
right_sensor_state = digitalRead(R_S);
Serial.println("in the first while");
}
}
}
4.4. Chương trình cho xe di chuyển
void forword() { // chương trình con xe robot đi tiến

digitalWrite (motorA1, LOW);


digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);
}

void turnRight() { // chương trình con xe robot quay phải

digitalWrite (motorA1, LOW);


digitalWrite(motorA2, LOW);
digitalWrite (motorB1, HIGH);
digitalWrite(motorB2, LOW);
}

void turnLeft() { // chương trình con xe robot quay trái


xxvi
digitalWrite (motorA1, LOW);
digitalWrite(motorA2, HIGH);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
}

void Stop() { // chương trình con xe robot dừng lại

digitalWrite (motorA1, LOW);


digitalWrite(motorA2, LOW);
digitalWrite (motorB1, LOW);
digitalWrite(motorB2, LOW);
}

xxvii
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN

xxviii

You might also like