/* Programa: Sensor de Estacionamento. */
/* Trabalho do Prof. Gilmar Fernandes de Oliveira*/
/* Inclui as bibliotecas para o controle do display.*/
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define g 8
#define y 10
#define r 11
/* Inclui a biblioteca do sensor. */
#include <Ultrasonic.h>
/* Define os pinos para o buzzer e o sensor. */
int pino_buzzer = 2;
int pino_Trig = 3;
int pino_Echo = 4;
/* Especifica o nome e os pinos para o sensor. */
Ultrasonic Sensor(pino_Trig, pino_Echo);
/* Variável que armazenará as medidas. */
int distancia;
/* Define a frequência do beep em Hertz. */
#define frequencia 3500
/* Cria o objeto de controle para o display OLED. */
Adafruit_SSD1306 display(128, 64, &Wire);
void setup() {
/* Inicia o display OLED, através de seu endereço */
/* físico 0X3C. */
display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
Serial.begin(9600);
/* Configura o pino do Buzzer como SAÍDA. */
pinMode(pino_buzzer, OUTPUT);
pinMode(g, OUTPUT);
pinMode(y, OUTPUT);
pinMode(r, 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 < 80 && distancia > 50) {
digitalWrite(g, HIGH);
tone(pino_buzzer, frequencia, 100);
delay(1000);
}
if (distancia < 50 && distancia > 30) {
tone(pino_buzzer, frequencia, 100);
delay(700);
}
if (distancia < 30 && distancia > 20) {
digitalWrite(y, HIGH);
tone(pino_buzzer, frequencia, 100);
delay(300);
}
if (distancia < 20 && distancia > 10) {
digitalWrite(r, HIGH);
tone(pino_buzzer, frequencia, 100);
delay(150);
}
/* Distância menor que 10 cm, o bip fica contínuo. */
if (distancia < 10) {
digitalWrite(g, HIGH);
digitalWrite(y, HIGH);
digitalWrite(r, HIGH);
tone(pino_buzzer, frequencia);
}
/* Distância menor que 10 cm, o bip fica contínuo. */
if (distancia > 80) {
digitalWrite(g, LOW);
digitalWrite(y, LOW);
digitalWrite(r, LOW);
}
Serial.println(distancia);
/* Limpa o display ao iniciar. */
display.clearDisplay();
/* Define o tamanho da fonte como o dobro da padrão.*/
display.setTextSize(2);
/* Posiciona o cursor na coordenada x e y informada.*/
display.setCursor(0, 18);
/* Define a cor da fonte: Claro (1) - Escuro (0). */
display.setTextColor(1);
/* Imprime a palavra Robotica no display. */
display.print("Distancia");
/* Posiciona o cursor na coordenada x e y informada.*/
display.setCursor(0, 34);
/* Imprime a palavra Parana no display. */
display.print(distancia);
/* Atualiza o display para aplicar as escritas. */
display.display();
}