Nguyên văn bởi luc_ky_luke
Xem bài viết
Thông báo
Collapse
No announcement yet.
Viết code cho robot dò đường
Collapse
X
-
đây là một bộ khung viết cho con dò đường dùng 89s52 bạn có thể tham khảo:
#include<REG52.H> // kb thu vien
sbit out_pwm1 = P2^0;
sbit out_pwm2 = P2^4;
sbit L1 = P2^2;
sbit L2 = P2^3;
sbit R1 = P2^6;
sbit R2 = P2^7;
sbit sw1 = P3^7;
unsigned char pwm1, pwm2;
int dem,xung,chieu;
void ngatngoai0 (void) interrupt 0
{
xung++;
}
void ngattimer0 (void) interrupt 1 // tao xung PWM
{
dem++;
if (dem ==256) dem =0;
if (dem < pwm1 )
out_pwm1=1;
else
out_pwm1=0;
if (dem < pwm2)
out_pwm2=1;
else
out_pwm2=0;
}
void quay_trai (void)
{
do
{
pwm1=20;
L1=R2=0;
pwm2=200;
L2=R1=1;
}
while(P2==0x81);
}
void quay_phai (void) // nguoc lai
{
do
{
pwm1=200;
L2=R1=0;
pwm2=20;
L1=R2=1;
}
while(P2==0x81);
pwm1=1;
pwm2=1;
}
void do_duong(void)
{
char temp;
temp=P2;
L1=R1=1; // tien
L2=R2=1; // tien
switch (temp)
{
case 12: // di thang
{
pwm1=250;
pwm2=250;
break;
}
case 8: // lech trai 1
{
pwm1=250;
pwm2=230;
break;
}
case 16: // lech trai 2
{
pwm1=250;
pwm2=200;
break;
}
case 32: // lech trai 3
{
pwm1=250;
pwm2=170;
break;
}
case 4: // lech trai 4
{
pwm1=250;
pwm2=230;
break;
}
default :
{
pwm1=100;
pwm2=100;
break;
}
case 2: //lech phai 1
{
pwm1=250;
pwm2=200;
break;
}
case 6: //lech phai2
{
pwm1=250;
pwm2=170;
break;
}
}
}
void chaythang(unsigned int quangduong)
{
xung=0;
do
{
do_duong();
}
while(xung<quangduong); // 1m
pwm1=1;
pwm2=1;
}
void main (void) // cct
{
// *** khoi tao ***
// khoi tao ngat
IE=0x83;
IT0=1;
// khoi tao ngat timer
TMOD=0x02;
TH0= 246;
TR0=1;
// chon do rong xung(chon toc doc cho motor)
pwm1=1;
pwm2=1;
while(sw1);
chaythang(500); //1m
while(1);
}
Comment
-
em đọc qua có phải đây là 2 cảm biến ko ạ, e đang cần làm mạch 6 cặp cảm biến cơ, chưa biết bố trí khoảng ách thế nào cho phù hợpNguyên văn bởi soc_con_haui Xem bài viếtđây là một bộ khung viết cho con dò đường dùng 89s52 bạn có thể tham khảo:
#incl
while(1);
}
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Vấn đề về tốc độ quaybởi nguyendinhvanSử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
-
Channel: Điện tử truyền hình
Hôm qua, 19:50 -
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -

Comment