Witam wszystkich.
Proszę o sprawdzenie poniższego kodu i poprawkę.
Posiadam płytkę STM32F411E-Disco
Czujnik HC-SR04 podpiąłem wg schematu:
DP6(GPIO_Output) - Trig
DP4(GPIO_Input) - Echo
5V-Vcc
GND-GND
Zainicjowałem jako float zmienną odleglosc.
Kod:
HAL_GPIO_WritePin(we_cz_o_GPIO_Port, we_cz_o_Pin, GPIO_PIN_SET);
HAL_Delay(10);
HAL_GPIO_WritePin(we_cz_o_GPIO_Port, we_cz_o_Pin, GPIO_PIN_RESET);
odleglosc=HAL_GPIO_ReadPin(wy_cz_o_GPIO_Port,wy_cz_o_Pin)/58.00; //odleglosc w cm
if(odleglosc<1){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_SET);
}
if(odleglosc<10){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,GPIO_PIN_SET);
}
if(odleglosc<100){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_SET);
}
if(odleglosc<150){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET);
}
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_RESET);
Z dokumentacji wyczytałem, że na pin trig (u mnie we_cz_o_Pin podpięte pod PD6) należy wysłać stan wysoki przez 10us, dlatego też pierwsze 3 linijki kodu wyglądają w ten sposób.
Następnie powinienem odczytać długość trwania impulsu na pinie echo (u mnie wy_cz_o_Pin podpięty pod PD4)
Zastanawiam się nad tym jak to zrobić. Potrafię odczytać stan pinu lecz nie potrafię odczytać czas trwania takiego impulsu.
Czy były ktoś na tyle dobry aby pomóc mi z tym problemem? Dopiero zaczynam swoją przygodę z stm32