c语言相关
static
1、加了static前缀的函数,例如:static void,则此函数只能在当前文件中使用
2、在定义变量前加了static前缀,则这些变量可在当前文件中的其他函数被调用
这些变量若在初始时未赋值,编译器自动赋值0;且在下次函数执行时该变量保持不变
extern
1、若在一个文件a.c中要引用b.c文件的int V;则要在a.c中声明变量,声明变量前加extern
例如extern int V(在头文件中做声明)
2、定义函数时前可加可不加extern
联合体union,枚举类型emua
~~~使用联合体union,不使用结构体struct?~~~
联合体union:解决“相同信息”的困扰,避免重复代码,提高代码的简洁性。
节省内存。
~~~~~~
联合体union只占位数最高的空间;结构体struct的内存是所有变量的总和
单片机
功能:执行、感知、计算、计时
控制器
(1)MCU:①GPIO:输入,输出
②定时器:时钟频率
③PWM:占空比(e.g:占空比为百分之90,则高电平9s,低电平1s)
④UART:数据帧、波特率
⑤CAN:总线、数据帧
高电平3.3v,低电平0v
MCU"="CPU
母头作为电源的输出
PID(无公式,靠手调和经验)
就是“比例(P)、积分(I)、微分(D)”,是一种很常见的控制算法。
P:使实际量往目标量靠近
I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值。
D的作用就是让物理量的速度趋于0
误差=实际值-目标值
通信
协议(语言)、数据、接受方、发送方
串口传输的波特率即为每秒钟传输二进制的位数。
CAN
CAN通讯是异步通讯,它由CAN_HIGH与CAN_LOW两条信号线组成。
步兵机器人
1、LED :提示(e.g.:闪动的次数代表 不同的信号)
2、串口通信+DMA
3、地盘
地盘和4个电机相连。
用CAN总线进行通信,将4个电机的数据通过CAN 总线传到主控板,主控板通过CAN总线把想要的数据传给4个电机。
云台和电机
圆的是云台,矩形为电机
空转:p小
负载:p大
电机和别的零件未拧紧,会抖(p大)
云台
角度 :yaw偏航角(左右转),pitch俯仰角(上下,抬头低头),roll横滚角
pid:{1、pitch角度2、目标角度(通过遥控器传来的)}
地盘跟随云台转动
云台跟随地盘转动