Kết quả 1 đến 10 của 37
-
06-05-2013, 12:34 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Code Robocon (Manual Robot with Sony Gamepad)
Robocon 2013 đối với mình đã kết thúc, và sau gần 2 tháng làm việc với nó thấy rõ bản chất của nhiều chuyện. Nói chung khi kết thúc rồi thì có j gọi là kinh nghiệm thì sharing cho anh em newbie. Sang năm nếu bạn nào có làm thì liên hệ với mình có thể giúp đỡ thêm.
[IMG]http://*************/attachments/4774/[/IMG]
Bây giờ mình sharing full code con bằng tay của mình (Chip Atmega128). Nó hơi lìu tìu vì bằng tay đúng nghĩa, nếu cơ cấu robot hay hay 1 ti thì chắc con này cũng là tự động luôn.
Code:
Mã:/***************************************************** Project : Manual Robot Version : V1.2 Date : 15/03/2013 Author : Nguyen Van Dai Company : dainv Comments: Chip type : ATmega128 Program type : Application AVR Core Clock frequency: 11,059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/ // chinh sua ngay 25.03.2013 #include <mega128.h> #include <delay.h> #include "define.c" #include "maininit.c" //////////////////////////////////////// #define DATA PINA.4 #define CMD PORTA.7 #define CLK PORTA.5 #define ATT PORTA.6 //unsigned char byte_1,byte_2,rjoyy,rjoyx,ljoyy,ljoyx ; unsigned char count_pwm_2_banh, count_pwm_1_banh; unsigned char rjoyx,rjoyy,ljoyx,ljoyy,byte4,byte5; unsigned char access(unsigned char tbyte); void read_data(void); //Gamepad PS2 unsigned char access(unsigned char tbyte) { unsigned char rbyte=0; unsigned char i; CMD = 1; CLK = 1; for(i=0;i<8;i++) { CMD=tbyte&0x01; delay_us(30); CLK=0; delay_us(30); rbyte=(rbyte>>1)|(DATA<<7); CLK=1; tbyte=tbyte>>1; } delay_us(100); return rbyte; } void read_data(void) { //rjoyx=rjoyy=ljoyx=ljoyy=128; ATT=0; // Enable Joytick access(0x01); // >> dua ma 0x01 vao Joytick access(0x42); // >> dua ma 0x42 vao Joytick access(0); byte4 = access(0); byte5 = access(0); rjoyx = access(0); rjoyy = access(0); ljoyx = access(0); ljoyy = access(0); CMD=0; ATT=1; } interrupt [TIM2_OVF] void timer2_ovf_isr(void) { //TCNT2=0x50; // TCNT2=0x94; // tao tan so 100Hz TCNT2=0xB8; // tao tan so 150Hz // TCNT2=0xDB; // tao tan so 300Hz read_data(); count_pwm_2_banh ++; count_pwm_1_banh ++; if(count_pwm_2_banh > set_pwm_2_banh) count_pwm_2_banh = set_pwm_2_banh ; if(count_pwm_1_banh > set_pwm_1_banh) count_pwm_1_banh = set_pwm_1_banh ; } void reset_status(void) { byte4 = byte5 = 0xFF; rjoyx = rjoyy = ljoyx = ljoyy = 128; } void main(void) { init(); #asm("sei") reset_status(); PORTG = 0x00; while (1) { if((byte4&Up)==0) // chuong trinh thuc hien tien - lui { PWM_banh_trai =count_pwm_2_banh; PWM_banh_phai =count_pwm_2_banh; DIR_banh_trai = thuan; DIR_banh_phai = thuan; } else if((byte4&Down)==0) { PWM_banh_trai = count_pwm_2_banh; PWM_banh_phai = count_pwm_2_banh; DIR_banh_trai = nghich; DIR_banh_phai = nghich; } else if((byte4&Left)==0) // chuong trinh thuc hien trai - phai { PWM_banh_trai =count_pwm_1_banh; if(count_pwm_1_banh>120) PWM_banh_phai =count_pwm_1_banh-50; else PWM_banh_phai =count_pwm_1_banh; DIR_banh_trai = nghich; DIR_banh_phai = thuan; } else if((byte4&Right)==0) { if(count_pwm_1_banh>120) PWM_banh_trai =count_pwm_1_banh-50; else PWM_banh_trai =count_pwm_1_banh; PWM_banh_phai =count_pwm_1_banh; DIR_banh_trai = thuan; DIR_banh_phai = nghich; } else { PWM_banh_trai = 0; PWM_banh_phai = 0; count_pwm_2_banh = 0; count_pwm_1_banh = 0; } if((byte5&L1)==0) {PWM_vuon_can = 245; DIR_vuon_can = thuan;} // vuon can else if((byte5&L2)==0){PWM_vuon_can = 245;DIR_vuon_can = nghich;} // thu can else {PWM_vuon_can = 0; DIR_vuon_can = 0;} if(rjoyy< 50){PWM_ha_tay = 245;DIR_ha_tay = thuan;} // ha tay else if(rjoyy> 200){PWM_ha_tay = 245;DIR_ha_tay = nghich;} // nang tay else {PWM_ha_tay = 0;DIR_ha_tay = thuan;} if(ljoyy< 50){PWM_keo_co = 245;DIR_keo_co = thuan;} // keo co ban else if(ljoyy> 200){PWM_keo_co = 245;DIR_keo_co = nghich;} // nha keo co else {PWM_keo_co = 0;DIR_keo_co = thuan;} if((byte5&R1)==0) {PORTG = (PORTG&0xF1)|0x0E;} // gap tat ca van 123 = Port.3.2.1 else if((byte5&R2)==0){PORTG = PORTG&0xF1;} // nha tat ca else if((byte5&tamgiac)==0) {PORTG = PORTG&0xFB;} // mo van 1 else if((byte5&Nhan)==0) {PORTG = (PORTG&0xFB)|0x04;} // dong van 1 else if((byte5&Tron)==0) {PORTG = (PORTG&0xFD);} // mo van 2 else if((byte5&Vuong)==0) {PORTG = (PORTG&0xF7);} // mo van 2 if((byte4&R3)==0) { tra_mam=~tra_mam;delay_ms(120); if(tra_mam ==0) PORTG= PORTG&0xFE; else PORTG= (PORTG&0xFE)|0x01;} if((byte4&L3)==0) PORTC.7 = 1; if((byte4&Start)==0) {tra_mam=0;PORTC.7 = 0; PORTG = (PORTG&0xEE)|0x11;} if((byte4&Select)==0){ PORTC.7 = 1;PORTG = PORTG&0xEE;} //else {PWM_vuon_can = 0; DIR_vuon_can = 0;} // if(rjoyy < 50) {PORTG = (PORTG&0xF1)|0x08; } //else if(rjoyy > 200){PORTG = PORTG&0xF7; } } }
View more random threads:
- các bác xem hộ em con đèn led này có tác dụng j với ?
- từng bước chế tạo máy CNC mini
- Hỏi về robot BeetleBot
- cần mọi người giúp về phần lập trình của robot leo cầu thang này với ah
- Robot tạo mạng wifi vô hạn
- Tổng hợp 63 cuốn sách về Robot
- Xin tài liệu Remotely Operated Underwater Vehicle(ROV)
- Dự án NII của Fujitsu: "robot thi đại học"
- Thông Số Động Cơ Bước
- Nhà Báo Phạm Việt Tiến: “robocon 2013 Sẽ Có Nhiều Nét Mới”
-
06-05-2013, 12:41 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Trong chương trình mình có sử dụng time2 để tăng vận tốc từ từ cho robot + đọc tay cầm. Ban đầu khi làm robot thì mình tự chế tay cầm và giao tiếp UART, nhưng mình sẽ không Up chương trình đó lên nữa vì một số lý do.
-
06-05-2013, 08:45 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
tay PS của bạn chất lượng thế nào. tay của bọn mình thì dùng thời gian thì hay lỗi tự ấn nút, hoặc là ko nhận nút. tât cả chỉ vì tay PS trung quốc. bạn có kiếm được tay loại nào ngon ko. bọn mình thì mua ở hà nội nêt chất lượng chưa tốt.
-
06-05-2013, 08:49 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tay mua 350K, nói chung là không thể chê vào đâu được. Mình không điều khiển bao giờ nhưng mấy em học sinh điều khiển thì thấy rất ổn, mà cũng không thấy nhiễu xảy ra bao giờ . Nói chung là chuẩn !
-
06-05-2013, 03:14 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
e moi nam 2 nhưng rất thích robocon mấy a có thể cho e biết nên bắt đàu từ đâu ko?
-
06-05-2013, 04:05 PM #6Silver member
- Ngày tham gia
- Jan 2016
- Bài viết
- 0
Mình ra trường 2 năm rùi và cũng chỉ làm 1 lần thôi. Mình làm về điện tử mà, theo mình nghĩ Robocon là sân chơi mà nó bao gồm đủ 3 kỹ năng là cơ - điện - lập trình. Nếu bạn là người mới thì mình nghĩ bạn yêu thích phần gì trong 3 kỹ năng trên thì bạn hãy tập trung vào nghiên cứu. Đến khi làm thực tế rồi tự bạn sẽ tìm ra cách làm.
Chúc thành công !
-
06-05-2013, 08:04 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- http://khothamtraisan.com/tham-gia-re-b2224766.html
- Bài viết
- 0
Bao giờ em làm chỉ em với anh nhé =D>
-
06-06-2013, 08:26 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
hiện tại mình đang định học lập trình cho robocon anh nào có tài liệu cho xin vơi
-
06-09-2013, 07:26 AM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
robocon = tiền + ý tưởng + kỹ năng + nhiệt huyết + may mắn = YOU WIN
-
06-09-2013, 10:25 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi zen nd
Đồ chơi sáng tạo - Người bạn nhỏ...
Hôm nay, 10:32 AM in Rao vặt tổng hợp