9_STM32cubeIDE_步進電機(驅動ic:ULN2003),舵機

1_步進電機(驅動ic:ULN2003)


請參考這個視頻博客地址bash

1.1_360度旋轉(半驅)

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		for (int i=0; i<512; i++)
		{
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

	}

		HAL_Delay (1000);
  }
  /* USER CODE END 3 */
}
複製代碼

1.2_旋轉特定角度(半驅)

想要將電機旋轉一個特定的角度,即10度。全部你須要作的是數學,因此對於10度旋轉,咱們須要(10 /(360/512))序列,即14個序列。 此外,若是要更改每分鐘轉速,則須要更改步驟之間的時間延遲。ide

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		for (int i=0; i<14; i++)
		{
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
		HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

		HAL_Delay (1);

	}

		HAL_Delay (1000);
  }
  /* USER CODE END 3 */
}
複製代碼

2_舵機


2.1_SG90

請參考這個視頻博客地址oop

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  htim2.Instance->CCR1 = 25;
	  HAL_Delay(2000);
	  htim2.Instance->CCR1 = 75;
	  HAL_Delay(2000);
	  htim2.Instance->CCR1 = 125;
	  HAL_Delay(2000);
  }
  /* USER CODE END 3 */
}
複製代碼

相關文章
相關標籤/搜索