//Cancela - Sensor de Proximade e Servo motor
//Atribuição dos pinos do sensor ultrassônico
#include <Adafruit_GFX.h> //Biblioteca Display Oled
#include <SPI.h> //Biblioteca
#include <stdlib.h> //Biblioteca
#include <Wire.h> //Biblioteca
#include <Adafruit_SSD1306.h> //Biblioteca
#include <ESP32Servo.h> //Biblioteca Servo esp 32
const int trigger = 12; //pino emissor atribuído ao pino 12 do esp32
const int echo = 13; //pino receptor atribuído ao pino 13 do esp32
long dur, dist; //Atribuição variáveis de duração
Servo servo; //Nomenclatura do Servo
Adafruit_SSD1306 display(128, 64,&Wire, -1); //Definição tamanho da tela
void setup() {
Serial.begin(115200);
display.clearDisplay(); //Limpa o display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Define tamanho da letra
pinMode (trigger, OUTPUT); //Definir pino trigger como saída
pinMode (echo, INPUT); //Definir pino echo como entrada
pinMode (19, OUTPUT); //Define o pino 19 como saída
pinMode (15, OUTPUT); //Define o pino 21 como saída
pinMode (5, INPUT_PULLUP); //Define o pino 21 como saída
}
void loop() {
servo.attach (18);
digitalWrite (trigger, LOW);
delayMicroseconds (100);
digitalWrite (trigger, HIGH);
delayMicroseconds (100);
digitalWrite (trigger, LOW);
delayMicroseconds(100);
dur = pulseIn (echo, HIGH); //Variável Duração
dist = (dur * 0.034/2); //variável distância
while (digitalRead(5) == HIGH) {
if (dist <= 10) { //Condicional Distância do sensor ultrassônico, se a distância for menor ou igual a 10 centimetros as seguintes funções serão executadas
servo.write (0); //Movimentação do servo
delay (1000); //Delay de 1 milisegundo
digitalWrite (19, HIGH); //ACende o Led Verde localizado no pino 19
delay (1000); //Delay de 1 milisegundo
digitalWrite (19, LOW); //Apaga o Led Verde localizado no pino 19
display.print("Bom Dia"); //Display oled escreve a mensagem bom dia
display.display(); //Chama o Display
tone(14, 800, 250); //o pino 14 emite um som de 800 Hz por 250 milissegundos
display.clearDisplay(); //Limpa o Display
display.setTextSize(1); //Seleciona o tamanho da fonte escrita no painel
display.setTextColor (WHITE); //Seleciona a Cor branca para aparecer no painel oled
display.setCursor (0,0); //Posicionamento de inicio setado para a linha 0, coluna 0
}
else
{
display.clearDisplay();
display.display();
servo.write(90);
delay(1000);
digitalWrite (15, HIGH);
delay(1000);
digitalWrite (15, LOW) ;
}
}
}