• Webdien.com - Cầu nối dân điện


    1. [HOT] - Webdien đang tuyển các vị trí quản lý cao cấp

      ntech.com.vn

  • Kết quả 1 đến 4 của 4
    1. #1
      Tham gia
      11-08-2010
      Bài viết
      31
      Cảm ơn
      2
      Được cảm ơn 8 lần, trong 5 bài

      Mặc định Dò đường của robot


    2. #2
      Tham gia
      19-05-2012
      Bài viết
      21
      Cảm ơn
      33
      Thanked 1 Time in 1 Post

      Mặc định Ðề: Dò đường của robot

      theo mình thì làm con robot dò đường để chơi thì mình chỉ cần dùng 2 cái KDTT là được phải ko nhỉ

    3. #3
      Tham gia
      08-05-2012
      Địa chỉ
      Ho Chi Minh City
      Bài viết
      495
      Cảm ơn
      38
      Được cảm ơn 140 lần, trong 122 bài

      Mặc định Ðề: Dò đường của robot

      Robot robocon2011 đây
      Code:
      #define    gtbien    0b11111111
      #define    tt        0b11100111
      #define    trai1p    0b11110111
      #define    trai2p    0b11110011
      #define    trai3p    0b11111011
      #define    trai4p    0b11111001
      #define    trai5p    0b11111101
      #define    trai6p    0b11111100
      #define    trai7p    0b11111110
      
      #define    phai1p    0b11101111
      #define    phai2p    0b11001111
      #define    phai3p    0b11011111
      #define    phai4p    0b10011111
      #define    phai5p    0b10111111
      #define    phai6p    0b00111111
      #define    phai7p    0b01111111
      
      #define    qvach     0b00000000
      #define    qvach1    0b00011111
      #define    qvach2    0b00001111
      #define    qvach3    0b00000111
      #define    qvach4    0b00000011
      #define    qvach5    0b00000001
      #define    qvach6    0b11111000
      #define    qvach7    0b11110000
      #define    qvach8    0b11100000
      #define    qvach9    0b11000000
      #define    qvach10   0b10000000
          
      #define    min    19
      #define    max    190
      #define    trai    OCR2
      #define    phai    OCR0
      
      unsigned char   qv , a , b ;
      void ctdoline(unsigned char i)
      {
      PORTB.1=1;
      PORTB.0=1;
      trai=190;      //  210 duoi 24V 190 tren 24V
      phai=190;
      while(qv<i)
      {   
           
          
                    /*bat dau dem vach */
        
                      
                if(PINA==qvach||PINA==qvach1||PINA==qvach2||PINA==qvach3||PINA==qvach4||PINA==qvach5||PINA==qvach6)
              {   
               ++qv;
                while((PINA!=tt)&&(PINA!=trai1p)&&(PINA!=trai2p)&&(PINA!=phai1p)&&(PINA!=phai2p)&&(PINA!=gtbien))
                {
                PORTB.0=1;
                PORTB.1=1;
                trai=max;
                phai=max; 
                }
              }
                           /* bat dau do line */
         
          if(PINA==tt)
              {trai=max;phai=max;}
          if(PINA==trai1p)
              {trai=min*9;phai=max;}
          if(PINA==trai2p)
              {trai=min*7;phai=max;}
          if(PINA==trai3p)
              {trai=min*6;phai=max;}
          if(PINA==trai4p)
              {trai=min*4;phai=max;}
          if(PINA==trai5p)
              {trai=min*3;phai=max;}
          if(PINA==trai6p)
              {trai=min*1;phai=max;}
          if(PINA==trai7p)
              {trai=min*0;phai=max;}
          
          if(PINA==phai1p)
              {trai=max;phai=min*9;}
          if(PINA==phai2p)
              {trai=max;phai=min*7;}
          if(PINA==phai3p)
              {trai=max;phai=min*6;}
          if(PINA==phai4p)
              {trai=max;phai=min*4;}
          if(PINA==phai5p)
              {trai=max;phai=min*3;}
          if(PINA==phai6p)
              {trai=max;phai=min*1;}
          if(PINA==phai7p)
              {trai=max;phai=min*0;}
         
      }
       trai = 0;
       phai=0;
       PORTB.0=0;
       PORTB.1=0;
       qv= 0;       
      }
      void ctdoline2(unsigned char i)
      {
      #define    min     12
      #define    max    120
      PORTB.1=1;
      PORTB.0=1;
      trai=120;
      phai=120;
      while(qv<i)
      {                      /*bat dau dem vach */
          if(PINA==qvach)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach2)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach3)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach4)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach5)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach6)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach7)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach8)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach9)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
          if(PINA==qvach10)
          {
          qv++;
          PORTB.0=1;
          PORTB.1=1;
          trai=max;
          phai=max;
          delay_ms(100);
          }
      
         
      
                             /* bat dau do line */
          if(PINA==tt)
              {trai=max;phai=max;}
          if(PINA==trai1p)
              {trai=min*9;phai=max;}
          if(PINA==trai2p)
              {trai=min*7;phai=max;}
          if(PINA==trai3p)
              {trai=min*6;phai=max;}
          if(PINA==trai4p)
              {trai=min*4;phai=max;}
          if(PINA==trai5p)
              {trai=min*3;phai=max;}
          if(PINA==trai6p)
              {trai=min*1;phai=max;}
          if(PINA==trai7p)
              {trai=min*0;phai=max;}
          
          if(PINA==phai1p)
              {trai=max;phai=min*9;}
          if(PINA==phai2p)
              {trai=max;phai=min*7;}
          if(PINA==phai3p)
              {trai=max;phai=min*6;}
          if(PINA==phai4p)
              {trai=max;phai=min*4;}
          if(PINA==phai5p)
              {trai=max;phai=min*3;}
          if(PINA==phai6p)
              {trai=max;phai=min*1;}
          if(PINA==phai7p)
              {trai=max;phai=min*0;}
         
      }
       trai = 0;
       phai=0;
       PORTB.0=0;
       PORTB.1=0;
       qv= 0;       
      }
      
      void chayquavach()
          {
          PORTB.1=1;
          PORTB.0=1;
          trai=140;
          phai=140;
          delay_ms(1000);
          }        
      void quaytrai()     //  banh trai quay nghich , phai thuan
         {
           while((PINA!=phai5p)&&(PINA!=phai6p)&&(PINA!=trai7p))
          {
          PORTB.1=0;
          PORTB.0=1;
          trai=150;       //150
          phai=100;    //90
           }
          while((PINA!=phai3p)&&(PINA!=phai1p)&&(PINA!=trai2p))  
          {
          PORTB.1=0;
          PORTB.0=1;
          trai=130;
          phai=125;
          }   
             trai=0;
             phai=0;
             PORTB.0=1;
             PORTB.1=1;
          } 
      void quaytrai2()     //  banh trai quay nghich , phai thuan
         {
           
          while((PINA!=phai1p)&&(PINA!=tt)&&(PINA!=trai1p))  
          {
          PORTB.1=0;
          PORTB.0=1;
          trai=140;
          phai=160;
          }   
             trai=0;
             phai=0;
             PORTB.0=1;
             PORTB.1=1;
          } 
      void quaytri3()
          {
          while(PINA!=gtbien)
                  {
              PORTB.1=0;
              PORTB.0=1;
              trai=140;
              phai=140;
                 }
              while(PINA!=phai3p)
                  { 
              PORTB.1=0;
              PORTB.0=1;
              trai=140;
              phai=170;
              }
                 trai=0;
             phai=0;
             PORTB.0=1;
             PORTB.1=1;
             }
          
               
      void quayphai()     //  banh trai quay nghich , phai thuan
         {
         while((PINA!=trai5p)&&(PINA!=trai6p)&&(PINA!=trai7p))
          {
          PORTB.1=1;
          PORTB.0=0;
          trai=140;
          phai=200;
          }
          while(PINA!=tt&&PINA!=trai1p&&PINA!=phai1p)  
          {
          PORTB.1=1;
          PORTB.0=0;
          trai=120;
          phai=120;
          }   
             trai = 0;
             phai=0;
             PORTB.0=1;
             PORTB.1=1;
          } 
      void ctlaylua()
          { 
          while(PINC.6==1)
            {
              PORTB.1=0;
              PORTB.0=0;
              trai=0;
              phai=0;
              PORTB.6=1;
              PORTB.7=1;
             }
             PORTB.6=0;
             PORTB.7=0;
             PORTB.5=1;
             PORTB.4=1;
             delay_ms(600);
              while(PINC.7==0)
              {    
                PORTB.4=1;
                PORTB.5=1;
              }
              PORTB.4=0;
              PORTB.5=0;
              PORTB.7=1;
              delay_ms(800);
            }
      
      void cttraolua()
          {   
              while(PINC.6==1)
            {
              PORTB.1=0;
              PORTB.0=0;
              trai=0;
              phai=0;
              PORTB.6=1;
              PORTB.7=1;
              }
              PORTB.6=0;
              PORTB.7=0;
              PORTB.5=1;
              delay_ms(600);
              while(PINC.7==0)
              {
               PORTB.5=1;
              }
              PORTB.5=0;
              PORTB.7=1;
              delay_ms(1800);
          }
      void ham()
              {
                  PORTB.0=0;
                  PORTB.1=0;
                  trai=0;
                  phai=0;
                 } 
      void hamdy()
              {
                  PORTB.0=0;
                  PORTB.1=0;
                  trai=220;
                  phai=220;
               delay_ms(100);
                  trai=0;
                  phai=0;
               }   
      
                             
      void lui()
              {
                  PORTB.0=0;
                  PORTB.1=0;
                  trai=130;
                  phai=130;
                  delay_ms(850);
                  trai=0;
                  phai=0;
                  }
      void lui2()
              {
                  PORTB.0=0;
                  PORTB.1=0;
                  trai=180;
                  phai=180;
                  delay_ms(1200);
                  trai=0;
                  phai=0;
                  }
      void lui3()
              {
                  PORTB.0=0;
                  PORTB.1=0;
                  trai=130;
                  phai=130;
                  delay_ms(1000);
                  trai=0;
                  phai=0;
                  }            
      void keotay()
          { 
          while(PINC.4==0)
              {
               PORTB.7=1;
              }
              PORTB.7=0;
              
              }
      void ctlayngonlua()
              {
                 while(PINC.7==0)
              {    
                PORTB.4=1;
                PORTB.5=1;
              }
              PORTB.4=0;
              PORTB.5=0;
              while (PINC.6==1)
              {
              PORTD.1=1;
              PORTD.0=1;
              }
              PORTD.0=0;         
              PORTD.1=0;
              PORTD.4=1;
              PORTD.5=1;
              delay_ms(5000);
              PORTD.4=0;
              PORTD.5=0;
               PORTB.4=1;
               PORTB.5=1;
               delay_ms(200);
              while(PINC.7==0)
              {    
                PORTB.4=1;
                PORTB.5=1;
              }
              PORTB.4=0;
              PORTB.5=0;
              PORTD.1=1;
              
              delay_ms(300);
              }
      void ctthangonlua()
      {
      }        
              
      void main(void)
      {
      // Declare your local variables here
      
      // Input/Output Ports initialization
      // Port A initialization
      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
      PORTA=0x00;
      DDRA=0x00;
      
      // Port B initialization
      // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In 
      // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T 
      PORTB=0x04;
      DDRB=0xFB;
      
      // Port C initialization
      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
      PORTC=0x00;
      DDRC=0x00;
      
      // Port D initialization
      // Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
      // State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
      PORTD=0x4C;
      DDRD=0xB3;
      
      // Timer/Counter 0 initialization
      // Clock source: System Clock
      // Clock value: 125.000 kHz
      // Mode: Phase correct PWM top=FFh
      // OC0 output: Non-Inverted PWM
      TCCR0=0x63;
      TCNT0=0x00;
      OCR0=0x00;
      
      // Timer/Counter 1 initialization
      // Clock source: System Clock
      // Clock value: Timer 1 Stopped
      // Mode: Normal top=FFFFh
      // OC1A output: Discon.
      // OC1B output: Discon.
      // Noise Canceler: Off
      // Input Capture on Falling Edge
      // Timer 1 Overflow Interrupt: Off
      // Input Capture Interrupt: Off
      // Compare A Match Interrupt: Off
      // Compare B Match Interrupt: Off
      TCCR1A=0x00;
      TCCR1B=0x00;
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      
      // Timer/Counter 2 initialization
      // Clock source: System Clock
      // Clock value: 125.000 kHz
      // Mode: Phase correct PWM top=FFh
      // OC2 output: Non-Inverted PWM
      ASSR=0x00;
      TCCR2=0x64;
      TCNT2=0x00;
      OCR2=0x00;
      
      // External Interrupt(s) initialization
      // INT0: Off
      // INT1: Off
      // INT2: Off
      MCUCR=0x00;
      MCUCSR=0x00;
      
      // Timer(s)/Counter(s) Interrupt(s) initialization
      TIMSK=0x00;
      
      // Analog Comparator initialization
      // Analog Comparator: Off
      // Analog Comparator Input Capture by Timer/Counter 1: Off
      ACSR=0x80;
      SFIOR=0x00;
      
      while (1)
            {
            if(PINC.2==0)
            {
            ctlaylua();
            }       
            if(PINC.3==0)
            {
            cttraolua();
            }
            if(PINC.4==0)
              {
                      
               PORTB.5=1;
               delay_ms(1);
              }
              
            if(PINC.5==0)
            {
             PORTB.5=1;
             PORTB.4=1;
             delay_ms(1);
            }
            if(PIND.6==0)
            {
              PORTB.6=1;
              PORTB.7=1;
              delay_ms(1);
             }
            if(PINB.2==0)
            {
            PORTB.6=0;
            PORTB.7=1;
            delay_ms(1);
            }  
            else
            {
             PORTB.4=0;
             PORTB.5=0;
             PORTB.7=0;
             PORTB.6=0;
            }
            
            if( PINC.0==0)                    //   SAN XANH
            {      
                   ctdoline(1);
                   ham();
                   quaytrai();
                   ctdoline(4);
                   ctdoline2(1);
                   ham();
                   lui();
                   ctlaylua();
                   ctdoline(1);
                   quaytrai();
                   ctdoline(8);
                   ctdoline2(1);
                   ham();
      //             lui3();
      //             cttraolua();
      //             ctdoline(1);
      //             quaytrai();
      //             ctdoline(1);
      //             ctdoline2(1);
      //             quaytrai();
      //             ctdoline(1);
      //             ctdoline2(1);
      //             quayphai();
      //             ctdoline(1);
      //             ctdoline2(1);
      //             ham();
                   
                   
                   
      //               ham();
      //               ctdoline(3);
      //               ctdoline2(1);
      //               ham();
      //               ctlayngonlua();
      //               lui3();
      //               quaytrai2();
      //               ctdoline(6);
      //               quaytrai();
      //               ctdoline(8);
      //               quaytrai();
      //               ctdoline(4);
      //               ctthangonlua();
      
      
      
      
             
            }
            };
      }
      Sửa lần cuối bởi caovanhuong; 30-06-2012 lúc 22:48. Lý do: cho vào thể code
      Muốn giỏi thì phải cố gắng học hỏi.

    4. #4
      Tham gia
      16-04-2012
      Bài viết
      90
      Cảm ơn
      0
      Được cảm ơn 38 lần, trong 25 bài

      Mặc định Ðề: Dò đường của robot

      Son_bg9x viết chương trình cho robot đừng dùng 89 viết. Bạn dùng PIC hay AVR mà làm. Thân!

    Trả lời với tài khoản Facebook

    Các Chủ đề tương tự

    1. Trợ giúp - Đấu nối dây cho sạc Robot 02 AJH
      Bởi dongbaclangtu trong diễn đàn Máy biến áp, máy biến dòng
      Trả lời: 0
      Bài cuối: 16-10-2013, 07:53
    2. Đồ án robot dò đường
      Bởi elnino149 trong diễn đàn Các tài liệu điện khác...
      Trả lời: 2
      Bài cuối: 05-01-2013, 08:39
    3. Giáo trình dạy làm robot - bản tiếng Anh
      Bởi elnino149 trong diễn đàn Các tài liệu điện khác...
      Trả lời: 0
      Bài cuối: 10-12-2012, 15:41
    4. Robot hàn tự động
      Bởi levietsanh trong diễn đàn THẢO LUẬN VỀ CƠ ĐIỆN - M&E
      Trả lời: 7
      Bài cuối: 04-11-2012, 19:32
    5. Thảo luận - arm robot
      Bởi pibamami trong diễn đàn PLC
      Trả lời: 3
      Bài cuối: 24-10-2012, 00:44
    Văn Võ Trạng Nguyên
    Hắc Hiệp Đại Chiến Thánh Bài 2
    Đặc Cảnh Diệt Ma
    Khử Ma Đạo Trưởng
    Cương Thi Diệt Tà
    Sự Hình Thành Của Đế Chế Mông Cổ
    NHỮNG KHOẢNH KHẮC ĐÁNG NHỚ CỦA GIẢI GOLF PHÚ MỸ HƯNG 2016