#include <Servo.h>
#include <Tone.h>
const int trigPin = 2;
const int echoPin = 3;
const int ledVerde = 4;
const int ledAmarelo = 5;
const int ledVermelho = 6;
const int buzzerPin = 7;
const int botao = 8;
const int servoPin = 9;
Servo meuServo;
Tone myTone(buzzerPin);
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVermelho, OUTPUT);
pinMode(botao, INPUT_PULLUP);
meuServo.attach(servoPin);
myTone.begin();
}
void loop() {
if (digitalRead(botao) == LOW) {
// Botão pressionado, ativar sistema
tocarMelodia();
while (digitalRead(botao) == LOW) {} // Esperar o botão ser solto
}
// Medir distância
long duracao, distancia;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duracao = pulseIn(echoPin, HIGH);
distancia = duracao * 0.034 / 2;
// Controlar LEDs e buzzer
if (distancia >= 50) {
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, LOW);
noTone(buzzerPin);
} else if (distancia >= 20) {
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVermelho, LOW);
if (millis() % 1000 < 500) {
myTone.play(1000);
} else {
noTone(buzzerPin);
}
} else {
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, HIGH);
if (millis() % 200 < 100) {
myTone.play(1000);
} else {
noTone(buzzerPin);
}
}
// Controlar servo motor (ajuste conforme necessário)
meuServo.write(map(distancia, 20, 50, 0, 180));
}
void tocarMelodia() {
// Implementar a melodia de ativação aqui
// Exemplo:
myTone.play(1000);
delay(200);
myTone.play(1500);
delay(200);
}