Documente Academic
Documente Profesional
Documente Cultură
Sensor de nível
3
Display de 4 dígitos
4
Sensor Ultrassônico HC-SR04
5
Buzzer Contínuo
6
LEDS coloridos e resistores 220Ω
7
Em www.fernandok.com
Download arquivo PDF dos diagramas
Download arquivo INO do código fonte
8
Montagem ESP32 HC-SR04
Buzzer Resistor 220 Ω gpio 5 Echo
gpio 4 Trigger
GND GND
HC-SR04
Display 4 dígitos
gpio 14 CLK
gpio 13 DIO
3,3v VCC
GND GND
BUZZER
gpio 21 Positivo
GND Negativo
TM1637Display – download
Ultrasonic - download
Vamos ao código
Começaremos definindo as bibliotecas e constantes que utilizaremos durante
nosso código.
void setup()
{
Serial.begin(9600);
Serial.println("Setup...");
}
Configuração dos Pinos
/*
CONFIGURA O MODOS DE CADA UM DOS PINOS QUE UTILIZAREMOS COMO SAIDA
*/
void configurarPinos()
{
pinMode(PIN_BLUE_LED, OUTPUT);
pinMode(PIN_GREEN_LED, OUTPUT);
pinMode(PIN_YELLOW_LED, OUTPUT);
pinMode(PIN_RED_LED, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
}
Loop
Na função loop(), chamaremos nossa função principal do programa, que fará a
verificação da distância lida pelo sensor e demais operações.
void loop()
{
verificarDistancia();
delay(INTERVALO_LEITURA);
}
getDistance
/*
FAZ A LEITURA DA DISTANCIA ATUAL CALCULADA PELO SENSOR
*/
int getDistance()
{
//faz a leitura das informacoes do sensor (em cm)
int distanciaCM;
long microsec = ultrasonic.timing();
// pode ser um float ex: 20,42 cm se declarar a var float
distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);
// método estático ou const estática
return distanciaCM;
}
Parte do código ultrassonic.h do arduino
class Ultrasonic
{
public: // construtor tem que ser público
Ultrasonic(int tp, int ep); // pinos
long timing(); // microsegundos
float convert(long microsec, int metric);
void setDivisor(float value, int metric);
static const int IN = 0;
static const int CM = 1;
verificarDistancia
/*
VERIFICA A DISTANCIA ATUAL QUE O SENSOR ULTRASONIC ESTA LENDO
E EM SEGUIDA, IMPRIME O VALOR NO DISPLAY, E ACENDE O LED CORRESPONDENTE
*/
void verificarDistancia()
{
//recupera a distância atual lida pelo sensor
distancia = getDistance();
//imprime no display o valor lido
display.showNumberDec(distancia);
//esse FOR tem como objetivo apagar todos os LEDS que estejam acesos.
for(int i=PIN_BLUE_LED; i<=PIN_RED_LED; i++)
{
digitalWrite(i, LOW);
}
//desliga o BUZZER
digitalWrite(PIN_BUZZER, LOW);
//continua no próximo slide...
continuação verificarDistacia
//caso a distancia lida seja menor ou igual a 5, tomaremos como uma distância de perigo
//então acenderemos o LED VERMELHO e ligaremos o BUZZER
if( distancia <= 5 ){
digitalWrite(PIN_RED_LED, HIGH);
digitalWrite(PIN_BUZZER, HIGH);
}
//caso a distancia seja maior que 5 e menor ou igual a 20,
//tomaremos como uma distância de atenção, e ligaremos o LED AMARELO
else if(distancia <=20){
digitalWrite(PIN_YELLOW_LED, HIGH);
}
//caso a distancia seja maior que 20 e menor ou igual a 40,
//tomaremos como uma distância segura, e ligaremos o LED VERDE
else if(distancia <= 40){
digitalWrite(PIN_GREEN_LED, HIGH);
}
//para distâncias maiores que 40, tomaremos como uma distância sem perigo
//acenderemos o LED AZUL para indicar
else{
digitalWrite(PIN_BLUE_LED, HIGH);
}
} //verificarDistancia
Em www.fernandok.com
Download arquivo PDF dos diagramas
Download arquivo INO do código fonte
20