wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18391|回復: 24
打印 上一主題 下一主題
收起左側

兩輪自平衡小車的制作過程 含源碼

  [復制鏈接]
跳轉到指定樓層
樓主


兩輪自平衡小車全部的制作資料下載:
自平衡小車程序.7z (305.54 KB, 下載次數: 254)



調試記錄:
2016.12.2
        完成基本角度閉環程序,基本調節出角度的PD,
        富民發現直立可能需要位置閉環+角度閉環+速度閉環。

2016.12.3 pm 13:00
        完成基本速度閉環和位置閉環程序,基本可以按照設定方向前進,
        只是中途的PID參數沒有調節好有停頓現象,開始藍牙控制模式。

2016.12.3 pm 14:43
        完成基本的前進 后退藍牙控制功能,就是有些時候出現過沖停頓。
        下一步進行轉彎控制程序的抒寫。

2016.12.3 pm 16:55
         完成基本控制功能,前進、后退、原地左轉、原地右轉、使用簡單
         的藍牙指令控制,0x01前進、0x02后退、 0x03原地左轉、 0x04原
         地右轉、0x00什么保持直立狀態,下一步進行直立調節,優化靜止
         時的狀態。

2016.12.5 pm 13:50
        加入了手機APP藍牙控制 出現問題 抖動過大多次控制容易出現死機
        現象,需要繼續直立PID調節參數。

2016.12.22 pm 17:49
        加入了 模糊控制 參數調節的還算可以,只調節了直立參數 速度閉環
        和位置閉環參數還沒有調節等待明天調節。

2016.12.31 am 11:13
        所有功能都已完畢。直立、壁障、循跡、藍牙遙控、由于循跡采用雙線
        導致有些時候不穩定、不知道是機械愿意還是軟件原因導致直立靜止時
        有些抖動。基本可以完成所有多需任務。




這個是去年做的一個兩輪自平衡循跡小車,小車采用兩片STM32,一塊負責圖像處理,另一塊負責對電機的控制。兩塊板子之間使用串口通信傳輸數據。
做這個車子學會了很多,最初兩塊板子之間串口通信有問題,程序會跑著跑著就跑飛,很是惱火。之后每次需要串口通信才打開中斷,解決了跑飛的問題。
以下是車子的圖片,和源碼。

主程序下面是部分程序預覽(完整版本請下載本帖附件):
  1. #include "System_init.h"

  2. /*特別注意:flag變量 不可以更改 否則無法直立*/
  3. extern u8 flag;

  4. /**********主函數**********/                                                                                   
  5. int main(void)
  6. {
  7.         system_init();         //整體系統初始化函數
  8.                 temp_data11 = 80;
  9.         for(;;)
  10.         {
  11.       /*
  12.           函數說明:
  13.           upright_Adjust函數。
  14.           功能:直立控制。
  15.           參數個數:3個。
  16.           1)P參數。
  17.           2)I參數。
  18.           3)D參數。
  19.           此函數是用于直立的函數P是PID中的比例參數
  20.           D是PID的微分參數、直立不用I積分參數。
  21.           */
  22.           /*
  23.           函數說明:
  24.           speed_control函數。
  25.           功能:藍牙控制函數。
  26.           參數個數:3個。
  27.           1)串口采集參數(不需要更改、放著就可以)
  28.           2)速度控制參數(可以更改最大40最小10)
  29.           3)轉角速度控制參數(可修改,最大40最小10)
  30.           */
  31.                              SpeedL(3500);
  32.         SpeedR(3500);
  33.           if(1 == flag)
  34.           {
  35.                                    
  36.            //upright_Adjust(400.0,0.0,25.0);                            //9.5



  37.            /*特別注意:flag變量 不可以更改 否則無法直立*/
  38.            flag = 0;
  39.           }
  40.         }
  41. }



