模拟电机正反转产生得到角度和圈数

通过状态机模拟电机正反转,电机角度从0开始递增,每到360度圈数加1;当达到指定圈数时反转,角度从360递减,圈数减1;再次达到特定值时返回正转。程序输出角度和圈数变化。
摘要由CSDN通过智能技术生成

使用简单的状态机仿真实现一个电机正反转。

1. 电机角度从0开始,每一个循环增加一个值,角度到360度时电机圈数值加1,角度又从0开始递增。

2.当电机圈数达到指定的圈数时,电机反转,角度从360度开始递减,递减到0时,圈数减1.

3.当电机圈数递减到一个给定的值时,电机正转,角度从0开始递增,以此循环。

#include "stdafx.h"
#include <iostream>
#include <windows.h>

/*电机状态定义*/
typedef enum MotorMode {
	STOP,
	POSTURN,
	NEGTURN,
}MotorMode;

/*定义一个结构体存储电机的角度值,圈数,正弦值,余弦值*/
typedef struct imulationSMB{
	double angle;
	double x;
	double y;
	int revcnt;
}SimulationSMB;

#define REVCNT_LIMIT_POS 10		/*电机正转圈数限值*/
#define REVCNT_LIMIT_NEG -10	/*电机反转圈数限值*/
#define MOTOR_STEP 1			/*电机角度递增值*/
#define PI 3.14159265

SimulationSMB SMBdata = {0};
SimulationSMB calSMBdata = { 0 };
MotorMode motorMode = STOP;

/*模拟电机转动的简单状态机,包含停止,正转和反转三种状态
停止状态会跳转到正转状态
在正转状态时,电机角度从0度开始,每循环一次递增MOTOR_STEP,角度到360时,圈数值增加1,,然后角度值又从0开始递增
在反转状态时,电机角度从360度开始
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值