/* Embarcatech: 28-01-2025
Autor: Marcio Barbosa
7 - Microcontroladores - Projeto Prático - Equipe Firmware
Projeto: Sistema de segurança para máquina de Serra de Fita de Bancada
Para realizar este experimento, foi necessário os seguintes componentes:
1 x Raspberry Pi Pico W ,
1 x HCSR04
1 x Buzzer
2 x Leds
2 x Resistores
*/
#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
// Definição dos pinos
#define TRIG_PIN 3 // Pino TRIG do HC-SR04
#define ECHO_PIN 4 // Pino ECHO do HC-SR04
#define LED_GREEN 5 // LED Verde (segurança)
#define LED_RED 6 // LED Vermelho (alerta)
#define BUZZER_PIN 7 // Buzzer para alarme
int simulated_distance = 10; // Distância simulada inicial
// Função para simular a leitura de distância do HC-SR04
float measure_distance() {
// Simula a variação da distância de 10 a 60 cm em passos de 10 cm
simulated_distance += 10;
if (simulated_distance > 100) {
simulated_distance = 10; // Reinicia a simulação
}
printf("### Simulated Distance: %d cm\n", simulated_distance);
return simulated_distance;
}
int main() {
stdio_init_all();
// Inicializa os pinos
gpio_init(TRIG_PIN);
gpio_set_dir(TRIG_PIN, GPIO_OUT);
gpio_put(TRIG_PIN, 0);
gpio_init(ECHO_PIN);
gpio_set_dir(ECHO_PIN, GPIO_IN);
gpio_init(LED_GREEN);
gpio_set_dir(LED_GREEN, GPIO_OUT);
gpio_init(LED_RED);
gpio_set_dir(LED_RED, GPIO_OUT);
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
while (1) {
float distance = measure_distance(); // Mede (simula) a distância
if (distance > 50.0) {
// Alerta: operador muito longe!
gpio_put(LED_GREEN, 0); // Desliga LED verde
gpio_put(LED_RED, 1); // Liga LED vermelho
gpio_put(BUZZER_PIN, 1); // Ativa o buzzer
printf("ALERTA: Distância = %.2f cm. RISCO DETECTADO!\n", distance);
} else {
// Operação segura
gpio_put(LED_GREEN, 1); // Liga LED verde
gpio_put(LED_RED, 0); // Desliga LED vermelho
gpio_put(BUZZER_PIN, 0); // Desativa o buzzer
printf("SEGURO: Distância = %.2f cm. Operação normal.\n", distance);
}
sleep_ms(2000); // Aguarda 2 segundos antes de mudar a distância
}
return 0;
}