Welcome & Happy Holidays!
Trang 1 của 4 123 ... CuốiCuối
Kết quả 1 đến 10 của 37
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Code Robocon (Manual Robot with Sony Gamepad)



    [IMG]http://*************/attachments/4774/[/IMG]

    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.
    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; }
     
          }
    }

  2. #2
    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.

  3. #3
    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.

  4. #4
    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 !

  5. #5
    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?

  6. #6
    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 !

  7. #7
    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>

  8. #8
    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

  9. #9
    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

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi zen nd
    robocon = tiền + ý tưởng + kỹ năng + nhiệt huyết + may mắn = YOU WIN
    có tiền là có tất>>>>>>>>>>>>>>>>

 

 
Trang 1 của 4 123 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 11:38 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2025 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.