stm32自动步进电机窗帘系统

本片文章主要介绍一下光敏电阻自动检测光照,当光亮时关闭窗帘(步进电机顺时针一定角度),当光暗时关闭窗帘功能(步进电机逆时针一定角度)

单片机使用st32c8t6

步进电机使用ULN2003

先上视频效果

代码

motor.c

#include "motor.h"
#include "gpio.h"


#define STEP_MOTOR_A_PIN          GPIO_PIN_3     /*橙色*/
#define STEP_MOTOR_B_PIN          GPIO_PIN_4     /*黄色*/
#define STEP_MOTOR_C_PIN          GPIO_PIN_5     /*粉色*/
#define STEP_MOTOR_D_PIN          GPIO_PIN_6     /*蓝色*/

#define STEP_MOTOR_SPEED          2

#define STEP_MOTOR_DIRE_FOREWARD  1     /*步进电机正向转:顺时针*/
#define STEP_MOTOR_DIRE_ROLLBACK  2     /*步进电机正向转:逆时针*/

unsigned char MotorStepCount = 0;


//uint8_t motor_number(void)
//{
//	uint8_t motor_flag1 = 2;
// if(motor_flag1==0)
//	 {
//    Walkmotor_ON();
//		 motor_flag1=2;
// }
// else if(motor_flag1==1)
//	 {
//      Walkmotor_OFF();
//	  motor_flag1=2;
//}
//	 else
//	 {
//	 step_motor_stop();
//	 } step_motor_stop();
//	 return motor_flag1;
//	 }

void Motorcw(void)
{
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET); 
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
	HAL_Delay(1);
	
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET); 
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
	HAL_Delay(1);
	
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET); 
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
	HAL_Delay(1);
	
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET); 
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);
	HAL_Delay(1);
	
}

//========================================================================
// 简述: 步进电机驱动
// 参数: dire:步进电机方向   speed:步进电机转速
// 返回: 无
// 详述: 
//========================================================================

void step_motor_drive(unsigned char dire,unsigned char speed)
{
   switch(dire)
	 {
		 case STEP_MOTOR_DIRE_FOREWARD:
		 {
			  step_motor_foreward(speed);
		    break;
		 }
		 case STEP_MOTOR_DIRE_ROLLBACK:
		 {
			  step_motor_rollback(speed);
		    break;
		 }
		 default:
			  break;
	 }
}

//========================================================================
// 简述: 步进电机停止
// 参数: 无
// 返回: 无
// 详述: (ULN2003有反向功能)
//====================================================================&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值