Đã thi chung kết 2009 đâu mà bit 2010 diễn ra ở đâu.Hiiiii
Thông báo
Collapse
No announcement yet.
lập trình để robocon bắt và nhớ vạch
Collapse
X
-
Mình cũng có chơi robot đợt rồi, cũng lập trình AVR (ATmega 64), khi dò đường mình đâu có dùng ngắt ngoài chi cho mắc công, cứ việc cho 2 led ngoài cùng gặp vạch làm điều kiện để chạy thẳng hay đếm vạch là xong
Giải thuật :
dem_vach(char n)
{
char so_vach;
while (so_vach <n)
{
if(led0&&led7 ==1) { so_vach++; }
else { chay_thang();}
}
so_vach = 0 ; // xoa so vach de dem so vach cho lan khac
}
Trong hàm Main()
{
dem_vach(3);
re_trai(); //robot dem 3 vach re trai
dem_vach(4); // chay thang dem tiep 4 vach nua roi dung
stop();
}
Sơ bộ giải thuật là như vậy, code của mình chạy rất tốt. Đôi lời chia sẻ cùng các bácLast edited by nhaduy99; 15-08-2009, 16:59.Tự động hóa hôm nay cho một thế hệ robot mai sau
Comment
-
Nguyên văn bởi nhaduy99 Xem bài viếtMình cũng có chơi robot đợt rồi, cũng lập trình AVR (ATmega 64), khi dò đường mình đâu có dùng ngắt ngoài chi cho mắc công, cứ việc cho 2 led ngoài cùng gặp vạch làm điều kiện để chạy thẳng hay đếm vạch là xong
Giải thuật :
dem_vach(char n)
{
char so_vach;
while (so_vach <n)
{
if(led0&&led7 ==1) { so_vach++; }
else { chay_thang();}
}
so_vach = 0 ; // xoa so vach de dem so vach cho lan khac
}
Trong hàm Main()
{
dem_vach(3);
re_trai(); //robot dem 3 vach re trai
dem_vach(4); // chay thang dem tiep 4 vach nua roi dung
stop();
}
Sơ bộ giải thuật là như vậy, code của mình chạy rất tốt. Đôi lời chia sẻ cùng các bác
số vạch cứ thế mà tăng lên vì 2 led này sáng liên tục, khi đi qua hết bề rộng vạch mới thôi mà, phải làm thế nào để nó qua hết cái vạch đó mới đếm+1 là ok nhất
Comment
-
bác phải cho thêm delay_ms(giá trị) vào .Viết lại 1 chút như sau:
if(led_0&&led_7==1)
{
delay_ms(giá trị);
if(led_0&&led_7==0)
{
so_vach++;
}
}
else
...................//
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Nguyên văn bởi hoangdai Xem bài viếtbác phải cho thêm delay_ms(giá trị) vào .Viết lại 1 chút như sau:
if(led_0&&led_7==1)
{
delay_ms(giá trị);
if(led_0&&led_7==0)
{
so_vach++;
}
}
else
...................//
cái code quét vạch nên cho nó vào timer hoặc trong ngắt cho nó chạy độc lập với code để tránh sai lầm. em xin hết.
Anh hoangdai có mạch điều khiển động cơ nào ngon ngon thì share cho em vơi mạch điều xung đc ấy - cầu H thì càng ok .em tham khảo
yahoo em là manh_hung845 (em ol 20/24 ^^)
Comment
-
cái này giống cầu H của bọn em. năm 2008 đang thi đấu thì cháy. thế là thua oan 1 trận.
điều xung cầu này thì ngon, đảo chiều vài lần liên tục cháy khét mù mụt. chạy khoảng 2p là sờ vào nóng bỏng tay. bác có cách nào khắc phục không chỉ anh em với
Comment
-
Em có 1 chương trình nhận ngã 4 như thế này. Vì viết cho con H8, mà cái con này thì không thể xử lí trên các bit được.Nên em chuyển nó qua avr viết, nhưng ko sử dụng tới các thao tác trên bit.Các đại ca coi rồi đóng góp ý kiến cho em nha.
Còn về vụ chống nhiễu ngã 4, mình dùng encoder vào nữa thì chắc như bắp.xài delay, phụ thuộc vào bình mạnh, bình yếu nữa.
unsigned char check_crossline3(){
unsigned char a=0,sensorss;
unsigned char cb=0;
int mau,i,ret=0;
for (i=0;i<=7;i++){
mau = pow(2,a);
sensorss = sensor & mau;
if (sensorss == mau){
cb = cb+1;
if (cb>=3){
ret==1;
break;
}
}
a++;
}
return ret;
}
Em băng khoan 1 nỗi là ct thì rất hợp lí nhưng chưa chạy đúng đựoc, hàm trả về không đúng giá trị.
Comment
-
Nguyên văn bởi HiMas88 Xem bài viếtEm có 1 chương trình nhận ngã 4 như thế này. Vì viết cho con H8, mà cái con này thì không thể xử lí trên các bit được.Nên em chuyển nó qua avr viết, nhưng ko sử dụng tới các thao tác trên bit.Các đại ca coi rồi đóng góp ý kiến cho em nha.
Còn về vụ chống nhiễu ngã 4, mình dùng encoder vào nữa thì chắc như bắp.xài delay, phụ thuộc vào bình mạnh, bình yếu nữa.
unsigned char check_crossline3(){
unsigned char a=0,sensorss;
unsigned char cb=0;
int mau,i,ret=0;
for (i=0;i<=7;i++){
mau = pow(2,a);
sensorss = sensor & mau;
if (sensorss == mau){
cb = cb+1;
if (cb>=3){
ret==1;
break;
}
}
a++;
}
return ret;
}
Em băng khoan 1 nỗi là ct thì rất hợp lí nhưng chưa chạy đúng đựoc, hàm trả về không đúng giá trị.
Comment
-
day la` 1 doan bat vạch ne`. no cung de ret trong ham` ma`. ham` nay` la` ham chuan cua MCR
int check_crossline( void )
{
unsigned char b;
int ret;
ret = 0;
b = sensor_inp(MASK2_2);
if( b==0x66 || b==0x64 || b==0x26 || b==0x62 || b==0x46 ) {
ret = 1;
}
return ret;
}
Comment
-
Mỗi người có một giait thuật và cách lập trình cho robot của mình khác nhau , nhưng hướng đi chung của robot nhận vạch bằng sensor vẫn là nhiều mắt nhận chứng tỏ nằn trong vạch , chờ khi thoát vạch thì tăng biến đếm vạch lên 1 < có thể delay thêm đoạn nhỏ để chống nhiễu > . Giải thuật rẽ trái thì thực hiện lệnh rẽ và phải có điều kiện kết thúc rẽ sao cho không bị trùng ngay sau khi thực hiện lệnh rẽ nếu không robot sẽ gần như không rẽ mà sẽ vẫn chạy thẳng . Nguyên nhân là sao ? Ví dụ bạn dặt lệnh đếm 4 vạch rồi rẽ , nhưng lại đặt lệnh kết thúc rẽ là sensor 2 or 3 or 4 or ... nhận thì thoát vòng rẽ và vào vòng chính như thế khi nhận lệnh rẽ ngay lập tức sensor sẽ vẫn bắt vạch do nó vẫn đang đi thẳng cho nên sẽ thực hiện nhảy ngay sang hàm chính . Xong thủ tục rẽ .
Còn bạn hoangdai có nói rẽ chậm thì được còn nhanh thì không bắt được vạch nguyên nhân do bạn để lệnh delay không hợp lý trong hàm rẽ . Nếu delay không hợp lý tốc độ bạn chỉ <10% thì có khả năng chạy đúng . Bạn nên xem lại vị trí lệnh delay của mình . OK . Mình kinh nghiệm không nhiều , có gì sai mong anh em chỉ gióa .
Comment
-
// Vi du ve dem nhan vach
int vach=0;
void nhanvach(void)
{
if (sensor == 0b11111111 )
{
while ( sensor == 0b11111111)
{
động cơ trái = tốc độ nào đó;
động cơ phải = tốc độ nào đó ;
};
vach = vach ++;
}
}
// Vi du ve re trai
void re_trai(long t )
{int lan_re = 0;
tốc độ động cơ phải = 50 ;
chiều động cơ phải = thuận ;
tốc độ động cơ trái = 50 ;
chiều động cơ trái = ngược ;
delay_ms(300);
while(lan_re < t )
{
if ( mắt nào đó thuận lợi bắt vạch )
{ lan_re++;
};
};
chiều động cơ phải = thuận ;
chiều động cơ trái = thuận ; // đoạn này cho chắc chắn là lại chạy đúng chiéuu khi hết rẽ
}
// end
Comment
-
Mình thấy việc lập trình cho robot buồn cười lắm. Lý thuyết và thực tế khác xa nhau nhiều, và cũng tùy vào con robot của mình nữa. Hi hi. Hôm vừa rồi mình viết hàm rẽ trái, chạy ngon lành mà thay sang hàm rẽ phải, chỉ thay đổi chiều, giữ nguyên chỉ số và thuật toán mà nó rẽ 180 độ. ^^
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi NGULAUCái chỗ mà vandong1111 bôi đỏ không phải do chủ thớt nghĩ ra, cũng chẳng phải do TLM sáng tác. Mà nó có ghi trong giáo trình máy biến áp: https://www.hnue.edu.vn/Portals/0/Te...he-dien-tu.pdf
Sao trang không vào được bạn-
Channel: Điện tử công suất
hôm nay, 12:06 -
-
bởi vi van phamBởi vậy khi nói kỹ thuật là phải nói chi tiết rõ ràng, chân vịt 3 cánh to tốc độ thấp lưu lượng mạnh nhất còn không chấp nhận, 6 cánh xếp chồng nhau người ta ko gọi là quạt mà gọi đó là máy nén khí. Lấy kinh nghiệm lý giải kỹ thuật thì đến tết mới xong....
-
Channel: Điện tử gia dụng
hôm nay, 11:16 -
-
bởi dinhthuong80Cháu có chút thất vọng! Sao bác không lấy loại cánh 3 lá nhỏ với 5 lá nhỏ chẳng hạn (tỉ số sẽ 5/3, không phải 2/1); hay cánh kim loại 2 lá với 4 lá; Còn nếu bác thích loại 3 lá to kiểu tai voi thông dụng thì nếu cần sản xuất, làm 6 lá...
-
Channel: Điện tử gia dụng
hôm nay, 11:09 -
-
bởi vi van pham1- 6 người chưa chắc mang 6 kg hàng trong 1 phút vì sức khỏe khác nhau.
2- Tương tự 3 cánh quạt to, độ nghiêng và diện tích 3 cánh chiếm hết 360 độ không gian cánh quạt, nếu 6 cánh thì dôi ra 3 cánh sẽ xếp nó vào nơi nào? kiến thức...-
Channel: Điện tử gia dụng
hôm nay, 10:26 -
-
bởi dinhthuong80Đến giờ thì Đình Thường tôi thật sự cảm thấy tiền mình bỏ ra mua quạt và thiết bị đo, thời gian và công sức mình thí nghiệm đo kiểm và đưa lên đây giới thiệu cho mọi người thật là uổng phí!. Nói gì, đưa ra bằng chứng gì cũng...
-
Channel: Điện tử gia dụng
hôm nay, 09:35 -
-
bởi tuyennhanTôi vào trang cafef xem thì không có số liệu gì vào tiếp trang nơi bán ở sin thì có số liệu thì thấy quạt 3 cánh lưu lượng gió kém hơn 5 cánh nhưng cstt nhỏ hơn và là quạt trần dc cánh nhỏ không có quạt bàn cánh to .
Vào trang của hãng...-
Channel: Điện tử gia dụng
hôm nay, 07:35 -
-
bởi vi van phamMẹ từ đồng ruộng về, mồ hôi ướt đẩm mặt mẹ.
Mẹ ko còn sức vẩy cái nón nữa. Mẹ như cái motor hết pin.
Thằng quạt nhỏ cười toe toét quạt lấy , quạt để khoe chân lý quạt nhỏ mát hơn quạt to....
-
Channel: Điện tử gia dụng
hôm nay, 07:19 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi ngtuhanCòn thiếu con trở 330 ohm/10W nối song song CE của transitor công suất. Mạch này có từ cái thời VN dùng tivi nội địa Nhật, thay thế cho phần ổn áp 110v (nếu bị hỏng). Giờ chỉ là dĩ vãng.
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 02:27 -
-
bởi dinhthuong80[QUOTE=nhathung1101;n1735558]
Thế theo bác thì thằng rung đùi kia sẽ nói thằng cánh to hay thằng cánh nhỏ quay nhanh hơn? Thằng thuốc rượu nói thằng nhỏ hay thằng to mạnh hơn??...-
Channel: Điện tử gia dụng
hôm nay, 00:50 -
-
bởi nhathung1101Ngày xửa ngày xưa còn dùng quạt 1 cánh, dù vẩy hết tốc độ cho cái mo cau chóng mặt mà chả ăn thua.
Mẹ vẩy nhẹ cái nón mà mát lịm cả người. Thế nên phải hiểu chiều sâu mới được.
Cái nón sâu hơn cái mo cau là...-
Channel: Điện tử gia dụng
Hôm qua, 23:34 -
Comment