step motor uygulamasi yapicaz.keypad uzerinden sag ve sol tuslarina basmakla birlikte full step olarak motoru iki yonde calistiricaz.
motor calistiginda yon bilgisine bagli olarak ledler yanip sonecektir ve bu animasyonu f1 ve f2 tusu ile kontrol edicez.

step motor calisirken ledlerde toogle yapiyor.toogle yapmasi kesme donaniminin calismasiyla alakalidir.

void TIM1_UP_TIM10_IRQHandler(void) {
	/* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */

	/* USER CODE END TIM1_UP_TIM10_IRQn 0 */
	HAL_TIM_IRQHandler(&htim1);
	/* USER CODE BEGIN TIM1_UP_TIM10_IRQn 1 */

	if (get_yon() == 1) {

		bir_birim_hareketi++;
		switch (bir_birim_hareketi) {
		case 1:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_SET);
			break;
		case 2:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_SET);
			break;
		case 3:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
			break;
		case 4:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
			bir_birim_hareketi = 0;
			break;
		}

	} else if (get_yon() == 2) {

		bir_birim_hareketi2++;
		switch (bir_birim_hareketi2) {
		case 4:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_SET);
			bir_birim_hareketi2 = 0;
			break;
		case 3:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_SET);
			break;
		case 2:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
			break;
		case 1:
			HAL_GPIO_WritePin(PEMBE_GPIO_Port, PEMBE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(TURUNCU_GPIO_Port, TURUNCU_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SARI_GPIO_Port, SARI_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
			break;
		}

	}

	/* USER CODE END TIM1_UP_TIM10_IRQn 1 */
}

/**
 * @brief This function handles TIM2 global interrupt.
 */
void TIM2_IRQHandler(void) {
	/* USER CODE BEGIN TIM2_IRQn 0 */

	/* USER CODE END TIM2_IRQn 0 */
	HAL_TIM_IRQHandler(&htim2);
	/* USER CODE BEGIN TIM2_IRQn 1 */

	sayim++;
	if (sayim == 150) {
		if (get_ledizin() == 1) {

			if (get_yon() == 1 && get_ledizin() == 1) {
				HAL_GPIO_WritePin(MAVI_GPIO_Port, MAVI_Pin, GPIO_PIN_RESET);

				HAL_GPIO_TogglePin(LKIRMIZI_GPIO_Port, LKIRMIZI_Pin);
			}
			if (get_yon() == 2 && get_ledizin() == 1) {
				HAL_GPIO_WritePin(LKIRMIZI_GPIO_Port, LKIRMIZI_Pin,
						GPIO_PIN_RESET);
				HAL_GPIO_TogglePin(MAVI_GPIO_Port, MAVI_Pin);
			}
			if (get_yon() == 0  ) {
				HAL_GPIO_WritePin(MAVI_GPIO_Port, MAVI_Pin, GPIO_PIN_RESET);
				HAL_GPIO_WritePin(LKIRMIZI_GPIO_Port, LKIRMIZI_Pin,
						GPIO_PIN_RESET);
			}

		}

		sayim = 0;
	}

	/* USER CODE END TIM2_IRQn 1 */
}

{Fikret Cure}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir