Professional Documents
Culture Documents
BÁO CÁO
MÔN HỌC
TPHCM 3/2024
A
- Trong bài tập này nhóm đã sử dụng 3 thành phần phần cứng bao gồm:
+ Một Vi điều khiển Arduino
+ Sơ đồ kết nối
2) Chương trình
b) Chương trình
A
#include <Servo.h> //Chương trình sử dụng thư viện Servo.h để điều khiển servo
#define IN1 4
#define IN2 3
#define IN3 6
#define IN4 5 //Sử dụng chân số 5 của Arduino để điều khiển động cơ băng tải
#define CB 2 // Sử dụng chân số 2 của Arduino để đọc tín hiệu từ cảm biến hồng
//ngoại
#define led_do 8 //Sử dụng chân số 8 của Arduino để điều khiển led đỏ
#define led_vang 12 //Sử dụng chân số 12 của Arduino để điều khiển led vàng
#define led_xanh 7 //Sử dụng chân số 7 của Arduino để điều khiển led xanh
Servo s1; //Thông qua thư viện Servo.h đặt tên cho servo 1 và 2 lần lượt là
Servo s2; //s1 và s2
int i=0;
int cnt = 0;
int tam = 0;
void test_dc_run() //Chương trình để điều khiển động cơ chạy
{
digitalWrite(IN3, LOW);
analogWrite(IN4, 200);
}
void test_dc_stop() //Chương trình để tắt động cơ
{
digitalWrite(IN3, LOW);
analogWrite(IN4, 0);
}
void setup()
{
// put your setup code here, to run once:
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(CB,INPUT);
pinMode(led_do, OUTPUT);
pinMode(led_vang, OUTPUT);
pinMode(led_xanh, OUTPUT);
s1.attach(9); //Sử dụng chân số 9 của Arduino để điều khiển servo 1
s2.attach(10); //Sử dụng chân số 10 của Arduino để điều khiển servo 2
cnt = 0;
}
void loop()
{
int cbState = digitalRead(CB);
if (cbState==1)
{
test_dc_run();
digitalWrite(led_xanh, HIGH);
A
digitalWrite(led_do, LOW);
digitalWrite(led_vang, LOW);
}
else
{
test_dc_stop();
cnt++;
tam=1;
if (cnt==3)
{
cnt = 1;
}
s1.write(0);
s2.write(180);
}
if(tam==1)
{
if (cnt==1)
{
test_dc_stop();
digitalWrite(led_do, HIGH);
digitalWrite(led_vang, LOW);
digitalWrite(led_xanh,LOW);
delay(3000);
test_dc_run();
digitalWrite(led_do, LOW);
digitalWrite(led_vang, HIGH);
digitalWrite(led_xanh,LOW);
s1.write(45);
s2.write(180);
delay(3000);
digitalWrite(led_do, LOW);
digitalWrite(led_vang, LOW);
digitalWrite(led_xanh,HIGH);
s1.write(0);
s2.write(180);
tam=0;
}
else if (cnt==2)
{
test_dc_stop();
digitalWrite(led_do, HIGH);
digitalWrite(led_vang, LOW);
digitalWrite(led_xanh,LOW);
delay(3000);
digitalWrite(led_do, LOW);
digitalWrite(led_vang, HIGH);
A
digitalWrite(led_xanh,LOW);
test_dc_run();
s1.write(0);
s2.write(135);
delay(3000);
digitalWrite(led_do, LOW);
digitalWrite(led_vang, LOW);
digitalWrite(led_xanh,HIGH);
s1.write(0);
s2.write(180);
tam=0;
}
}
}
3) Kết quả
+ Khi ta không che cảm biến đồng nghĩa với nút bấm có mức logic = 0 thì băng tải vẫn hoạt
động nhưng 2 động cơ servo vẫn nằm ở vị trí cũ
A
+ Khi ta che cảm biến lần đầu thì đèn báo hiệu sẽ chuyển sang màu đỏ báo hiệu có vật cản ,băng
tải sẽ dừng hoạt động và servo 1 sẽ di chuyển một góc 45 độ .đồng thời đèn tín hiệu cũng chuyển
sang màu vàng để hiển thị rằng servo 1 đang ở chế độ chờ
+ Sau khi servo 1 mở một góc 45 độ thì băng tải tiếp tục hoạt động và sau một khoảng thời gian
thì servo sẽ hoạt động và gạt vật xuống , lúc này đèn báo hiệu sẽ chuyển sang màu xanh
A
+Sau đó nếu có thêm 1 vật nữa đi ngang qua cảm biến thì đèn lại tiếp tục chuyển sang màu đỏ
báo hiệu có vật đi qua ,servo 2 sẽ mở một góc 45 độ và đèn sáng lên màu vàng để báo servo
đang ở chế độ chờ.
+Và cũng tương tự như servo 1 thì sau khi mở một góc 45 độ thì băng tải tiếp tục hoạt động và
servo sẽ chờ một khoảng thời gian để đẩy vật xuống đồng thời đèn báo cx sẽ chuyển sang màu
xanh.