本片文章主要介绍一下光敏电阻自动检测光照,当光亮时关闭窗帘(步进电机顺时针一定角度),当光暗时关闭窗帘功能(步进电机逆时针一定角度)
单片机使用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有反向功能)
//====================================================================&#