復制代碼
以stm32f103rct6為例
測試串口通信數據
MPU數據進行處理
檢測X軸加速度,Y軸角速度
參考網上例程
mpu6050.c文件:
  1. #include "MPU6050.h"
  2. #include "System_init.h"

  3. void I2C_Congiguration(void)
  4. {

  5.   GPIO_InitTypeDef  GPIO_InitStructure;
  6.   I2C_InitTypeDef  I2C_InitStructure;

  7.         /* 使能?I22C1 有關的時鐘 */
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  9.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);  
  10.    
  11.   /* PB6-I2C2_SCL、PB7-I2C2_SDA*/
  12.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;
  13.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  14.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;               // 開漏輸出
  15.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  16.         
  17.   /* I2C 配置 */
  18.   I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  19.   I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  20.   I2C_InitStructure.I2C_OwnAddress1 = I2C2_MPU6050;
  21.   I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  22.   I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  23.   I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
  24. /* 使I2C1 */
  25.   I2C_Cmd(I2C2, ENABLE);

  26.   /* I2C2 初始化 */
  27.   I2C_Init(I2C2, &I2C_InitStructure);

  28.         /*允許1字節1應答模式*/
  29.         I2C_AcknowledgeConfig(I2C2, ENABLE);   
  30.         
  31.         
  32. }


  33. void MPU6050_Init(void)
  34. {
  35.         delay_ms(100);
  36.         I2C_WriteByte(PWR_MGMT_1,0x00);
  37.         delay_ms(10);
  38.         I2C_WriteByte(SMPLRT_DIV,0x07);
  39.         delay_ms(10);
  40.         I2C_WriteByte(CONFIG,0x06);
  41.         delay_ms(10);
  42.          I2C_WriteByte(GYRO_CONFIG,0x18);
  43.         delay_ms(10);
  44.          I2C_WriteByte(ACCEL_CONFIG,0x01);
  45.         delay_ms(1000);

  46. }

  47. void I2C_WriteByte(uint8_t REG_Address, uint8_t Write_Data)
  48. {
  49.         while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  50.   /* Send STRAT condition */
  51.   I2C_GenerateSTART(I2C2, ENABLE);

  52.   /* Test on EV5 and clear it */
  53.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));  

  54.   /* Send EEPROM address for write */
  55.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);
  56.   
  57.   /* Test on EV6 and clear it */
  58.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  59.       
  60.   /* Send the EEPROM's internal address to write to */
  61.   I2C_SendData(I2C2, REG_Address);
  62.   
  63.   /* Test on EV8 and clear it */
  64.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  65.   /* Send the byte to be written */
  66.   I2C_SendData(I2C2, Write_Data);
  67.    
  68.   /* Test on EV8 and clear it */
  69.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  70.   
  71.   /* Send STOP condition */
  72.   I2C_GenerateSTOP(I2C2, ENABLE);
  73.         I2C_WaitEepromStandbyState();

  74. }

  75. uint8_t I2C_ReadByte(uint8_t REG_Address)
  76. {
  77.         uint8_t data_byte;
  78.   //*((u8 *)0x4001080c) |=0x80;
  79.   while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  80.    
  81.    
  82.   /* Send START condition */
  83.   I2C_GenerateSTART(I2C2, ENABLE);
  84.   //*((u8 *)0x4001080c) &=~0x80;
  85.   
  86.   /* Test on EV5 and clear it */
  87.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));

  88.   /* Send EEPROM address for write */
  89.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);

  90.   /* Test on EV6 and clear it */
  91.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  92.   
  93.   /* Clear EV6 by setting again the PE bit */
  94.   I2C_Cmd(I2C2, ENABLE);

  95.   /* Send the EEPROM's internal address to write to */
  96.   I2C_SendData(I2C2, REG_Address);  

  97.   /* Test on EV8 and clear it */
  98.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  99.   
  100.   /* Send STRAT condition a second time */  
  101.   I2C_GenerateSTART(I2C2, ENABLE);
  102.   
  103.   /* Test on EV5 and clear it */
  104.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));
  105.   
  106.   /* Send EEPROM address for read */
  107.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Receiver);
  108.   
  109.   /* Test on EV6 and clear it */
  110.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
  111.   
  112.   /* While there is data to be read */
  113.        /* Disable Acknowledgement */
  114.       I2C_AcknowledgeConfig(I2C2, DISABLE);
  115.       
  116.       /* Send STOP Condition */
  117.       I2C_GenerateSTOP(I2C2, ENABLE);

  118.     /* Test on EV7 and clear it */
  119.     if(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED))      
  120.       /* Read a byte from the EEPROM */
  121.       data_byte = I2C_ReceiveData(I2C2);


  122.   /* Enable Acknowledgement to be ready for another reception */
  123.   I2C_AcknowledgeConfig(I2C2, ENABLE);
  124.         //I2C_EE_WaitEepromStandbyState();
  125.         return data_byte;
  126. }

  127. void I2C_ReadBuffer(uint8_t* Data_Buffer, uint8_t REG_Address, uint8_t Num_Byte)
  128. {  
  129.   //*((u8 *)0x4001080c) |=0x80;
  130.   while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
  131.    
  132.    
  133.   /* Send START condition */
  134.   I2C_GenerateSTART(I2C2, ENABLE);
  135.   //*((u8 *)0x4001080c) &=~0x80;
  136.   
  137.   /* Test on EV5 and clear it */
  138.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));

  139.   /* Send EEPROM address for write */
  140.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);

  141.   /* Test on EV6 and clear it */
  142.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
  143.   
  144.   /* Clear EV6 by setting again the PE bit */
  145.   I2C_Cmd(I2C2, ENABLE);

  146.   /* Send the EEPROM's internal address to write to */
  147.   I2C_SendData(I2C2, REG_Address);  

  148.   /* Test on EV8 and clear it */
  149.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  150.   
  151.   /* Send STRAT condition a second time */  
  152.   I2C_GenerateSTART(I2C2, ENABLE);
  153.   
  154.   /* Test on EV5 and clear it */
  155.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));
  156.   
  157.   /* Send EEPROM address for read */
  158.   I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Receiver);
  159.   
  160.   /* Test on EV6 and clear it */
  161.   while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
  162.   
  163.   /* While there is data to be read */
  164.   while(Num_Byte)  
  165.   {
  166.     if(Num_Byte == 1)
  167.     {
  168.       /* Disable Acknowledgement */
  169.       I2C_AcknowledgeConfig(I2C2, DISABLE);
  170.       
  171.       /* Send STOP Condition */
  172.       I2C_GenerateSTOP(I2C2, ENABLE);
  173.     }

  174.     /* Test on EV7 and clear it */
  175.     if(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED))  
  176.     {      
  177.       /* Read a byte from the EEPROM */
  178.       *Data_Buffer = I2C_ReceiveData(I2C2);

  179.       /* Point to the next location where the byte read will be saved */
  180.       Data_Buffer++;
  181.       
  182.       /* Decrement the read bytes counter */
  183.       Num_Byte--;        
  184.     }   
  185.   }

  186.   /* Enable Acknowledgement to be ready for another reception */
  187.   I2C_AcknowledgeConfig(I2C2, ENABLE);
  188.         //I2C_EE_WaitEepromStandbyState();
  189. }







  190. void I2C_WaitEepromStandbyState(void)      
  191. {
  192.   vu16 SR1_Tmp = 0;

  193.   do
  194.   {
  195.     /* Send START condition */
  196.     I2C_GenerateSTART(I2C2, ENABLE);
  197.     /* Read I2C2 SR1 register */
  198.     SR1_Tmp = I2C_ReadRegister(I2C2, I2C_Register_SR1);
  199.     /* Send EEPROM address for write */
  200.     I2C_Send7bitAddress(I2C2, I2C2_MPU6050, I2C_Direction_Transmitter);
  201.   }while(!(I2C_ReadRegister(I2C2, I2C_Register_SR1) & 0x0002));
  202.   
  203.   /* Clear AF flag */
  204.   I2C_ClearFlag(I2C2, I2C_FLAG_AF);
  205.     /* STOP condition */   
  206.     I2C_GenerateSTOP(I2C2, ENABLE); // Added by Najoua 27/08/2008
  207. }
