久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

二軸導軌系統的labview+arduino控制源碼

[復制鏈接]
跳轉到指定樓層
樓主
二軸導軌系統的labview控制和單片機代碼


arduino源程序如下:
  1. #define DirX 22
  2. #define StepX 24
  3. #define EnableX 26
  4. #define ms1X 28
  5. #define ms2X 30
  6. #define ms3X 32
  7. #define sleepX 34
  8. #define resetX 36

  9. #define DirY 23
  10. #define StepY 25
  11. #define EnableY 27
  12. #define ms1Y 29
  13. #define ms2Y 31
  14. #define ms3Y 33
  15. #define sleepY 35
  16. #define resetY 37

  17. int i;          //循環計數用
  18. int X;          //當前橫坐標
  19. int Y;          //當前縱坐標
  20. int Xe;         //起點橫坐標
  21. int Ye;         //起點縱坐標
  22. int Xm;         //終點橫坐標
  23. int Ym;         //終點縱坐標
  24. int N;          //要走的步數
  25. int Fm;         //偏差計算
  26. int du;         //畫圓弧的度數
  27. int R;          //半徑
  28. byte comdata[100]={0};//定義數組數據,存放串口接收數據
  29. int mode;       //選擇要畫直線還是畫圓弧
  30. int highx=0;    //橫軸脈沖高電平寬度
  31. int lowx=0;     //橫軸脈沖低電平寬度
  32. int highy=0;    //縱軸脈沖高電平寬度
  33. int lowy=0;     //縱軸脈沖低電平寬度
  34. int fenliang=0; //用來計算通信時發送的字符串里的數值

  35. void receive_data(void);      //接受串口數據  
  36. void count(byte  *data);      //對串口數據進行處理
  37. void qudong(void);                //對驅動進行設置
  38. void directrun(int p,int q);  //先X軸后Y軸運動到指定坐標

  39. void circle(void);            //插補法圓弧運動到指定坐標(Xm,Ym一開始為絕對起點坐標,Xe,Ye一開始為圓心坐標)
  40. void Npan(void);              //判斷圓弧運動的N值
  41. void xiangxian1(void);        //第一象限圓弧運動(當步數大于0時執行,點在Y軸或步數為0時停止)
  42. void xiangxian2(void);        //第二象限圓弧運動(當步數大于0時執行,點在X軸或步數為0時停止)
  43. void xiangxian3(void);        //第三象限圓弧運動(當步數大于0時執行,點在Y軸或步數為0時停止)
  44. void xiangxian4(void);        //第四象限圓弧運動(當步數大于0時執行,點在X軸或步數為0時停止)

  45. void stringrun(void);            //插補法直線運動到指定坐標
  46. void runx1(void);                 //X軸正方向前進一步
  47. void runx2(void);                 //X軸負方向前進一步
  48. void runy1(void);                 //Y軸正方向前進一步
  49. void runy2(void);                 //Y軸負方向前進一步

  50. void setup()  
  51. {  
  52.    Serial.begin(9600);//Serial.begin(9600)開啟串口,通常置于設置()函數中。
  53.    //X軸
  54.    pinMode(DirX,OUTPUT); // Dir  
  55.    pinMode(StepX,OUTPUT); // Step  
  56.    pinMode(EnableX,OUTPUT); // Enable
  57.    pinMode(ms1X,OUTPUT); // ms1
  58.    pinMode(ms2X,OUTPUT); // ms2
  59.    pinMode(ms3X,OUTPUT); // ms3
  60.    pinMode(sleepX,OUTPUT); // sleep
  61.    pinMode(resetX,OUTPUT); // reset
  62.    digitalWrite(DirX,HIGH); // Set Dir high
  63.    digitalWrite(EnableX,LOW); // Set Enable low
  64.    digitalWrite(ms1X,LOW); // Set ms1 low
  65.    digitalWrite(ms2X,LOW); // Set ms2 high
  66.    digitalWrite(ms3X,LOW); // Set ms3 low
  67.    digitalWrite(sleepX,HIGH); // Set sleep low
  68.    digitalWrite(resetX,HIGH); // Set reset low
  69.    
  70.    //Y軸
  71.    pinMode(DirY,OUTPUT); // Dir  
  72.    pinMode(StepY,OUTPUT); // Step  
  73.    pinMode(EnableY,OUTPUT); // Enable
  74.    pinMode(ms1Y,OUTPUT); // ms1
  75.    pinMode(ms2Y,OUTPUT); // ms2
  76.    pinMode(ms3Y,OUTPUT); // ms3
  77.    pinMode(sleepY,OUTPUT); // sleep
  78.    pinMode(resetY,OUTPUT); // reset
  79.    digitalWrite(DirY,HIGH); // Set Dir high
  80.    digitalWrite(EnableY,LOW); // Set Enable low
  81.    digitalWrite(ms1Y,LOW); // Set ms1 low
  82.    digitalWrite(ms2Y,LOW); // Set ms2 high
  83.    digitalWrite(ms3Y,LOW); // Set ms3 low
  84.    digitalWrite(sleepY,HIGH); // Set sleep low
  85.    digitalWrite(resetY,HIGH); // Set reset low   
  86. }
  87.   
  88. void loop()  
  89. {  
  90.      if(Serial.available())  //Serial.available判斷串口緩沖器的狀態函數,用以判斷數據是否送達串口
  91.      {  
  92.         receive_data(); //接受數據
  93.         qudong();       //驅動設置
  94.         count(comdata); //數據處理
  95.         if(mode==0)     //直線模式
  96.            stringrun();
  97.         if(mode==1)     //圓弧模式
  98.            circle();
  99.         Fm=0;
  100.         highx=0;
  101.         highy=0;
  102.         lowx=0;
  103.         lowy=0;
  104.         X=0;
  105.         Y=0;
  106.         Xm=0;
  107.         Ym=0;
  108.         Xe=0;
  109.         Ye=0;
  110.         du=0;
  111.    }
  112. }

  113. void circle(void)   //插補法圓弧運動到指定坐標(Xm,Ym一開始為絕對起點坐標,Xe,Ye一開始為圓心坐標)
  114. {
  115.     digitalWrite(DirX,HIGH); // Set Dir high
  116.     digitalWrite(DirY,HIGH); // Set Dir high
  117.     directrun(Xm,Ym);   //運行到起點處
  118.     X=Xm;     //記錄絕對橫坐標
  119.     Y=Ym;     //記錄絕對縱坐標
  120.     Xm=Xm-Xe; //將Xm設成相對橫坐標
  121.     Ym=Ym-Ye; //將Ym設成相對縱坐標
  122.     Xe=Xm*cos(du);  //將Xe設成相對終點橫坐標
  123.     Ye=Ym*sin(du);  //將Ye設成相對終點縱坐標
  124.     R=sqrt(Xm^2+Ym^2);  //計算半徑
  125.     Npan();  //計算步數N
  126.     if(Xm>=0&&Ym>=0)  //起點在第一象限
  127.     {
  128.         xiangxian1();
  129.         xiangxian2();
  130.         xiangxian3();
  131.         xiangxian4();
  132.     }
  133.     if(Xm<=0&&Ym>=0)  //起點在第二象限
  134.     {
  135.         xiangxian2();
  136.         xiangxian3();
  137.         xiangxian4();
  138.         xiangxian1();
  139.     }
  140.     if(Xm<=0&&Ym<=0)  //起點在第三象限
  141.     {  
  142.         xiangxian3();
  143.         xiangxian4();
  144.         xiangxian1();
  145.         xiangxian2();
  146.     }
  147.     if(Xm>=0&&Ym<=0)  //起點在第四象限
  148.     {   
  149.         xiangxian4();
  150.         xiangxian1();
  151.         xiangxian2();
  152.         xiangxian3();
  153.     }
  154.     digitalWrite(DirX,LOW); // Set Dir high
  155.     digitalWrite(DirY,LOW); // Set Dir high
  156.     directrun(X,Y);   //回到原點  
  157. }

  158. void xiangxian1(void)     //第一象限(當步數大于0時執行,點在Y軸或步數為0時停止)
  159. {
  160.     if(N>0)
  161.     {
  162.         while(1)  
  163.         {           
  164.            if(Fm>=0)
  165.            {
  166.                runx2();
  167.                Fm=Fm-2*Xm+1;
  168.                Xm=Xm-1;
  169.                X=X-1;
  170.                N=N-1;
  171.            }
  172.            if(Fm<0)
  173.            {   
  174.                runy1();
  175.                Fm=Fm+2*Ym+1;
  176.                Ym=Ym+1;
  177.                Y=Y+1;
  178.                N=N-1;
  179.            }
  180.            if(Xm==0||N==0)
  181.                break;
  182.         }
  183.         Fm=0;
  184.     }  
  185. }

  186. void xiangxian2(void)     //第二象限(當步數大于0時執行,點在X軸或步數為0時停止)
  187. {
  188.     if(N>0)
  189.     {
  190.         while(1)  
  191.         {     
  192.            if(Fm>=0)
  193.            {
  194.                runy2();
  195.                Fm=Fm-2*Ym+1;
  196.                Ym=Ym-1;
  197.                Y=Y-1;
  198.                N=N-1;
  199.            }
  200.            if(Fm<0)
  201.            {   
  202.                runx2();
  203.                Fm=Fm-2*Xm+1;
  204.                Xm=Xm-1;
  205.                X=X-1;
  206.                N=N-1;
  207.            }
  208.            if(Ym==0||N==0)
  209.                break;
  210.         }
  211.         Fm=0;
  212.     }
  213. }

  214. void xiangxian3(void)     //第三象限(當步數大于0時執行,點在Y軸或步數為0時停止)
  215. {
  216.     if(N>0)
  217.     {
  218.         while(1)  
  219.         {   
  220.            if(Fm>=0)
  221.            {
  222.                runx1();
  223.                Fm=Fm+2*Xm+1;
  224.                Xm=Xm+1;
  225.                X=X+1;
  226.                N=N-1;
  227.            }
  228.            if(Fm<0)
  229.            {   
  230.                runy2();
  231.                Fm=Fm-2*Ym+1;
  232.                Ym=Ym-1;
  233.                Y=Y-1;
  234.                N=N-1;
  235.            }
  236.            if(Xm==0||N==0)
  237.                break;
  238.         }
  239.         Fm=0;
  240.     }
  241. }

  242. void xiangxian4(void)     //第四象限(當步數大于0時執行,點在X軸或步數為0時停止)
  243. {
  244.    if(N>0)
  245.    {
  246.        while(1)  
  247.        {         
  248.            if(Fm>=0)
  249.            {
  250.                 runy1();
  251.                 Fm=Fm+2*Ym+1;
  252.                 Ym=Ym+1;
  253.                 Y=Y+1;
  254.                 N=N-1;
  255.            }
  256.            if(Fm<0)
  257.            {   
  258.                 runx1();
  259.                 Fm=Fm+2*Xm+1;
  260.                 Xm=Xm+1;
  261.                 X=X+1;
  262.                 N=N-1;
  263.            }
  264.            if(Ym==0||N==0)
  265.                break;
  266.        }
  267.        Fm=0;
  268.    }  
  269. }

  270. void Npan(void)     //判斷圓弧運動的N值
  271. {
  272.     if(Xm>=0&&Ym>=0)  //起點在第一象限
  273.     {
  274.         if(Xe>=0&&Ye>=0)  //終點在第一象限
  275.         {
  276.             if(Xe>Xm)
  277.                N=Xm+R-Ym+6*R+R-Xe+Ye;
  278.             if(Xe<=Xm)
  279.                N=Xm-Xe+Ye-Ym;
  280.         }
  281.         if(Xe<=0&&Ye>=0)  //終點在第二象限
  282.             N=Xm-Xe+2*R-Ye-Ym;
  283.         if(Xe<=0&&Ye<=0)  //終點在第三象限
  284.             N=Xm+R-Ym+2*R+R-abs(Xe)+abs(Ye);
  285.         if(Xe>=0&&Ye<=0)  //終點在第四象限
  286.             N=Xm+R-Ym+4*R+Xe+R-abs(Ye);
  287.     }
  288.    
  289.     if(Xm<=0&&Ym>=0)  //起點在第二象限
  290.     {
  291.         if(Xe>=0&&Ye>=0)  //終點在第一象限
  292.             N=R-abs(Xm)+Ym+4*R+R-Xe+Ye;
  293.         if(Xe<=0&&Ye>=0)  //終點在第二象限
  294.         {
  295.             if(Xe>Xm)
  296.                N=R-abs(Xm)+Ym+6*R+abs(Xe)+R-Ye;
  297.             if(Xe<Xm)
  298.                N=Xm-Xe+Ym-Ye;
  299.         }   
  300.         if(Xe<=0&&Ye<=0)  //終點在第三象限
  301.             N=R-abs(Xm)+R-abs(Xe)+Ym+abs(Ye);
  302.         if(Xe>=0&&Ye<=0)  //終點在第四象限
  303.             N=R-abs(Xm)+Ym+2*R+Xe+R-abs(Ye);
  304.     }
  305.    
  306.     if(Xm<=0&&Ym<=0)  //起點在第三象限
  307.     {
  308.         if(Xe>=0&&Ye>=0)  //終點在第一象限
  309.             N=abs(Xm)+R-abs(Ym)+2*R+R-Xe+Ye;
  310.         if(Xe<=0&&Ye>=0)  //終點在第二象限
  311.             N=abs(Xm)+R-abs(Ym)+4*R+abs(Xe)+R-Ye;   
  312.         if(Xe<=0&&Ye<=0)  //終點在第三象限
  313.         {
  314.             if(Xe>Xm)
  315.                N=Xe-Xm+Ym-Ye;
  316.             if(Xe<Xm)
  317.                N=abs(Xm)+R-abs(Ym)+6*R+R-abs(Xe)+abs(Ye);
  318.         }
  319.         if(Xe>=0&&Ye<=0)  //終點在第四象限
  320.             N=abs(Xm)+R-abs(Ym)+Xe+R-abs(Ye);
  321.     }
  322.    
  323.     if(Xm>=0&&Ym<=0)  //起點在第四象限
  324.     {
  325.         if(Xe>=0&&Ye>=0)  //終點在第一象限
  326.             N=R-Xm+abs(Ym)+R-Xe+Ye;
  327.         if(Xe<=0&&Ye>=0)  //終點在第二象限
  328.             N=R-Xm+abs(Ym)+2*R+abs(Xe)+R-Ye;   
  329.         if(Xe<=0&&Ye<=0)  //終點在第三象限
  330.             N=R-Xm+abs(Ym)+4*R+R-abs(Xe)+abs(Ye);
  331.         if(Xe>=0&&Ye<=0)  //終點在第四象限
  332.         {
  333.             if(Xe>Xm)
  334.                N=Xe-Xm+Ye-Ym;
  335.             if(Xe<Xm)
  336.                N=R-Xm+abs(Ym)+6*R+R-abs(Ye)+Xe;
  337.         }
  338.     }
  339.     if(Xm==Xe&&Ym==Ye)  //起點和終點重合
  340.         N=8*R;  
  341. }

  342. void stringrun(void)   //插補法直線運動到指定坐標
  343. {
  344.     N=abs(Xe-Xm)+abs(Ye-Ym);
  345.     digitalWrite(DirX,HIGH); // Set Dir high
  346.     digitalWrite(DirY,HIGH); // Set Dir high
  347.     directrun(Xm,Ym);        //到起點位置
  348.     X=Xm;
  349.     Y=Ym;
  350.     while(N>0)       //運行到終點位置
  351.     {
  352.         if(Fm>=0)
  353.         {
  354.            runx1();
  355.            X=X+1;
  356.            N=N-1;
  357.            Fm=Fm-Ye;
  358.         }   
  359.         if(Fm<0)
  360.         {
  361.            runy1();
  362.            Y=Y+1;
  363.            N=N-1;
  364.            Fm=Fm+Xe;
  365.         }  
  366.     }
  367.     digitalWrite(DirX,LOW); // Set Dir low
  368.     digitalWrite(DirY,LOW); // Set Dir low
  369.     directrun(X,Y);         //回歸到原點位置  
  370. }

  371. void directrun(int p,int q)  //先X軸后Y軸運動到指定坐標
  372. {
  373.      for(i=0;i<p;i++)
  374.      {
  375.         digitalWrite(StepX,HIGH); // Step high  
  376.         delayMicroseconds(highx); // Wait 1/2 a ms  
  377.         digitalWrite(StepX,LOW);  // Step low  
  378.         delayMicroseconds(lowx);  // Wait 1/2 a ms
  379.      }
  380.      delay(1000); // pause one second
  381.      for(i=0;i<q;i++)
  382.      {
  383.         digitalWrite(StepY,HIGH); // Step high  
  384.         delayMicroseconds(highy); // Wait 1/2 a ms  
  385.         digitalWrite(StepY,LOW);  // Step low  
  386.         delayMicroseconds(lowy);  // Wait 1/2 a ms
  387.      }
  388.      delay(1000); // pause one second
  389. }

  390. void runx1(void)  //X軸正方向前進一步
  391. {              
  392.      digitalWrite(DirX,HIGH); // Set Dir low
  393.      digitalWrite(StepX,HIGH); // Step high  
  394.      delayMicroseconds(highx); // Wait 1/2 a ms  
  395.      digitalWrite(StepX,LOW);  // Step low
  396.      delayMicroseconds(lowx); // Wait 1/2 a ms  
  397. }

  398. void runx2(void)  //X軸負方向前進一步
  399. {              
  400.      digitalWrite(DirX,LOW); // Set Dir low
  401.      digitalWrite(StepX,HIGH); // Step high  
  402.      delayMicroseconds(highx); // Wait 1/2 a ms  
  403.      digitalWrite(StepX,LOW);  // Step low
  404.      delayMicroseconds(lowx); // Wait 1/2 a ms  
  405. }
  406.                
  407. void runy1(void)  //Y軸正方向前進一步
  408. {            
  409.      digitalWrite(DirY,HIGH); // Set Dir high
  410.      digitalWrite(StepY,HIGH); // Step high  
  411.      delayMicroseconds(highy); // Wait 1/2 a ms  
  412.      digitalWrite(StepY,LOW);  // Step low
  413.      delayMicroseconds(lowy); // Wait 1/2 a ms
  414. }

  415. void runy2(void)  //Y軸負方向前進一步
  416. {            
  417.      digitalWrite(DirY,LOW); // Set Dir high
  418.      digitalWrite(StepY,HIGH); // Step high  
  419.      delayMicroseconds(highy); // Wait 1/2 a ms  
  420.      digitalWrite(StepY,LOW);  // Step low
  421.      delayMicroseconds(lowy); // Wait 1/2 a ms  
  422. }
  423.                
  424. void receive_data(void)      
  425. {
  426.    for(i=0;i<100; )
  427.    {
  428.       comdata[i]=Serial.read();
  429.       delay(2);//延時一會,讓串口緩存準備好下一個字節,不延時可能會導致數據丟失
  430.       i++;
  431.       if(comdata[0]==0)
  432.       {
  433.         if(i==15+comdata[4]+comdata[5]+comdata[6]+comdata[7]+comdata[11]+comdata[12]+comdata[13]+comdata[14])
  434.           break;
  435.       }
  436.       else
  437.       {
  438.         if(i==18+comdata[4]+comdata[5]+comdata[6]+comdata[7]+comdata[11]+comdata[12]+comdata[13]+comdata[14])
  439.           break;
  440.       }
  441.    }
  442. }


  443. void count(byte  *data)
  444. {     
  445.         //x軸
  446.         for(i=0;i<data[4];i++)  //計算高電平寬度
  447.         {
  448.            fenliang=data[15+i]*pow(10,data[4]-i-1);
  449.            highx=highx+fenliang;
  450.         }
  451.         for(i=0;i<data[5];i++)  //計算低電平寬度
  452.         {
  453.           fenliang=data[15+data[4]+i]*pow(10,data[5]-i-1);
  454.           lowx=lowx+fenliang;
  455.         }  
  456.         for(i=0;i<data[6];i++)  //計算橫坐標起點位置
  457.         {
  458.           fenliang=data[15+data[4]+data[5]+i]*pow(10,data[6]-i-1);
  459.           Xm =Xm+ fenliang;
  460.         }
  461.         for(i=0;i<data[7];i++)  //計算橫坐標終點位置
  462.         {
  463.           fenliang=data[15+data[4]+data[5]+data[6]+i]*pow(10,data[7]-i-1);
  464.           Xe =Xe+ fenliang;
  465.         }   
  466.          
  467.        //y軸
  468.        for(i=0;i<data[11];i++)  //計算高電平寬度
  469.         {
  470.            fenliang=data[15+data[4]+data[5]+data[6]+data[7]+i]*pow(10,data[11]-i-1);
  471.            highy=highy+fenliang;
  472.         }
  473.         for(i=0;i<data[12];i++)  //計算低電平寬度
  474.         {
  475.           fenliang=data[15+data[4]+data[5]+data[6]+data[7]+data[11]+i]*pow(10,data[12]-i-1);
  476.           lowy=lowy+fenliang;
  477.         }  
  478.         for(i=0;i<data[13];i++)  //計算縱坐標起點位置
  479.         {
  480.           fenliang=data[15+data[4]+data[5]+data[6]+data[7]+data[11]+data[12]+i]*pow(10,data[13]-i-1);
  481.           Ym =Ym+ fenliang;
  482.         }
  483.         for(i=0;i<data[14];i++)  //計算縱坐標終點位置
  484.         {
  485.           fenliang=data[15+data[4]+data[5]+data[6]+data[7]+data[11]+data[12]+data[13]+i]*pow(10,data[14]-i-1);
  486.           Ye =Ye+ fenliang;
  487.         }

  488.         for(i=0;i<data[15+data[4]+data[5]+data[6]+data[7]+data[11]+data[12]+data[13]+data[14]];i++)  //計算度數
  489.         {
  490.           fenliang=data[16+data[4]+data[5]+data[6]+data[7]+data[11]+data[12]+data[13]+data[14]+i]*pow(10,data[15+data[4]+data[5]+data[6]+data[7]+data[11]+data[12]+data[13]+data[14]]-i-1);
  491.           du =du+ fenliang;
  492.         }
  493. }
  494.    
  495.      
  496. void qudong(void)
  497. {
  498.         if(comdata[0]==0)
  499.          mode=0;  // 直線模式
  500.        else
  501.           mode=1; // 圓弧模式
  502.        if(comdata[1]==0)  // 全步進
  503.        {
  504.          digitalWrite(ms1X,LOW);
  505.          digitalWrite(ms2X,LOW);
  506.          digitalWrite(ms3X,LOW);
  507.        }
  508.        if(comdata[1]==1)  // 半步進
  509.        {
  510.          digitalWrite(ms1X,HIGH);
  511.          digitalWrite(ms2X,LOW);
  512.          digitalWrite(ms3X,LOW);
  513.        }
  514.        if(comdata[1]==2)  // 四分之一步進
  515.        {
  516.          digitalWrite(ms1X,LOW);
  517.          digitalWrite(ms2X,HIGH);
  518.          digitalWrite(ms3X,LOW);
  519.        }
  520.        if(comdata[1]==3)  // 八分之一步進
  521.        {
  522.          digitalWrite(ms1X,HIGH);
  523.          digitalWrite(ms2X,HIGH);
  524.          digitalWrite(ms3X,LOW);
  525.        }
  526.        if(comdata[1]==4)  // 十六分之一步進
  527.        {
  528.          digitalWrite(ms1X,HIGH);
  529.          digitalWrite(ms2X,HIGH);
  530.          digitalWrite(ms3X,HIGH);  
  531.        }
  532.        if(comdata[2]==1)
  533.          digitalWrite(sleepX,HIGH); // Set sleep high
  534.        else
  535.          digitalWrite(sleepX,LOW); // Set sleep low
  536.        if(comdata[3]==1)
  537.          digitalWrite(resetX,HIGH); // Set reset high
  538.        else
  539.          digitalWrite(resetX,LOW); // Set reset low

  540.          //y軸
  541.        if(comdata[8]==0)  // 全步進
  542.        {
  543.          digitalWrite(ms1Y,LOW);
  544.          digitalWrite(ms2Y,LOW);
  545.          digitalWrite(ms3Y,LOW);
  546.        }
  547.        if(comdata[8]==1)  // 半步進
  548.        {
  549.          digitalWrite(ms1Y,HIGH);
  550.          digitalWrite(ms2Y,LOW);
  551.          digitalWrite(ms3Y,LOW);
  552.        }
  553.        if(comdata[8]==2)  // 四分之一步進
  554.        {
  555.          digitalWrite(ms1Y,LOW);
  556.          digitalWrite(ms2Y,HIGH);
  557.          digitalWrite(ms3Y,LOW);
  558.        }
  559.        if(comdata[8]==3)  // 八分之一步進
  560.        {
  561.          digitalWrite(ms1Y,HIGH);
  562.          digitalWrite(ms2Y,HIGH);
  563.          digitalWrite(ms3Y,LOW);
  564.        }
  565.        if(comdata[8]==4)  // 十六分之一步進
  566.        {
  567.          digitalWrite(ms1Y,HIGH);
  568.          digitalWrite(ms2Y,HIGH);
  569.          digitalWrite(ms3Y,HIGH);  
  570.        }
  571.        if(comdata[9]==1)
  572.          digitalWrite(sleepY,HIGH); // Set sleep high
  573.        else
  574.          digitalWrite(sleepY,LOW); // Set sleep low
  575.        if(comdata[10]==1)
  576.          digitalWrite(resetY,HIGH); // Set reset high
  577.        else
  578.          digitalWrite(resetY,LOW); // Set reset low

  579. }
