// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 包含头文件(Includes)// 基本资源定义(Definition of basic resources)// 机器人型号:HGR-3M-C-1// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈#include <reg52.h>// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 宏定义(Acer definition)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈#define uchar unsigned char#define uint unsigned int#define HIGH 1 //高电平(Logic high)#define LOW 0 //低电平(Logic low)#define FALSE 0 //假#define TRUE ~FALSE //真// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 函数声明(Function declaration)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈extern void delay_8us(); //把delay_8us()声明为外部函数extern void delay_20us(); //把delay_20us()声明为外部函数extern void delay_200us(); //把delay_200us()声明为外部函数extern void delay_490us(); //把delay_490us()声明为外部函数extern void delay_500us(); //把delay_500us()声明为外部函数extern void delay_1ms(); //把delay_1ms()声明为外部函数extern void delay_2ms(); //把delay_2ms()声明为外部函数extern void delay_5ms(); //把delay_5ms()声明为外部函数extern void delay_10ms(); //把delay_10ms()声明为外部函数extern void delay_200ms(); //把delay_200ms()声明为外部函数extern void delay_500ms(); //把delay_500ms()声明为外部函数extern void delay_1000ms(); //把delay_1000ms()声明为外部函数// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 全局变量定义(Global variables defined)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈uchar position[24]={0}; //用于记录24个舵机的位置/* 数组对应端口说明: ━━━━━>> P1.0 z1舵机 汇编存储器 40H position[1] ━━━━━>> P1.1 z2舵机 41H position[2] ━━━━━>> P1.2 z3舵机 42H position[3] ━━━━━>> P1.3 z4舵机 43H position[4] ━━━━━>> P1.4 z5舵机 44H position[5] ━━━━━>> P1.5 z6舵机 45H position[6] ━━━━━>> P1.6 z7舵机 46H position[7] ━━━━━>> P1.7 z8舵机 47H position[8] ━━━━━>> P2.0 p1舵机 48H position[9] ━━━━━>> P2.1 p2舵机 49H position[10] ━━━━━>> P2.2 p3舵机 4AH position[11] ━━━━━>> P2.3 p4舵机 4BH position[12] ━━━━━>> P2.4 p5舵机 4CH position[13] ━━━━━>> P2.5 p6舵机 4DH position[14] ━━━━━>> P2.6 p7舵机 4EH position[15] ━━━━━>> P2.7 p8舵机 4FH position[16] ━━━━━>> P3.0 position[17] ━━━━━>> P3.1 position[18] ━━━━━>> P3.2 position[19] ━━━━━>> P3.3 position[20] ━━━━━>> P3.4 position[21] ━━━━━>> P3.5 position[22] ━━━━━>> P3.6 position[23] ━━━━━>> P3.7*/uchar kouchu[8];uchar uart[30]={0};uchar paixu_ncha[8]=0; //提供排序空间//关于扫尾值的参数uchar zsax=10 ; //14h,z平面sa修正参数uchar psax=8; //15h,p平面sa修正参数 交互2uchar zsag; //16h,z平面sa过渡参数uchar psag=27; //17h,p平面sa过渡参数uchar uartin;uchar uartout;unsigned char add;//红外线接收处理 红外线一共是4个字节的数据:包括,地址、地址的重复、数据、和数据的按位取反//变量定义:char inf_array[2] = 0; //红外线接收队列char inf_dizhi = 0; //确认最新数据char inf_dizhichou = 0;char inf_shuju = 0;char inf_shujuf = 0;char inf_dizhi_buf = 0; //缓冲区数据,有可能随时变化,不可相信char inf_dizhichou_buf = 0;char inf_shuju_buf = 0;char inf_shujuf_buf = 0;char inf_shunxu = 0; //输入次序,记录目前红外线接收的次序。int inf_zanshi = 0; //红外线数据暂时存储,在使用前应注意其值char inf_zanshi1 = 0; //另一个暂时数据,用来做校验char bdata inf_mode = 0; //红外线状态及控制变量,按位使用sbit inf_mode_en = inf_mode^7;sbit inf_mode_new = inf_mode^6;sbit inf_mode_cuowu = inf_mode^0;sbit P3_2 = P3^2;sbit P3_3 = P3^3;sbit P3_4 = P3^4;sbit TEST = P2^1;sbit fengming = P0^0;/***********************************************************************************/#define kaishizhi_l 100 //此值为引导码最低阈值#define kaishizhi_h 230 //此值为引导码最高阈值#define inf_lingzhi_l 0x07 //此值为"0"码最低阈值#define inf_lingzhi_h 0x17 //此值为"0"码最高阈值#define inf_yizhi_l 0x18 //此值为"1"码最低阈值#define inf_yizhi_h 0x27 //此值为"1"码最高阈值#define inf_code_0 0x0F#define inf_code_1 0x0E#define inf_code_2 0x99 //正常应该是0x10但是不知道为什么不成#define inf_code_3 0x01#define inf_code_4 0x02#define inf_code_5 0x03#define inf_code_6 0x04#define inf_code_7 0x05#define inf_code_8 0x06#define inf_code_9 0x07#define inf_code_10 0x08#define inf_code_11 0x09#define inf_code_12 0x0A#define inf_code_13 0x00#define inf_code_14 0x24#define inf_code_15 0x20#define inf_code_16 0x1E#define inf_code_17 0x18#define inf_code_18 0x1A#define inf_code_19 0x16#define inf_code_20 0x0B#define inf_code_21 0x12#define inf_code_22 0x10#define inf_code_23 0x11#define inf_code_24 0x0C#define inf_code_25 0x28#define inf_code_26 0x17#define inf_code_27 0x13/*************************************************************************************/// ─────────────────────────────────────────// 函数原型:void initial_mcu()// 函数名称:初始化函数(Initialization MCU Functions)// 功 能:单片机初始化// 参 数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_mcu( ){ P0 = 0x01; //四个口全赋值为零 P1 = 0x00; P2 = 0x00;// P3 = 0x01; PSW = 0x00; //选择00H->07H为工作寄存器组 ACC = 0x00; //A B寄存器为零 B = 0x00;// PCON = 0x00;// TCON = 0x00; SCON = 0x50; TMOD = 0x20;// TH1 = 0xe8; //11.0592晶振,1200波特率// TL1 = 0xe8; TH1 = 0xe6; //12M晶振 ,1200波特率 TL1 = 0xe6; TR1 =1; //启动定时器T1 ES=1; //允许串行口中断 PS=1; //设计串行口中断优先级 EA=1; uartin=0; uartout=0; }//───────────────────────────────────────//初始化红外线接收变量函数void init_inf(void){ inf_array[0]=0xFF; inf_array[1]=0xFF; inf_dizhi_buf = 0; inf_dizhichou_buf = 0; inf_shuju_buf = 0; inf_shujuf_buf = 0; inf_dizhi = 0; inf_dizhichou = 0; inf_shuju = 0; inf_shujuf = 0; inf_shunxu = 0; inf_mode_en = 1; //开红外线接收软件模块 inf_mode_cuowu = 0; //清除错误 /*我们需要使用两部分的硬件资源, 一是定时器1, 二是外部中断0, 下面是分别的初始化:*/ P3_3 = 1; P3_4 = 1; //初始化定时器1: TMOD = TMOD & 0x0F; //初始化定时器1的计数方式为方式1 TMOD = TMOD | 0x10; TH1 = 0x1F; //定时器高位 TL1 = 0xFF; //定时器低位 TR1 = 0; //关定时器1计数 IE = IE | 0x88; //总中断和定时器1要打开 //初始化外部中断1: IT1 = 1; //INT1的处罚方式为下降沿触发 IE = IE | 0x84; //总中断和外部中断1要打开}// ─────────────────────────────────────────// 函数原型:void sorting( )// 函数名称:排序子程序(Sorting Subroutine)// 功 能:对所有通道口的数值进行排序。// 参 数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void sorting( ){ uchar i=0,j=0,x=0; kouchu[0]=0xFE; kouchu[1]=0xFD; kouchu[2]=0xFB; kouchu[3]=0xF7; kouchu[4]=0xEF; kouchu[5]=0xDF; kouchu[6]=0xBF; kouchu[7]=0x7F; //冒泡法排序 for(i=0;i<=6;i++) for(j=i+1;j<=7;j++) { if(paixu_ncha[i]<paixu_ncha[j]) { //交换数据 x=paixu_ncha[j]; paixu_ncha[j]=paixu_ncha[i]; paixu_ncha[i]=x; x=kouchu[j]; kouchu[j]=kouchu[i]; kouchu[i]=x; } }}// ─────────────────────────────────────────// 函数原型:void N_value( )// 函数名称:N差子程序(N poor Subroutine)// 功 能:对临近数值做差,求出相对差值,用于延时。// 参 数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void N_value( ){ uchar i; for(i=0;i<=6;i++) { paixu_ncha[i]=paixu_ncha[i]-paixu_ncha[i+1]; }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// 函数原型:void PWM_16()// 函数名称:16路舵机输出子程序(16 Subroutine output Servos )// 功 能:对临近数值做差,求出相对差值,用于延时。控制端口P1、P2// 入口参数:foot,表示步数// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void PWM_16(){ uchar i=0,j=0; for(i=0;i<=7;i++) //给排序数组赋值 { paixu_ncha[i]=position[i]; } sorting( ); //调用排序函数 N_value( ); //调用N差函数 P1=0xff; //使口P1全部拉高 delay_500us(); //调用延时490us函数 for(i=0;i<8;i++) //延时输出到口P1(八路) { for(j=0;j<paixu_ncha[7-i];j++) { delay_8us(); } P1=P1&kouchu[7-i]; } for(i=0;i<8;i++) //给排序数组赋值 { paixu_ncha[i]=position[i+8]; } sorting( ); //调用排序函数 N_value( ); //调用N差函数 P2=0xff; //使口P2全部拉高 delay_500us(); //调用延时490us函数 for(i=0;i<8;i++) //延时输出到口P1(八路) { for(j=0;j<paixu_ncha[7-i];j++) { delay_8us(); } P2=P2&kouchu[7-i]; } for(i=0;i<1;i++) delay_500us(); }// ─────────────────────────────────────────// 函数原型:sao_wei(uchar saowei)// 函数名称:扫尾子程序// 功 能:控制舵机转动的速度和加速度// 影 响:// 入口参数:saowei,表示扫尾系数// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void sao_wei(uchar saowei){ uchar i; for(i=0;i<saowei;i++) delay_500us();}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/************************************************************************************//************************************************************************************///所谓函数群指的是一群实现功能相似或相反的函数集合/************************************************************************************/// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*复位函数群*/// 函数原型:void initial_position(uchar type,uchar time)// 函数名称:初始位置调整子程序// 功 能:按照入口参数的类型,选择不同的初始位置并调节。// 参 数:type<-用于决定初始位置类型(局部变量)。// time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:壹// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_position(uchar type,uchar time) { uchar i,j,k; for(i=0;i<time;i++) for(j=0;j<type;j++) for(k=0;k<30;k++) { /*P1口*/ // 标准 position[0]=131; //z1舵机 160 左腿 position[1]=45; //Z2舵机 47 position[2]=129; //z3舵机 135 position[3]=86; //Z4舵机 80 右腿 position[4]=175; //Z5舵机 158 position[5]=91; //Z6舵机 128 position[6]=225; //Z7舵机 220 左肩 position[7]=5; //Z8舵机 右肩 /*P2口*/ position[8]=105; //p1舵机 104 左脚板 position[9]=82; //p2舵机 104 position[10]=125; //p3舵机 146 右脚板 position[11]=111; //p4舵机 146 position[12]=190; //p5舵机 180 position[13]=108; //p6舵机 position[14]=25; //p7舵机 40 position[15]=120; //p8舵机 /*p3口*/ position[23]=110; PWM_16(); // sao_wei(100); } // while(1);}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*复位函数群*/// 函数原型:void initial_position1(uchar type,uchar time)// 函数名称:初始位置调整子程序1// 功 能:当下蹲以后,双腿会出现不对称现象,故加二次调整初始位置// 参 数:type<-用于决定初始位置类型(局部变量)。// time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:壹// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_position1(uchar type,uchar time) { uchar i,j,k; for(i=0;i<time;i++) for(j=0;j<type;j++) for(k=0;k<30;k++) { /*P1口*/ // 标准 position[0]=97; //z1舵机 160 左腿 position[1]=143; //Z2舵机 47 position[2]=181; //z3欢纡 135 position[3]=138; //Z4舵机 80 右腿 position[4]=92; //Z5舵机 158 position[5]=60; //Z6舵机 128 position[6]=190; //Z7舵机 左肩 position[7]=30; //Z8舵机 右肩 /*P2口*/ position[8]=147; //p1舵机 104 左脚板 position[9]=138; //p2舵机 104 position[10]=175; //p3舵机 146 右脚板 position[11]=109; //p4舵机 146 position[12]=166; //p5舵机 position[13]=100; //p6舵机 position[14]=60; //p7舵机 position[15]=130; //p8舵机 /*p3口*/ position[23]=110; PWM_16(); // sao_wei(100); } // while(1);}// 函数原型:void fw_hand(uchar type,uchar time)// 函数名称:双手复位子程序 // 功 能:双手复位// 参 数:type<-用于决定初始位置类型(局部变量)。// time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:贰// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void fw_hand(uchar type,uchar time) { uchar i,j,k; for(i=0;i<time;i++) for(j=0;j<type;j++) for(k=0;k<30;k++) { position[6]=220; //220 Z7舵机 左肩 position[7]=27; //Z8舵机 右肩 position[12]=195; //p5舵机 position[13]=95; //p6舵机 position[14]=55; //p7舵机 position[15]=160; //p8舵机 PWM_16(); }} // ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*下蹲和起立函数群*/// 函数原型:void xd_zu1(uchar foot))// 函数名称:下蹲第1族子程序。// 功 能:// 参 数:foot, 表示积分步数。// 返 回 值:无// 函数编号:一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void xd_zu1(uchar foot){ uchar i,j; j=foot/2+zsax; //z平面扫尾值初始化计算公式 28/2+6=20 for(i=0;i<foot;i++) { position[0]--; //z1 190+28=218 左腿下蹲 position[1]++; //z2 91+2*28=147 position[1]++; position[2]++; //z3 133-28=105 position[3]++; //z4 101-28=73 右腿下蹲 position[4]--; //z5 158-2*28=102 position[4]--; position[5]--; //z6 149+28=177 PWM_16(); if(j>5) { j--; sao_wei(j); //调用扫尾值计算子程序,最后zsag=5 zsag=j; } else { sao_wei(5); zsag=5; } }} // 函数原型:void xd_zu2(uchar foot))// 函数名称:下蹲第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值:无// 函数编号:二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void xd_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]--; //z1 218+28=246 左腿下蹲 position[1]++; //z2 147+2*28=203 position[1]++; position[2]++; //z3 105-28=77 position[3]++; //z4 73-28=45 右腿下蹲 position[4]--; //z5 102-2*28=46 position[4]--; position[5]--; //z6 177+28=205 PWM_16(); if(j<32) { j++; sao_wei(j); //调用扫尾值计算子程序 zsagwei为32 zsag=j; } else { sao_wei(32); zsag=32; } }} // 函数原型: void ql_zu1(uchar foot))// 函数名称: 起立第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ql_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 左褪起立 position[1]--; //z2 position[1]--; position[2]--; //z3 position[3]--; //z4 右腿起立 position[4]++; //z5 position[4]++; position[5]++; //z6 PWM_16(); if(j>35) { j--; sao_wei(j); //调用扫尾值计算子程序 j=zsag; } else { sao_wei(35); zsag=5; } }}// 函数原型:void ql_zu2(uchar foot)// 函数名称:起立第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ql_zu2(uchar foot){ uchar i,j=0; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 左褪起立 position[1]--; //z2 position[1]--; position[2]--; //z3 position[3]--; //z4 右腿起立 position[4]++; //z5 position[4]++; position[5]++; //z6 PWM_16(); if(j<32) { j++; sao_wei(j); //调用扫尾值计算子程序 zsag=j; } else { sao_wei(32); zsag=32; } }} // ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*侧身+摆手函数群*/ // 函数原型:void l_cs_r_bs_zu1(uchar foot)// 函数名称:向左侧身+右摆手第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void l_cs_r_bs_zu1(uchar foot){ uchar i,j; j=psag; //p平面扫尾值过渡 for(i=0;i<foot;i++) { position[8]--; //p1 134-30=104 左腿 position[9]++; //p2 134-30=04 position[10]--; //p3 176-30=146 右腿 position[11]++; //p4 176-30=146 position[12]++; //p5 position[14]++; //p7 PWM_16(); if(j>5) { j--; sao_wei(j); psag=j; //psag为20~5 } else { sao_wei(5); psag=5; } }}// 函数原型:void l_cs_r_bs_zu2(uchar foot)// 函数名称:向左侧身+右摆手第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void l_cs_r_bs_zu2(uchar foot){ uchar i,j; j=10; //p平面扫尾值初始化计算公式 15&127+8=135 for(i=0;i<foot;i++) { position[8]--; //p1 104-30=74 左腿 position[9]++; //p2 104-30=74 position[10]--; //p3 146-30=116 右腿 position[11]++; //p4 146-30=116 position[12]++; //p5 摆手 position[14]++; //p7 PWM_16(); if(j<32) { j++; sao_wei(j); //psag为5到20 psag=j; } else { sao_wei(32); psag=32; } }}// 函数原型:void r_cs_l_bs_zu1(uchar foot)// 函数名称:向右侧身+左摆手第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void r_cs_l_bs_zu1(uchar foot){ uchar i,j; j=psag; //p平面扫尾值过渡 for(i=0;i<foot;i++) { position[8]++; //p1 74+30=104 左腿 position[9]--; //p2 74+30=104 position[10]++; //p3 116+30=146 右腿 position[11]--; //p4 116+30=146 position[12]--; //p5 摆手 position[14]--; //p7 PWM_16(); if(j>6) { j--; sao_wei(j); psag=j; //psag为20~5 } else { sao_wei(6); psag=5; } }}// 函数原型:void r_cs_l_bs_zu2(uchar foot)// 函数名称:向右侧身+左摆手第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void r_cs_l_bs_zu2(uchar foot){ uchar i,j; j=psag; //p平面扫尾值过渡 for(i=0;i<foot;i++) { position[8]++; //p1 104+30=134 左腿 position[9]--; //p2 104+30=134 position[10]++; //p3 146+30=176 右腿 position[11]--; //p4 146+30=176 position[12]--; //p5 摆手 position[14]--; //p7 PWM_16(); if(j<20) { j++; sao_wei(j); psag=j; //psag为5~20 } else { sao_wei(20); psag=20; } }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*抬腿和落腿函数群*/// 函数原型:void lt_up_zu1(uchar foot)// 函数名称:左腿抬起第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_up_zu1(uchar foot){ uchar i,j; //z平面扫尾值初始化计算公式 j=(foot/2)+zsax; for(i=0;i<foot;i++) { position[0]--; //z1 position[1]++; //z2 position[1]++; position[2]++; //z3 PWM_16(); if(j>5) { j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void lt_up_zu2(uchar foot)// 函数名称:左腿抬起第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_up_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]--; //z1 position[1]++; //z2 position[1]++; position[2]++; //z3 PWM_16(); if(j<32) { j--; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// 函数原型:void rt_up_zu1(uchar foot)// 函数名称:右腿抬起第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_up_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[3]++; //z4 position[4]--; //z5 position[4]--; position[5]--; //z6 PWM_16(); if(j>5) { j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void rt_up_zu2(uchar foot)// 函数名称:右腿抬起第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_up_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[3]++; //z4 position[4]--; //z5 position[4]--; position[5]--; //z6 PWM_16(); if(j<32) { j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// 函数原型:void lt_dw_zu1(uchar foot)// 函数名称:左腿落下第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_dw_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 position[1]--; //z2 position[1]--; position[2]--; //z3 PWM_16(); if(j>5) { j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void lt_dw_zu2(uchar foot)// 函数名称:左腿落下第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_dw_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 position[1]--; //z2 position[1]--; position[2]--; //z3 PWM_16(); if(j<32) { j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// 函数原型:void rt_dw_zu1(uchar foot)// 函数名称:右腿落下第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_dw_zu1(uchar foot){ uchar i,j; //z平面扫尾值过渡 j=zsag; for(i=0;i<foot;i++) { position[3]--; //z4 position[4]++; //z5 position[4]++; position[5]++; //z6 PWM_16(); if(j>5) { j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void rt_dw_zu2(uchar foot)// 函数名称:右腿落下第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_dw_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[3]--; //z4 position[4]++; //z5 position[4]++; position[5]++; //z6 PWM_16(); if(j<32) { j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*前进中腿抬起和落下函数群*/// 函数原型:void ft_ru_zu1(uchar foot)// 函数名称:前进中右腿抬起第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu1(uchar foot){ uchar i,j; j=(foot/2)&127+zsax; //z平面扫尾值初始化计算公式 j=133 for(i=0;i<foot;i++) { position[0]++; //z1 246-10=236 左腿 position[2]++; //z3 77-10=67 position[3]++; //z4 45-2*10=25 右腿 position[3]++; position[4]--; //z5 46-2*10=26 position[4]--; PWM_16(); if(j>5) { j--; j--; sao_wei(j); // 最后zsag=113 抖动 zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void ft_ru_zu2(uchar foot)// 函数名称:前进中右腿抬起第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 236-10=226 左腿 position[2]++; //z3 67-10=57 position[3]++; //z4 25-2*10=5 右腿 position[3]++; position[4]--; //z5 26-2*10=6 position[4]--; PWM_16(); if(j<32) { j++; j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// 函数原型:void ft_rd_zu1(uchar foot)// 函数名称:前进中右腿落下第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 226-10=216 左腿 position[2]++; //z3 57-10=47 position[4]++; //z5 6+2*10=26 position[4]++; position[5]++; //z6 205-2*10=185 position[5]++; PWM_16(); if(j>5) { j--; j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void ft_rd_zu2(uchar foot)// 函数名称:前进中右腿落下第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]++; //z1 216-10=206 左腿 position[2]++; //z3 47-10=37 position[4]++; //z5 26+2*10=46 右腿 position[4]++; position[5]++; //z6 185-2*10=165 position[5]++; PWM_16(); if(j<32) { j++; j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=53; } }}// 函数原型:void ft_lu_zu1(uchar foot)// 函数名称:前进中左腿抬起第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]--; //z1 206+20=226 左腿 position[0]--; position[1]++; //z2 203+20=223 position[1]++; position[3]--; //z4 5+10=15 右腿 position[5]--; //z6 165+10=175 PWM_16(); if(j>5) { j--; j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void ft_lu_zu2(uchar foot)// 函数名称:前进中左腿抬起第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[0]--; //z1 226+20=246 左腿 position[0]--; position[1]++; //z2 223+20=243 position[1]++; position[3]--; //z4 15+10=25 右腿 position[5]--; //z6 175+10=185 PWM_16(); if(j<32) { j++; j++; sao_wei(j); zsag=j; } else { sao_wei(32); zsag=32; } }}// 函数原型:void ft_ld_zu1(uchar foot)// 函数名称:前进中左腿落下第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu1(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[1]--; //z2 243-20=223 左腿 position[1]--; position[2]--; //z3 37+20=57 position[2]--; position[3]--; //z4 25+10=35 右腿 position[5]--; //z6 185+10=195 PWM_16(); if(j>5) { j--; j--; sao_wei(j); zsag=j; } else { sao_wei(5); zsag=5; } }}// 函数原型:void ft_ld_zu2(uchar foot)// 函数名称:前进中左腿落下第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu2(uchar foot){ uchar i,j; j=zsag; //z平面扫尾值过渡 for(i=0;i<foot;i++) { position[1]--; //z2 223-20=203 左腿 position[1]--; position[2]--; //z3 57+20=77 position[2]--; position[3]--; //z4 35+10=45 右腿 position[5]--; //z6 195+10=205 PWM_16(); if(j<53) { j++; j++; sao_wei(j); zsag=j; } else { sao_wei(53); zsag=53; } }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*侧身+抬落腿+摆手函数群*/// 函数原型:void lc_ru(uchar foot)// 函数名称:左侧身+抬右腿+右摆手子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lc_ru_r_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[0]++; //z1 position[2]++; //z3 position[3]++; //z4 position[3]++; position[4]--; //z5 position[4]--; position[8]--; //p1 position[9]++; //p2 position[10]--; //p3 position[11]++; //p4 position[12]++; //p5 position[14]++; //p7 PWM_16(); if(j<40) { j+=2; sao_wei(j); psag=j; //psag为20~30 } else { sao_wei(40); psag=30; } }}// 函数原型:void rc_rd_l_bs(uchar foot)// 函数名称:右侧身+落右腿+左摆手子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rc_rd_l_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[0]++; //z1 position[2]++; //z3 position[4]++; //z5 position[4]++; position[5]++; //z6 position[5]++; position[8]++; //p1 position[9]--; //p2 position[10]++; //p3 position[11]--; //p4 position[12]--; //p5 position[14]--; //p7 PWM_16(); if(j>20) { j--; sao_wei(j); psag=j; //psag为30~20 } else { sao_wei(20); psag=20; } }}// 函数原型:void rc_lu_l_bs(uchar foot)// 函数名称:右侧身+抬左腿+左摆手子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rc_lu_l_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[3]--; //z4 position[5]--; //z6 position[0]--; //z1 position[0]--; position[1]++; //z2 position[1]++; position[8]++; //p1 position[9]--; //p2 position[10]++; //p3 position[11]--; //p4 position[12]--; //p5 position[14]--; //p7 PWM_16(); if(j<30) { j++; sao_wei(j); psag=j; //psag为20~30 } else { sao_wei(30); psag=30; } }}// 函数原型:void lc_ld_r_bs(uchar foot)// 函数名称:左侧身+落左腿+右摆手子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lc_ld_r_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[3]--; //z4 position[5]--; //z6 position[1]--; //z2 position[1]--; position[2]--; //z3 position[2]--; position[8]--; //p1 position[9]++; //p2 position[10]--; //p3 position[11]++; //p4 position[12]++; //p5 position[14]++; //p7 PWM_16(); if(j>20) { j--; sao_wei(j); psag=j; //psag为30~20 } else { sao_wei(20); psag=20; } }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ /*抬落腿前进+摆手函数群*/// 函数原型:void ft_ru_zu2_bs(uchar foot)// 函数名称:抬右腿前进+摆手第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu2_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[0]++; //z1 position[2]++; //z3 position[3]++; //z4 position[3]++; position[4]--; //z5 position[4]--; position[6]--; //z7 position[7]--; //z8 PWM_16(); if(j<40) { j++; sao_wei(j); zsag=j; //psag=30~40 } else { sao_wei(40); zsag=40; } }}// 函数原型:void ft_rd_zu1_bs(uchar foot)// 函数名称:落右腿前进+摆手第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu1_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[0]++; //z1 position[2]++; //z3 position[4]++; //z5 position[4]++; position[5]++; //z6 position[5]++; position[6]--; //z7 position[7]--; //z8 PWM_16(); if(j>30) { j--; sao_wei(j); psag=j; //psag=40~30 } else { sao_wei(30); psag=30; } }}// 函数原型:void ft_lu_zu2_bs(uchar foot)// 函数名称:抬左腿前进+摆手第2族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu2_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[3]--; //z4 position[5]--; //z6 position[0]--; //z1 position[0]--; position[1]++; //z2 position[1]++; position[6]++; //z7 position[7]++; //z8 PWM_16(); if(j<40) { j++; sao_wei(j); psag=j; //psag为30~40 } else { sao_wei(40); psag=40; } }}// 函数原型:void ft_ld_zu1_bs(uchar foot)// 函数名称:落左腿前进+摆手第1族子程序// 功 能:// 参 数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu1_bs(uchar foot){ uchar i,j; j=psag; //p平面扫尾过渡值,舍弃z平面过渡值 for(i=0;i<foot;i++) { position[3]--; //z4 position[5]--; //z6 position
导读:目前正在解读《机器人控制程序(舵机型)》的相关信息,《机器人控制程序(舵机型)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《机器人控制程序(舵机型)》的详细说明。
简介:这里给大家分享一个机器人控制程序(舵机型)。
提醒:《机器人控制程序(舵机型)》最后刷新时间 2024-03-14 01:02:35,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《机器人控制程序(舵机型)》该内容的真实性请自行鉴别。