/* Programa: Sensor de Estacionamento. */
/* Inclui a biblioteca do sensor. */
#include <Ultrasonic.h>
/* Define os pinos para o buzzer e o sensor. */
const int pinBuzzer = 11;
const int pinTrigger = 13;
const int pinEcho = 12;
const int ledR2 = 10;
const int ledO2 = 8;
const int ledR1 = 9;
const int ledO1 = 7;
const int ledY2 = 6;
const int ledY1 = 5;
const int ledG3 = 4;
const int ledG2 = 3;
const int ledG1 = 2;
/* Especifica o nome e os pinos para o sensor. */
Ultrasonic Sensor(pinTrigger, pinEcho);
/* Variável que armazenará as medidas. */
int distancia;
/* Define a frequência do beep em Hertz. */
#define frequencia 3500
void setup() {
/* Configura o pino do Buzzer como SAÍDA. */
pinMode(pinBuzzer, OUTPUT);
pinMode(ledR2, OUTPUT);
pinMode(ledR1, OUTPUT);
pinMode(ledO2, OUTPUT);
pinMode(ledO1, OUTPUT);
pinMode(ledY2, OUTPUT);
pinMode(ledY1, OUTPUT);
pinMode(ledG2, OUTPUT);
pinMode(ledG3, OUTPUT);
pinMode(ledG1, OUTPUT);
}
void loop() {
/* Realiza a medição e armazena na variável “distancia” */
distancia = Sensor.read();
/* Condições de distâncias para a intensidades do bip. */
if (distancia > 200) {
tone(pinBuzzer, frequencia, 100);
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
digitalWrite(ledO2, HIGH);
digitalWrite(ledO1, HIGH);
digitalWrite(ledY2, HIGH);
digitalWrite(ledY1, HIGH);
digitalWrite(ledG3, HIGH);
digitalWrite(ledG2, HIGH);
digitalWrite(ledG1, HIGH);
delay(2000);
}
if (distancia < 80 && distancia > 50) {
tone(pinBuzzer, frequencia, 100);
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
digitalWrite(ledO2, HIGH);
digitalWrite(ledO1, HIGH);
digitalWrite(ledY2, HIGH);
digitalWrite(ledY1, HIGH);
digitalWrite(ledG3, LOW);
digitalWrite(ledG2, LOW);
digitalWrite(ledG1, LOW);
delay(1000);
}
if (distancia < 50 && distancia > 30) {
tone(pinBuzzer, frequencia, 100);
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
digitalWrite(ledO2, HIGH);
digitalWrite(ledO1, HIGH);
digitalWrite(ledY2, LOW);
digitalWrite(ledY1, LOW);
digitalWrite(ledG3, LOW);
digitalWrite(ledG2, LOW);
digitalWrite(ledG1, LOW);
delay(700);
}
if (distancia < 30 && distancia > 20) {
tone(pinBuzzer, frequencia, 100);
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
digitalWrite(ledO2, HIGH);
digitalWrite(ledO1, LOW);
digitalWrite(ledY2, LOW);
digitalWrite(ledY1, LOW);
digitalWrite(ledG3, LOW);
digitalWrite(ledG2, LOW);
digitalWrite(ledG1, LOW);
delay(300);
}
if (distancia < 20 && distancia > 10) {
tone(pinBuzzer, frequencia, 100);
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
digitalWrite(ledO2, LOW);
digitalWrite(ledO1, LOW);
digitalWrite(ledY2, LOW);
digitalWrite(ledY1, LOW);
digitalWrite(ledG3, LOW);
digitalWrite(ledG2, LOW);
digitalWrite(ledG1, LOW);
delay(150);
}
/* Distância menor que 10 cm, o bip fica contínuo. */
if (distancia < 10) {
tone(pinBuzzer, frequencia);
for (int i = 0; i < 2; i++) {
digitalWrite(ledR2, HIGH);
digitalWrite(ledR1, HIGH);
delay(100);
digitalWrite(ledR2, LOW);
digitalWrite(ledR1, LOW);
delay(100);
}
}
}