復制代碼
pazzy.c文件:
  1. #include "pazzy.h"
  2. #include "System_init.h"

  3. #define FMAX    100       /*語言值的滿幅值*/
  4. //角度值
  5. int PFF[4]={0,8,16,24};
  6. /*輸入量D語言值特征點*/
  7. // 角速度
  8. int DFF[4]={0,16,45,80};
  9. /*輸出量U語言值特征點*/
  10. int UFF[7]={0,12,30};
  11. /*采用了調整因子的規則表,大誤差時偏重誤差,小誤差時偏重誤差變化*/
  12. /*a0=0.3,a1=0.55,a2=0.74,a3=0.89   */
  13. int rule[7][7]={
  14. //誤差變化率 -3,-2,-1, 0, 1, 2, 3             // 誤差
  15.                 { 2, 2, 2, 2, 2, 1, 1,},          //   -3
  16.                 { 2, 1, 1, 1, 1, 1, 2,},          //   -2
  17.                 { 2, 1, 0, 0, 0, 0, 0,},          //   -1
  18.             { 2, 2, 2, 2, 2, 2, 2,},          //    0
  19.                 { 0, 0, 0, 0, 0, 1, 2,},          //    1
  20.                 { 0, 1, 1, 1, 1, 1, 2,},          //    2
  21.                 { 1, 1, 2, 2, 2, 2, 2}};          //    3           //    3

  22. /**********************************************************/
  23. float Fuzzy(float P,float D)   /*模糊運算引擎*/
  24. {
  25.         float    U;           /*偏差,偏差微分以及輸出值的精確量*/
  26.         float   PF[2],DF[2],UF[4];   /*偏差,偏差微分以及輸出值的隸屬度*/
  27.         int    Pn,Dn,Un[4];
  28.         double   temp1,temp2;
  29.         /*隸屬度的確定*/
  30.         /*根據PD的指定語言值獲得有效隸屬度*/
  31.         if(P>-PFF[3] && P<pff[3])
  32.         {
  33.                 if(P<=-PFF[2])
  34.                 {
  35.                         Pn=-2;
  36.                         PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2]));
  37.                 }
  38.                 else if(P<=-PFF[1])
  39.                 {
  40.                         Pn=-1;
  41.                         PF[0]=FMAX*((float)(-PFF[1]-P)/(PFF[2]-PFF[1]));
  42.                 }
  43.                 else if(P<=PFF[0])
  44.                 {
  45.                         Pn=0;
  46.                         PF[0]=FMAX*((float)(-PFF[0]-P)/(PFF[1]-PFF[0]));
  47.                 }
  48.                 else if(P<=PFF[1])
  49.                 {
  50.                         Pn=1; PF[0]=FMAX*((float)(PFF[1]-P)/(PFF[1]-PFF[0]));
  51.                 }
  52.                 else if(P<=PFF[2])
  53.                 {
  54.                         Pn=2; PF[0]=FMAX*((float)(PFF[2]-P)/(PFF[2]-PFF[1]));
  55.                 }
  56.                 else if(P<=PFF[3])
  57.                 {
  58.                         Pn=3; PF[0]= FMAX*((float)(PFF[3]-P)/(PFF[3]-PFF[2]));
  59.                 }
  60.         }
  61.         else if(P<=-PFF[3])
  62.         {
  63.                 Pn=-2;   PF[0]=FMAX;
  64.         }
  65.         else if(P>=PFF[3])
  66.         {
  67.                 Pn=3;   PF[0]=0;
  68.         }
  69.         PF[1]=FMAX-PF[0];




  70.         if(D>-DFF[3] && D<dff[3])
  71.         {
  72.                 if(D<=-DFF[2])
  73.                 {
  74.                         Dn=-2;DF[0]=FMAX*((float)(-DFF[2]-D)/(DFF[3]-DFF[2]));
  75.                 }
  76.                 else if(D<=-DFF[1])
  77.                 {
  78.                         Dn=-1;
  79.                         DF[0]=FMAX*((float)(-DFF[1]-D)/(DFF[2]-DFF[1]));
  80.                 }
  81.                 else if(D<=DFF[0])
  82.                 {
  83.                         Dn=0;
  84.                         DF[0]=FMAX*((float)(-DFF[0]-D)/(DFF[1]-DFF[0]));
  85.                 }
  86.                 else if(D<=DFF[1])
  87.                 {
  88.                         Dn=1;
  89.                         DF[0]=FMAX*((float)(DFF[1]-D)/(DFF[1]-DFF[0]));
  90.                 }
  91.                 else if(D<=DFF[2])
  92.                 {
  93.                         Dn=2; DF[0]=FMAX*((float)(DFF[2]-D)/(DFF[2]-DFF[1]));
  94.                 }
  95.                 else if(D<=DFF[3])
  96.                 {
  97.                         Dn=3; DF[0]=FMAX*((float)(DFF[3]-D)/(DFF[3]-DFF[2]));
  98.                 }
  99.         }
  100.         else if(D<=-DFF[3])
  101.         {
  102.                 Dn=-2;
  103.                 DF[0]=FMAX;
  104.         }
  105.         else if(D>=DFF[3])
  106.         {
  107.                 Dn=3;
  108.                 DF[0]=0;
  109.         }
  110.         DF[1]=FMAX-DF[0];

  111.         /*使用誤差范圍優化后的規則表rule[7][7]*/
  112.         /*輸出值使用13個隸屬函數,中心值由UFF[7]指定*/
  113.         /*一般都是四個規則有效*/
  114.         Un[0]=rule[Pn-1+3][Dn-1+3];
  115.         Un[1]=rule[Pn+3][Dn-1+3];
  116.         Un[2]=rule[Pn-1+3][Dn+3];
  117.         Un[3]=rule[Pn+3][Dn+3];

  118.         if(PF[0]<=DF[0])
  119.         UF[0]=PF[0];
  120.         else
  121.         UF[0]=DF[0];

  122.         if(PF[1]<=DF[0])
  123.         UF[1]=PF[1];
  124.         else
  125.         UF[1]=DF[0];
  126.         if(PF[0]<=DF[1])
  127.         UF[2]=PF[0];
  128.         else
  129.         UF[2]=DF[1];
  130.         if(PF[1]<=DF[1])
  131.         UF[3]=PF[1];
  132.         else
  133.         UF[3]=DF[1];
  134.         /*同隸屬函數輸出語言值求大*/
  135.         if(Un[0]==Un[1])
  136.         {
  137.                 if(UF[0]>UF[1])
  138.                 UF[1]=0;
  139.                 else
  140.                 UF[0]=0;
  141.         }
  142.         if(Un[0]==Un[2])
  143.         {
  144.                 if(UF[0]>UF[2])
  145.                 UF[2]=0;
  146.                 else
  147.                 UF[0]=0;
  148.         }
  149.         if(Un[0]==Un[3])
  150.         {
  151.                 if(UF[0]>UF[3])
  152.                 UF[3]=0;
  153.                 else
  154.                 UF[0]=0;
  155.         }
  156.         if(Un[1]==Un[2])
  157.         {
  158.                 if(UF[1]>UF[2])
  159.                 UF[2]=0;
  160.                 else
  161.                 UF[1]=0;
  162.         }
  163.         if(Un[1]==Un[3])
  164.         {
  165.                 if(UF[1]>UF[3])
  166.                 UF[3]=0;
  167.                 else
  168.                 UF[1]=0;
  169.         }
  170.         if(Un[2]==Un[3])
  171.         {
  172.                 if(UF[2]>UF[3])
  173.                 UF[3]=0;
  174.                 else
  175.                 UF[2]=0;
  176.         }
  177.         /*重心法反模糊*/
  178.         /*Un[]原值為輸出隸屬函數標號,轉換為隸屬函數值*/
  179.         if(Un[0]>=0)
  180.         Un[0]=UFF[Un[0]];
  181.         else
  182.         Un[0]=-UFF[-Un[0]];
  183.         if(Un[1]>=0)
  184.         Un[1]=UFF[Un[1]];
  185.         else
  186.         Un[1]=-UFF[-Un[1]];
  187.         if(Un[2]>=0)
  188.         Un[2]=UFF[Un[2]];
  189.         else
  190.         Un[2]=-UFF[-Un[2]];
  191.         if(Un[3]>=0)
  192.         Un[3]=UFF[Un[3]];
  193.         else
  194.         Un[3]=-UFF[-Un[3]];

  195.         temp1=UF[0]*Un[0]+UF[1]*Un[1]+UF[2]*Un[2]+UF[3]*Un[3]; //因為選定隸屬函數為三角形,且對稱,故可以證明中心在中間的特征點上(橫坐標)。
  196.         temp2=UF[0]+UF[1]+UF[2]+UF[3];
  197.         U=temp1/temp2;

  198.         return U; //最后的輸出
  199. }
