STM32F401 HC-SR04 초음파센서 거리측정
페이지 정보
작성자 최고관리자 작성일21-03-31 15:08 조회17,808회 댓글2건첨부파일
- HC_SR04.mp4 (6.3M) 40회 다운로드 DATE : 2021-03-31 15:10:03
관련링크
본문
보드명 : NUCLEO-F401RE & ZEUS SHIELD BD V1.1
MCU : STM32F401RET6U
초음파센서 : HC-SR04
기능구현
1. HC-SR04로 거리 측정하여 OLED에 거리표시(mm)
2. POTENTIOMETER 값변화량을 ADC로 읽어 OLED에 값표시(0~4095)
주요 CODE
#include "SR04.h"
float SR04_Echo_HighTime= 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{ if( htim->Instance == TIM1 ) TIM1->SR =0; }
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{ if( GPIO_Pin == SR04_ECHO_Pin )
{
TIM1->CNT =0;
while( HAL_GPIO_ReadPin( SR04_ECHO_GPIO_Port, SR04_ECHO_Pin) ) {
}
SR04_Echo_HighTime = TIM1->CNT ;
}
}
float SR04_Trigger_out(char microSec)
{
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_RESET); // Trigger Pin Low
TIM1->CNT =0;
while ( TIM1->CNT < microSec ) {
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_SET); // Trigger Pin High for 10u sec
}
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_RESET); // Trigger Pin Low
HAL_Delay(10);
printf("%6.0f mm\r\n",SR04_Echo_HighTime*0.17 );
return SR04_Echo_HighTime*0.17;
}
MCU : STM32F401RET6U
초음파센서 : HC-SR04
기능구현
1. HC-SR04로 거리 측정하여 OLED에 거리표시(mm)
2. POTENTIOMETER 값변화량을 ADC로 읽어 OLED에 값표시(0~4095)
주요 CODE
#include "SR04.h"
float SR04_Echo_HighTime= 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{ if( htim->Instance == TIM1 ) TIM1->SR =0; }
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{ if( GPIO_Pin == SR04_ECHO_Pin )
{
TIM1->CNT =0;
while( HAL_GPIO_ReadPin( SR04_ECHO_GPIO_Port, SR04_ECHO_Pin) ) {
}
SR04_Echo_HighTime = TIM1->CNT ;
}
}
float SR04_Trigger_out(char microSec)
{
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_RESET); // Trigger Pin Low
TIM1->CNT =0;
while ( TIM1->CNT < microSec ) {
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_SET); // Trigger Pin High for 10u sec
}
HAL_GPIO_WritePin(SR04_TRIG_GPIO_Port, SR04_TRIG_Pin, GPIO_PIN_RESET); // Trigger Pin Low
HAL_Delay(10);
printf("%6.0f mm\r\n",SR04_Echo_HighTime*0.17 );
return SR04_Echo_HighTime*0.17;
}
댓글목록
정대철님의 댓글
정대철 작성일좋은 정보 얻고 갑니다.
김현기님의 댓글
김현기 작성일좋은 정보 감사합니다.