每次有想法,而且想要实现的时候,要先把具体实现功能,实施步骤写清楚,百度一个项目书之类的仿写,不然实施的时候就无从下手,东一榔头西一棒子的,遇到问题就要躲避,没有一点思路。
v1.0实现功能:
屏幕上按键控制三轴的运动,可以控制方向、速度、方向,每次只能一个轴动作。按运动键置位按下键的标志位,同时屏蔽其他两轴的标志位。电机单独控制,尽量不设置正反向,确定方向。屏幕显示当前设置的状态速度、正反、启停情况。
步骤:
1、屏幕与单片机的数据通信
2、屏幕布局
3、步进点击调速控制
4、直流电机控制
5、联合调试控制,触屏控制运动且显示实时数据
暂时想法:
点击设置n后会置位相应的置位标志位,表明此后的设置是对应相应的轴或电机,然后就可以继续点击设置速度(pwm)、正反键,速度设置可以使用进度条进行粗调,然后加减键进行细调,点击运动n按钮后,对应的电机或轴的步进电机就会运动,三轴暂时只有一个轴进行运动
协议
设置1: ff ff 00 01 01 01
设置2: ff ff 00 01 01 02
设置3: ff ff 00 01 01 03
设置4: ff ff 00 01 01 04
运动1: ff ff 00 01 01 05
运动2: ff ff 00 01 01 06
运动3: ff ff 00 01 01 07
运动4: ff ff 00 01 01 08
正: ff ff 00 01 01 09
反: ff ff 00 01 01 0a
加: ff ff 00 01 01 0b
减: ff ff 00 01 01 0c
停: ff ff 00 01 01 0d
滑块: ff ff 00 01 01 0e
接收到数据后,置位相应的标志位,清空别的标志位以此来区分,加减停后。
从标志位swicth得到要停止或加减设置的相应属性
返回数据显示到text内,返回数据协议
X轴:ff ff 04 01 00 00
Y轴:ff ff 04 02 00 00
Z轴:ff ff 04 03 00 00
电机:ff ff 04 04 00 00
XX XX XX XX XX XX
头 头 模式次序数据数据
数据解析
//协议头(2字节) 命令(2字节) 数据长度(1字节) 数据(N) 校验(1字节 可选)
//0xFF 0xFF CmdH CmdL len data0 data0 checksum
//0 1 2 3 4 5 6
协议解析函数为一个文件,专门解析数据,并且解析后调用相应的函数。
1、串口中接收数据;
2、判断数据头是否有问题,正确继续接受;
3、继续接收数据,接收到第5个数据时可以知道数据的后面的带有几个参数。
4、接收完数据后,相应数据放置到对应的数据位。
设置1、设置2、设置3、设置4都有相应的标志位;
v2.0实现功能:
增加设定移动距离,显示计数移动距离。
计算机分为大端和小端两种方式存储,主要跟cpu的内部指令有关,那么下面具体说一下这两种存储方式的区别。
大端模式和小端模式。
大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。
更换步进电机代码
- 写代码首先要搞清需求功能,根据功能理清楚代码架构,以及需要什么哪些函数控制,
- a-头文件:定义引脚控制的宏,几个引脚,控制函数
- b-文件,在定时器实现三个可控pwm频率的波形,一个函数实现对pwm频率的控制,一个函数实现停止启动,一个函数实现的控制步进模式控制,
- 解析函数对数据的解析。