Sensor de distância e OLED
Componentes e suprimentos
| | × | 1 | |
| Sensor ultrassônico - HC-SR04 (genérico) | | × | 1 | |
| Adafruit 128X64 LED LCD OLED | | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Como usar a tela OLED
Aqui você tem meu tutorial anterior sobre isso:
-
#includes
e #defines
, antes de executar setup ():
#include // precisamos de todas aquelas bibliotecas desagradáveis para OLED # include #include #include #define OLED_RESET 4 // este é o pino de reinicialização, NÃO ESTOU USANDO A tela ITAdafruit_SSD1306 (OLED_RESET);
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicializa com o addr I2C 0x3C (128x64) display.clearDisplay (); // limpe a tela antes de iniciar
display.setCursor (22,20); // coordenadas x, y display.setTextSize (3); // tamanho do texto display.setTextColor (WHITE); // se você escrever BLACK, apaga as coisas display.println (distance); // imprime nossa variável display.setCursor (85,20); // definir o tamanho, imprimir as unidades (cm / pol) display.setTextSize (3); #ifdef CommonSenseMetricSystem // se houver # define CommonSenseMetricSystem display.println ("cm"); // imprime "cm" em oled #endif #ifdef ImperialNonsenseSystem // se houver # define ImperialNonsenseSystem display.println ("in"); // imprime "in" em oled #endif display.display (); // você precisa realmente exibir todos os dados delay (500); // espere !, velocidade humana display.clearDisplay (); // limpar a tela em preto
Como usar a faixa ultrassônica HC-SR04
Aqui você tem a ficha técnica, o módulo HC envia uma rajada de pulsos e mede o tempo que o eco do ultrassom leva para retornar ao seu lugar original.
- Faça um pulso para o gatilho HC, o HC fará uma explosão de pulso:
longa duração, distância; // nossas variáveis amadas digitalWrite (trigPin, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (trigPin, HIGH); atrasoMicrosegundos (10); digitalWrite (trigPin, LOW);
- PulseIn () é uma função raramente usada, detecta o comprimento do passo alto (__ ---- __) ou baixo (----___---)
Usamos #ifdef
por apenas compilar as partes de que precisamos.
duração =pulseIn (echoPin, HIGH); // #ifdef CommonSenseMetricSystem distance =(duration / 2) / 29.1; #endif #ifdef ImperialNonsenseSystem distance =(duration / 2) / 73.914; #endif
- E isso para depuração caso seu Oled não esteja funcionando:
Serial.println (distância); // depurar
Código
- Medir e exibir ultrassom de distância
Mede a distância por ultrassom e exibe o Arduino
Código principal // CÓDIGO DE Javier Muñoz Sáez, 05/11/2016 perguntas para [email protected]#include #include #include #include #define CommonSenseMetricSystem // # define ImperialNonsenseSystem # define trigPin 13 # define echoPin 12 # define OLED_RESET 4Adafruit_SSD1306 display (OLED_RESET); void setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicializar com o addr I2C 0x3C (128x64) display.clearDisplay ();} void loop () {longa duração, distância; digitalWrite (trigPin, LOW); // PULSO ___ | --- | ___ delayMicroseconds (2); digitalWrite (trigPin, HIGH); atrasoMicrosegundos (10); digitalWrite (trigPin, LOW); duração =pulseIn (echoPin, HIGH); #ifdef CommonSenseMetricSystem distance =(duration / 2) / 29.1; #endif #ifdef ImperialNonsenseSystem distance =(duration / 2) / 73.914; #endif display.setCursor (22,20); // display oled display.setTextSize (3); display.setTextColor (WHITE); display.println (distância); display.setCursor (85,20); display.setTextSize (3); #ifdef CommonSenseMetricSystem display.println ("cm"); #endif #ifdef ImperialNonsenseSystem display.println ("in"); #endif display.display (); atraso (500); display.clearDisplay (); Serial.println (distância); // depurar}
Esquemas