Phần 4. Tiếp nối dự án Robot dò line

Tiếp nối chuỗi bài viết của bạn Đinh Hồng Thái về robot dò line...Nhưng vì lý do nào đó, bạn Thái đã ngừng chuỗi bài viết của mình một cách dở dang!!! Hôm nay, mình sẽ hướng dẫn các bạn phần cuối của Series Robot dò line của bạn Đinh Hồng Thái.

I. Giới thiệu

Tiếp nối chuỗi bài viết của bạn Đinh Hồng Thái về robot dò line...Nhưng vì lý do nào đó, bạn Thái đã ngừng chuỗi bài viết của mình một cách dở dang!!! Hôm nay, mình sẽ hướng dẫn các bạn phần cuối của Series Robot dò line của bạn Đinh Hồng Thái.

II. Chuẩn bị

III. Kết nối 

- Trước tiên, các bạn kết nối các hồng ngoại với module của nó...Nó có 4 hồng ngoại với các chân tín hiệu lần lượt là IN1, IN2, IN3, IN4

Mạch cầu H, kết nối với các động cơ...Phần các pin của Arduino kết nối với cảm biến thì như sau

Arduino UNO            L298 Module dò đường
2 IN1  
3 IN2  
4 IN3  
5 IN4  
~10 ENA  
~11 ENB  
6   IN1
7   IN2
8   IN3
9   IN4

 

 

IV. Code:

// Định ngĩa các chân điều khiển động cơ
#define inA1 2 
#define inA2 3 
#define inB1 4
#define inB2 5 
#define hongngoai1 6
#define hongngoai2 7
#define hongngoai3 8
#define hongngoai4 9
#define ENA 10
#define ENB 11
void setup() {
pinMode(inA1, OUTPUT);
pinMode(inA2, OUTPUT);
pinMode(inB1, OUTPUT);
pinMode(inB2, OUTPUT);
pinMode(hongngoai1, INPUT);
pinMode(hongngoai2, INPUT);
pinMode(hongngoai3, INPUT);
pinMode(hongngoai4, INPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
Serial.begin(9600)
analogWrite(ENA, 120);
analogWrite(ENB, 120);//đi chậm cho khỏi trượt Line
}
void loop(){
benphai = analogRead(hongngoai1)+analogRead(hongngoai2);
bentrai = analogRead(hongngoai3)+analogRead(hongngoai4);
if (benphai = 0 && bentrai = 0){lui();}//Trượt ra khỏi Line thì lùi lại
else {giatrilech = benphai - bentrai}
if (giatrilech > 0){
Serial.println("Lệch trái");
quaytrai();//Lệch trái, thỳ quay trái
}
else if ((giatrilech < 0){
Serial.println("Lệch phải");
quayphai();}//lệch phải thì quay phải
else if (giatrilech == 0){
dithang();}//Không lệch đi thẳng
}


void dithang(){
           digitalWrite(inA1,HIGH);
           digitalWrite(inA2,LOW);
           digitalWrite(inB1,HIGH);
           digitalWrite(inB2,LOW);
   
}
void lui(){
           digitalWrite(inA1,LOW);
           digitalWrite(inA2,HIGH);
           digitalWrite(inB1,LOW);
           digitalWrite(inB2,HIGH);
}
void quaytrai(){
           digitalWrite(inA1,HIGH);
           digitalWrite(inA2,LOW);
           digitalWrite(inB1,LOW);
           digitalWrite(inB2,LOW);
}
void quayphai(){
           digitalWrite(inA1,LOW);
           digitalWrite(inA2,LOW);
           digitalWrite(inB1,HIGH);
           digitalWrite(inB2,LOW);
}



V. Lời kết

Trên đây là hướng dẫn làm robot dò line...Chúc các bạn thành công!!!

Youtube: 
Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
28 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Vỏ hộp cho ARDUINO UNO

Tự làm 1 chiếc vỏ hộp bảo vệ cho ARDUINO UNO của bạn chưa bao giờ đơn giản như thế này. Chỉ việc đem file dxf của mình ra ngoài tiệm cắt laser (quảng cáo và cắt thôi)!

Mình mới học ARDUINO cũng được khoảng 1 tuần thôi, đọc bài viết trên page cũng nhiều nhưng chả đóng góp được gì. Hôm nay rãnh rỗi ngồi làm cái hộp cho con UNO vì mấy hôm trước mình toàn lót giấy phía dưới rồi đặt em nó lên thấy cũng bất tiện, nếu các bạn có hứng thú thì làm theo file cad mình để ở cuối bài nha.

lên
15 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Băm xung - Điều khiển tốc độ động cơ bằng L298 với cách tiếp cận khác - Sử dụng 2 chân ENA và ENB

Hôm nay, mình sẽ hướng dẫn các bạn băm xung để điều khiển tốc độ động cơ thông qua module L298...Mình thấy trên cộng đồng có 1 bạn viết về module L298 nhưng chưa nói rõ về cách điều khiển tốc độ động cơ với ENA và ENB. Cách này sẽ ổn định hơn và dùng module L298 với hiệu suất cao hơn.

lên
29 thành viên đã đánh giá bài viết này hữu ích.

Điều khiển thiết bị bằng giọng nói - Gửi 1 byte đến Arduino - Tiết kiệm bộ nhớ cho Arduino

Bài viết này, mình sẽ trả lời cho câu hỏi của bác Trương Trọng Thân :"Điều khiển thiết bị bằng giọng nói, nhưng chỉ gửi 1 byte" (nói hơi khó hiểu). Tóm lại là,VD:  khi app đọc giọng nói...nếu nhận đc tiếng nói: "bật đèn" thỳ gửi byte 1 đến Arduino. Nếu làm việc như thế, chúng ta sẽ tiết kiệm được bộ nhớ RAM cho Arduino và tốc độ xử lý sẽ cao hơn

lên
31 thành viên đã đánh giá bài viết này hữu ích.