#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "hardware/timer.h"
#define TRIGGER_PIN 15 // Pino Trigger (alterar conforme necessário)
#define ECHO_PIN 14 // Pino Echo (alterar conforme necessário)
void setup() {
// Inicializa os pinos do sensor HC-SR04
gpio_init(TRIGGER_PIN);
gpio_set_dir(TRIGGER_PIN, GPIO_OUT); // Trigger como saída
gpio_init(ECHO_PIN);
gpio_set_dir(ECHO_PIN, GPIO_IN); // Echo como entrada
// Inicializa o trigger para estar em estado baixo
gpio_put(TRIGGER_PIN, 0);
}
float read_distance() {
// Envia um pulso de 10 microsegundos para o trigger
gpio_put(TRIGGER_PIN, 1);
sleep_us(10); // Pulso de 10 microssegundos
gpio_put(TRIGGER_PIN, 0);
// Aguarda o sinal de Echo
while (gpio_get(ECHO_PIN) == 0); // Espera pelo início do sinal
uint64_t start_time = time_us_64(); // Marca o tempo de início
while (gpio_get(ECHO_PIN) == 1); // Espera pelo final do sinal
uint64_t end_time = time_us_64(); // Marca o tempo de fim
// Calcula o tempo de voo do sinal de ultrassom
uint64_t pulse_duration = end_time - start_time;
// Calcula a distância (tempo de ida e volta dividido por 2, depois multiplicado pela velocidade do som)
// Velocidade do som = 343 metros por segundo (34300 cm/s)
float distance = (pulse_duration * 0.0343) / 2.0; // Distância em cm
return distance;
}
int main() {
// Inicializa o Raspberry Pi Pico
stdio_init_all();
setup();
while (1) {
float distance = read_distance();
printf("Distância: %.2f cm\n", distance); // Exibe a distância na porta serial
sleep_ms(500); // Aguarda meio segundo antes de medir novamente
}
return 0;
}