Medição de Distância com Arduino UNO, HC-SR04 e Display OLED Adafruit
Componentes e Materiais
| Arduino UNO | 1 |
| Sensor Ultrassônico HC-SR04 | 1 |
| Display OLED 128x64 Adafruit (SSD1306) | 1 |
Aplicações e Serviços Online
- Arduino IDE
Sobre o Projeto
Projeto simples: medir distância com sensor ultrassônico HC-SR04 e exibir no display OLED 128x64 I2C.
Como Usar o Display OLED
Bibliotecas necessárias: SPI.h, Wire.h, Adafruit_GFX.h, Adafruit_SSD1306.h.
Configuração Inicial
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Endereço I2C 0x3C (128x64)
display.clearDisplay();
}
No Loop
display.setCursor(22, 20);
display.setTextSize(3);
display.setTextColor(WHITE);
display.println(distancia);
display.setCursor(85, 20);
display.setTextSize(3);
#ifdef CommonSenseMetricSystem
display.println("cm");
#endif
#ifdef ImperialNonsenseSystem
display.println("in");
#endif
display.display();
delay(500);
display.clearDisplay();
Como Usar o HC-SR04
O módulo envia pulso ultrassônico e mede o tempo do eco.
Disparo do Sensor
long duracao, distancia;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Leitura do Eco
duracao = pulseIn(echoPin, HIGH);
#ifdef CommonSenseMetricSystem
distancia = (duracao/2) / 29.1; // cm
#endif
#ifdef ImperialNonsenseSystem
distancia = (duracao/2) / 73.914; // polegadas
#endif
Código Completo
// CODE BY Javier Muñoz Sáez, 05/11/2016
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define CommonSenseMetricSystem
//#define ImperialNonsenseSystem
#define trigPin 13
#define echoPin 12
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
long duracao, distancia;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duracao = pulseIn(echoPin, HIGH);
#ifdef CommonSenseMetricSystem
distancia = (duracao/2) / 29.1;
#endif
#ifdef ImperialNonsenseSystem
distancia = (duracao/2) / 73.914;
#endif
display.setCursor(22, 20);
display.setTextSize(3);
display.setTextColor(WHITE);
display.println(distancia);
display.setCursor(85, 20);
display.setTextSize(3);
#ifdef CommonSenseMetricSystem
display.println("cm");
#endif
#ifdef ImperialNonsenseSystem
display.println("in");
#endif
display.display();
delay(500);
display.clearDisplay();
Serial.println(distancia); // debug
}
Esquemático
Disponível na seção de esquemáticos do projeto original.
Processo de manufatura
- Como Funcionam os Sensores de Distância e Suas Principais Aplicações
- Sensores Arduino: Tipos, Aplicações e Projetos do Mundo Real
- Tecnologia de Sensor de Impressão Digital: Princípios de Funcionamento, Aplicações e Integração com Arduino
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Construa um Sistema de Monitoramento de Temperatura e Luz Multi-Sensor com Raspberry Pi e DS18B20
- Dominando Controle de Sensores e Atuadores no Raspberry Pi: Acelerômetro, Servo e Streaming de Dados
- Construa um Sistema Aeropônico Automatizado com Raspberry Pi e Sensor de Umidade
- Verifique e Calibre Seu Sensor de Umidade para Medições Precisas
- Monitoramento Preciso de Temperatura e Umidade com SHT15 no Windows 10 IoT Core
- Autômatos Celulares em Tempo Real no Arduino com Display OLED 128x64