#include <Servo.h>
#define SERVO 9
#define buz 10
#define POT A0
#define ECHO A2
#define TRIGGER A1
#define VERMELHO 13
#define VERDE 12
#define AMARELO 11
Servo meuservo;
int val;
unsigned long tempoAnterior = 0;
const long intervalo = 3000;
void setup() {
// put your setup code here, to run once:
meuservo.attach(SERVO);
pinMode(VERDE, OUTPUT);
pinMode(VERMELHO, OUTPUT);
pinMode(AMARELO, OUTPUT);
pinMode(TRIGGER, OUTPUT);
pinMode(buz, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
long duracao = pulseIn(ECHO, HIGH);
int distancia = duracao / 58;
unsigned long tempoAtual = millis();
val = analogRead(POT);
val = map(val, 0, 1023, 0, 180);
meuservo.write(val);
if (tempoAtual - tempoAnterior >= intervalo) {
tempoAnterior = tempoAtual;
Serial.print("Valor atual da variavel val: ");
Serial.println(val);
Serial.print("Valor atual da distancia val: ");
Serial.println(distancia);
}
if (distancia > 50) {
digitalWrite(VERDE, HIGH);
digitalWrite(AMARELO, LOW);
digitalWrite(VERMELHO, LOW);
noTone(buz);
}
else if (distancia <= 50 && distancia > 20) {
digitalWrite(VERDE, LOW);
digitalWrite(AMARELO, HIGH);
digitalWrite(VERMELHO, LOW);
noTone(buz);
}
else {
digitalWrite(VERDE, LOW);
digitalWrite(AMARELO, LOW);
digitalWrite(VERMELHO, HIGH);
tone(buz, 1000);
}
}