復制代碼

評分

參與人數 6黑幣 +33 收起 理由
2123788100abc + 5 很給力!
單片機小菜雞 + 5 太厲害了
gxsdl + 2 共享資料的黑幣獎勵!
bosschuan + 6
sax_yang + 3 共享資料的黑幣獎勵!
YJGG + 12 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:23606 發表于 2016-5-27 13:34 | 只看該作者
樓主這調試怎么在未來調的
回復

使用道具 舉報

板凳
ID:79544 發表于 2016-6-27 12:45 | 只看該作者
樓主牛人說明很詳細,謝謝分享!
回復

使用道具 舉報

地板
ID:167603 發表于 2017-3-16 23:16 | 只看該作者
51黑有你更精彩
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
ID:146110 發表于 2017-4-30 16:04 | 只看該作者
樓主牛人說明很詳細,謝謝分享...
回復

使用道具 舉報

7#
ID:196580 發表于 2017-5-4 17:02 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

8#
ID:206769 發表于 2017-6-1 16:39 | 只看該作者
不過后期調試有點麻煩
回復

使用道具 舉報

9#
ID:228825 發表于 2017-9-5 22:29 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

10#
ID:231452 發表于 2017-9-6 16:58 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

11#
ID:242562 發表于 2017-10-25 12:39 來自觸屏版 | 只看該作者
準備著手
回復

使用道具 舉報

12#
ID:134810 發表于 2017-10-26 08:51 來自觸屏版 | 只看該作者
我最近也做了平衡小車
回復

使用道具 舉報

13#
無效樓層,該帖已經被刪除
14#
ID:265054 發表于 2017-12-21 21:25 | 只看該作者
樓主有沒有做過ti的tms320f28069
回復

使用道具 舉報

15#
ID:285305 發表于 2018-2-26 17:00 | 只看該作者
一直在找這個,但是黑幣不夠下載!
回復

使用道具 舉報

16#
ID:285305 發表于 2018-2-26 21:20 來自觸屏版 | 只看該作者
樓主用的用的電機是步進電機還是減速電機?
回復

使用道具 舉報

17#
ID:293018 發表于 2018-3-17 09:07 | 只看該作者
真心不錯,值得參考
回復

使用道具 舉報

18#
ID:297869 發表于 2018-3-27 17:28 | 只看該作者
厲害厲害
回復

使用道具 舉報

19#
ID:363336 發表于 2018-7-2 17:29 | 只看該作者
厲害厲害
回復

使用道具 舉報

20#
無效樓層,該帖已經被刪除
21#
ID:398133 發表于 2018-10-29 15:39 | 只看該作者
感謝樓主分享啊
回復