復制代碼

所有資料51hei提供下載:
test 0405.rar (103.78 KB, 下載次數: 23)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看国产视频 | 一区视频 | 免费的日批视频 | 黄在线免费观看 | 精品一区国产 | 亚洲一区 中文字幕 | 全免费a级毛片免费看视频免费下 | 免费人成在线观看网站 | 欧美日韩亚洲国产综合 | www.久久久久久久久 | 国产精品中文字幕在线观看 | 欧美一区视频在线 | 日韩欧美网 | 色综合久久天天综合网 | 久久久久久久久久久久久9999 | 欧美日韩在线精品 | 午夜精品久久久久久久久久久久 | 国产一二三区在线 | 美女福利网站 | 国产精品毛片一区二区在线看 | 夜夜草| 成人免费视频网站在线看 | 国产精品视频999 | 免费啪啪 | 精品国产一区二区三区久久狼黑人 | 日韩欧美三级电影在线观看 | 一区二区国产精品 | 在线色网 | 福利片一区二区 | 精品国产乱码久久久久久闺蜜 | 浴室洗澡偷拍一区二区 | 亚洲不卡视频 | 日本在线观看网址 | 久久精品欧美电影 | 丝袜美腿av | 91久久精品国产91久久性色tv | 成人精品国产 | 涩涩鲁亚洲精品一区二区 | 国产高清免费视频 | 免费看色 | 99久久中文字幕三级久久日本 |