STM 32 + 모터 드라이버 + 파워 연결 보드 + 배터리+ 모터 를 놓을 몸체가 필요했다...
20 * 20아크릴 보드를 쿠팡에서 사서 타공후, 모터와 모터드라이버만 일단 장착한채로 진행했다.
몸체는 나중에 더 만들듯...
적외선센서도 두개 필요했기에 ADC 핀하나를 더빼서 썻다.
ARD_A0 - PC0: 오른쪽 센서
ARD_A1 - PH2: 왼쪽 센서
아래는 핸드메이드 자동차 사진..
센서를 통한 모터제어는 지난번에 했기에... 이제 조합만 하면된다.
회전각크기, 속도 조절 등 난감한 상황이 많았다.
아래는 왼쪽, 오른쪽 센서값을 터미널을 통해 확인..
value_right = HAL_GPIO_ReadPin(GPIOC, ARD_A0_Pin);
value_left = HAL_GPIO_ReadPin(GPIOH, ARD_A1_Pin);
sprintf(uart_buf1,"value_right : %d\n\r", value_right);
HAL_UART_Transmit_IT(&huart3, uart_buf1, sizeof(uart_buf1));
HAL_Delay(100);
sprintf(uart_buf2,"value_left : %d\n\r", value_left);
HAL_UART_Transmit_IT(&huart3, uart_buf2, sizeof(uart_buf2));
위 코드를 통해 확인할 수 있었음.
최종결과
코드는 아래와 같음
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
value_right = HAL_GPIO_ReadPin(GPIOC, ARD_A0_Pin);
value_left = HAL_GPIO_ReadPin(GPIOH, ARD_A1_Pin);
if(value_left == 1 && value_right == 0){ //왼쪽 센서에 선이 감지된 경우, 좌회전
while(1){
value_right = HAL_GPIO_ReadPin(GPIOC, ARD_A0_Pin);
value_left = HAL_GPIO_ReadPin(GPIOH, ARD_A1_Pin);
if(value_left == 0 && value_right == 1){
turn_right(700,1000);
HAL_Delay(200);
stop();
HAL_Delay(100);
break;
}
turn_left(700,1000);
HAL_Delay(10);
}
}
else if(value_left == 0 && value_right == 1) //
{
while(1){
value_right = HAL_GPIO_ReadPin(GPIOC, ARD_A0_Pin);
value_left = HAL_GPIO_ReadPin(GPIOH, ARD_A1_Pin);
if(value_left == 1 && value_right == 0){
turn_left(700,1000);
HAL_Delay(200);
stop();
HAL_Delay(100);
break;
}
turn_right(700,1000);
HAL_Delay(10);
}
}
else if(value_right == 0 && value_left == 0){
forward(500,650);
HAL_Delay(10);
}
else {
stop();
HAL_Delay(1000);
}
}
/* USER CODE END 3 */
}
'STM32 > 프로젝트' 카테고리의 다른 글
[STM32] 4. 로봇 팔 / 배달 (0) | 2024.06.26 |
---|---|
[STM32] 2.적외선 센서로 센서값 읽기 (0) | 2024.04.29 |
[STM32] 1.L298N 모터 드라이버로 모터 구동하기 (0) | 2024.04.16 |