使用道具 舉報

22#
ID:415794 發表于 2018-10-29 21:01 | 只看該作者
樓主牛人!感謝分享
回復

使用道具 舉報

23#
ID:419888 發表于 2018-11-2 20:42 | 只看該作者
不錯,挺好的!!!!!
回復

使用道具 舉報

24#
ID:427133 發表于 2018-11-30 15:07 | 只看該作者
樓主技術果然高超
回復

使用道具 舉報

25#
無效樓層,該帖已經被刪除
26#
無效樓層,該帖已經被刪除
27#
ID:583559 發表于 2019-8-3 11:19 | 只看該作者
不錯不錯
回復

使用道具 舉報

28#
ID:400671 發表于 2019-8-20 14:20 | 只看該作者
樓主技術果然高超
回復

使用道具 舉報

29#
ID:601357 發表于 2021-12-13 19:15 | 只看該作者
樓主謝謝分享正在學這個
回復

使用道具 舉報

30#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
一区二区三区免费在线观看视频 | 日韩精品一二三| 在线观看操人| 国产免费一级片| 久久久久亚洲AV| 无限资源日本好片| 国产精品视频免费观看| 日韩精品在线观看视频| 日韩毛片高清在线播放| 一二三四区在线观看| 人人影院免费大片| 国产普通话bbwbbwbbw| 双性尿奴穿贞c带憋尿| a级网站在线观看| 国产精品入口尤物| 亚洲人成电影网站色xx| 午夜视频一区二区| 成人91在线观看| 亚洲人成免费| 另类春色校园亚洲| 不卡的av影片| 亚洲精品视频在线免费| 户外露出精品视频国产| 中文字幕人妻一区二区在线视频 | 青娱乐国产91| 欧美中文字幕在线视频| 亚洲精品一区av在线播放| 午夜日韩在线电影| 99久久免费国产| 亚洲资源av| 欧美亚洲国产激情| 国产精久久久| heyzo在线欧美播放| 中国在线观看免费国语版电影 | 欧美日韩福利在线| 国产99在线免费| 97**国产露脸精品国产| 亚洲性日韩精品一区二区| 欧美日韩在线观看一区二区| 国产午夜亚洲精品不卡| 开心九九激情九九欧美日韩精美视频电影| 伊人久久综合影院| 亚洲影视资源| 色是在线视频| 麻豆传媒在线完整视频| 黑巨人与欧美精品一区| 一二三四视频在线社区中文字幕2 一二三四日本中文字幕 | 亚洲xxx在线| 久久久国产精品成人免费| 小早川怜子久久精品中文字幕| 少妇激情一区二区三区| 久久精品国产精品亚洲精品色| 成人av男人的天堂| 国产欧美va欧美va香蕉在线| 国模叶桐国产精品一区| www.xxxx精品| 亚洲美女久久久| 91精品国产乱| 在线影视一区二区三区| 亚洲成人免费在线| 亚洲欧美另类久久久精品| 久久综合久久久久88| 国产一区二区不卡| 免费成人av在线播放| 亚洲免费播放| 欧美视频在线观看| 午夜精品偷拍| 在线中文一区| 亚洲看片一区| 欧美伊人影院| 极品裸体白嫩激情啪啪国产精品| 欧美大片专区| 国产亚洲福利| 奇米影视一区二区三区| 日本中文字幕不卡| 久久精品99国产精品| 久久91精品国产91久久小草| 精品无码三级在线观看视频| 国产麻豆精品在线观看| 成人在线视频一区| 国产午夜精品久久久久久免费视| 欧美激情在线一区二区| 日韩一区在线看| 亚洲午夜免费福利视频| 欧美性猛交丰臀xxxxx网站| 在线一区二区三区四区| 日韩精品一区二区三区四区视频| 精品剧情在线观看| 尤物九九久久国产精品的分类| 久久久精品2019中文字幕神马| 久久国产精品电影| 日本视频久久久| 91九色国产社区在线观看| 国严精品久久久久久亚洲影视 | 欧美成人亚洲| 免播放器亚洲| 岛国一区二区在线观看| 欧美国产精品劲爆| 精品久久久久久中文字幕一区奶水| 色综合激情五月| 日韩视频不卡中文| 亚洲三级 欧美三级| 久久综合久久八八| 国产成人精品优优av| 波多野结衣一区二区三区在线观看 | 丰满少妇一区二区三区专区| 精品少妇人妻一区二区黑料社区| 中国1级黄色片| 黄色a级片在线观看| 精品美女久久久久| 国产精品九九九九| 偷窥韩漫第三季| 韩国xxxx做受gayxxxx| 免费网站你懂的| a级女人18毛片| 夜夜嗨aⅴ免费视频| 亚洲成人天堂| 一本一道dvd在线观看免费视频| 午夜视频成人| 色偷偷亚洲第一成人综合网址 | 亚洲av网址在线| 国产一级特黄视频| 国产美女视频免费观看下载软件| 人人妻人人藻人人爽欧美一区| 制服 丝袜 综合 日韩 欧美| 男女曰b免费视频| 品久久久久久久久久96高清| 国产男女免费视频| 51调教丨国产调教视频| 老司机福利在线观看| 怡春院在线视频| 精品久久人妻av中文字幕| 国产麻豆麻豆| 伊人av在线| 成人影院在线观看| 美女100%一区| 欧美成人直播| 翔田千里一区二区| 亚洲色图制服丝袜| 色欧美乱欧美15图片| 中文字幕亚洲欧美日韩在线不卡 | 少妇一级淫免费放| 欧美国产在线一区| 男人天堂2024| 亚洲精品久久久久avwww潮水| 成人拍拍拍免费视频网站| 黄p免费网站| 国内激情视频在线观看| 春意影院普通入口| 99riav视频在线观看| 九九热爱视频精品视频| 亚洲网址在线| 国产精品对白交换视频| 欧美日韩美少妇| 91成人在线视频| 国产成人成网站在线播放青青| 久久婷婷国产精品| 中国黄色a级片| www.蜜臀av| 天堂午夜在线| 在线观看小视频| 日本超碰一区二区| 日本aⅴ亚洲精品中文乱码| 久久色视频免费观看| 亚洲精品一区二区三区香蕉 | 7色.com| 欧美精品久久久久久久久久丰满| а天堂中文最新一区二区三区| 成人在线免费视频观看| 国产亚洲人成网站| 在线观看av一区二区| 欧美在线视频a| 欧美日韩在线观看一区二区三区| 午夜男人的天堂| 精品国产免费观看| www黄com| 一色屋色费精品视频在线观看 | 黄色录像a级片| www.激情五月| 国产成人亚洲精品播放器下载| 麻豆tv在线| 亚洲色图二区| 99久久99久久久精品齐齐| 精品视频偷偷看在线观看| 国产精品99久久99久久久二8| 欧美 日本 亚洲| 手机毛片在线观看| 国产免费自拍视频| 成人三级黄色免费网站| 日韩国产在线| 久久你懂得1024| 在线不卡国产精品| 欧美欧美一区二区| 四虎国产精品免费| 欧美特级黄色录像| 国产精品高潮呻吟AV无码| 免费在线稳定资源站| 精品视频一区二区三区| 北岛玲一区二区三区四区| 疯狂欧美牲乱大交777| 欧美在线一级视频| 亚洲精品日韩精品| 成人欧美在线视频| 尤物网站在线观看| 99国产精品一区二区三区| 成年网站在线| 欧美成人基地| 亚洲特级片在线| 中文欧美日本在线资源| 9191国产视频| 欧美性受xxxxxx黑人xyx性爽| 99热这里只有精品9| 92国产在线视频| 日韩在线精品| 欧美视频在线免费看| 九九热精品视频在线播放| 国产日产欧美视频| 成人免费视频毛片| 免费黄色片在线观看| 蜜桃精品wwwmitaows| 亚洲一区二区三区中文字幕| 日韩欧美一级二级三级久久久| 欧美一区国产一区| 久久久无码精品亚洲国产| 2022国产麻豆剧果冻传媒剧情| 成人免费在线观看视频| 天堂午夜影视日韩欧美一区二区| 欧美影院一区二区三区| 国产乱人伦真实精品视频| 波多野吉衣中文字幕| 欧美日溪乱毛片| 国产一区二区久久久久| 亚洲一区黄色| 精品欧美久久久| 九九久久九九久久| 99精品视频99| 天堂中文在线8| 女同一区二区三区| 日韩欧美天堂| 国产成人av在线影院| 国产一级揄自揄精品视频| 国产乱真实合集| 欧美性性性性性ⅹxxbbbb| 快射av在线播放一区| 亚洲视频分类| 色悠久久久久综合欧美99| 欧美又大又硬又粗bbbbb| 久久久高清视频| 亚洲同志网站入口| 日本少妇一区| 精品亚洲免费视频| 中国日韩欧美久久久久久久久| 国产成人精品无码播放| 欧美在线精品一区二区三区| 国产麻豆一区| 成人精品一区二区三区中文字幕 | 精品一区日韩成人| 五月婷婷激情网| 男女羞羞视频教学| 欧美日韩调教| 亚洲精品一区二区三区在线观看 | avtt天堂资源网| 国产精品大片免费观看| 欧美日韩色婷婷| 亚洲高清123| www.com在线观看| av岛国在线| 中文字幕va一区二区三区| 久久久免费电影| 成人无码精品1区2区3区免费看| 女人被狂躁到高潮的免费 | 一区二区三区欧美激情| 中文日韩在线观看| 欧美一级中文字幕| eeuss中文| 久草国产精品视频| 最新天堂资源在线| 天天揉久久久久亚洲精品| 亚洲综合色丁香婷婷六月图片| 国产91在线播放九色快色| 男人的天堂久久久| 大地资源高清播放在线观看| 久久福利资源站| 中文字幕亚洲综合| 中文字幕免费在线播放| 软萌小仙自慰喷白浆| 在线日韩中文| 日韩精品在线第一页| 在线观看视频在线观看| 亚洲怡红院av| 99精品国产一区二区三区2021| 亚洲国产你懂的| 久久69精品久久久久久国产越南| 波多野结衣一二三四区| 濑亚美莉一二区在线视频| 国产原创一区二区| 久久免费国产精品1| 免费在线黄色片| 日本综合在线| 一区二区三区欧美激情| 免费毛片一区二区三区久久久| 亚洲 欧美 日韩 在线| 国产传媒在线| 日韩精品亚洲一区| 一二三四视频在线中文| 麻豆蜜桃在线| 国产精品一级片| 国产精品免费看久久久香蕉| 最新黄色av网址| 在线看福利影| 国产视频一区二区三区在线观看| 欧美视频一区在线| 亚洲人成网站在线观看播放| 欧美成人做性视频在线播放| 欧美xxxx做受欧美护士| 欧美午夜寂寞影院| 五月激情婷婷在线| 日本成人免费网站| 国产精品综合网| 久久久久久久久久久久久av| 一区二区三区四区五区精品| 亚洲自拍偷拍图区| 国产人成视频在线观看| 免费高清成人| 中文字幕一区二区三区在线观看| 乱妇乱女熟妇熟女网站| 成人综合av| 亚洲图片欧美一区| 日本在线观看一区| 宅男午夜视频| 欧美日韩免费网站| 无码人妻一区二区三区在线视频| 青草在线视频| 精品国产一区二区精华| 日韩欧美中文字幕在线播放| 免费午夜视频在线观看| www.大网伊人| 精品久久久久中文字幕小说| 日韩一区二区三区在线观看 | 青草成人免费视频| 色94色欧美一区| 99久久久久久| 中文字幕一区二区三区在线乱码| 伊人中文字幕在线| 日本高清成人免费播放| 视频免费在线观看| 综合成人在线| 欧美一级精品大片| 免费精品一区二区| 丝袜诱惑亚洲看片| 免费成人深夜夜行视频| 1024在线视频| 欧美日韩一区二区三区高清| 日韩精品视频一区二区| 亚洲精品a区| 国产精品直播网红| 精品全国在线一区二区| 欧美激情中文不卡| 影音先锋黄色资源| 欧美视频免费看| 国产激情视频一区| 丰满岳乱妇国产精品一区| 亚洲看片免费| 男人添女人荫蒂免费视频| 神马亚洲视频| 日韩一区二区视频| 国产av无码专区亚洲av麻豆| 欧美色图首页| 成人毛片100部免费看| 日韩免费影院| 精品国产123| а√中文在线资源库| 99re亚洲国产精品| 国产免费一区二区三区视频| 在线最新版中文在线| 久久久久久18| 日韩综合另类| 一区二区成人在线观看| 日韩a级片在线观看| 99久久婷婷| 国产精品无码乱伦| 久久国产波多野结衣| 今天的高清视频免费播放成人| 成年人视频大全| 免费一级在线观看| 亚洲四色影视在线观看| 亚洲综合激情六月婷婷在线观看| 久久成人综合网| 中文字幕第22页| 精品丰满少妇一区二区三区| 日本不卡网站| 欧美在线性视频| 欧美亚洲另类在线观看| 亚洲香肠在线观看| 久草国产精品视频| 亚洲精品护士| 久久久免费视频网站| 试看120秒一区二区三区| 国产成人aa精品一区在线播放 | 伊人久久精品|