⭐⭐⭐ Reto
⏱️ 30 minutos
Sensor de aparcamiento deluxe
¡La versión deluxe del sensor de aparcamiento! Pita más rápido cuando te acercas, y la pantalla OLED muestra la distancia en centímetros. Con una barrita que se hace más larga cuando te acercas.
🧰 ¿Qué necesitas?
🔌
Cable USB + Cables jumper🗺️ Esquema de conexión
Sigue los cables desde el Arduino hasta cada pieza. Puedes elegir tú los colores de los cables.
| Desde | Hasta |
|---|---|
Arduino UNO · D9 |
Sensor de distancia HC-SR04 · Trig |
Arduino UNO · D10 |
Sensor de distancia HC-SR04 · Echo |
Arduino UNO · 5V |
Sensor de distancia HC-SR04 · Vcc |
Arduino UNO · GND |
Sensor de distancia HC-SR04 · Gnd |
Arduino UNO · D8 |
Zumbador activo · S |
Arduino UNO · 5V |
Zumbador activo · + |
Arduino UNO · GND |
Zumbador activo · - |
Arduino UNO · A4 |
Pantallita OLED 0,91" · SDA |
Arduino UNO · A5 |
Pantallita OLED 0,91" · SCL |
Arduino UNO · 5V |
Pantallita OLED 0,91" · VCC |
Arduino UNO · GND |
Pantallita OLED 0,91" · GND |
🛠️ Así lo construyes
- Conecta el HC-SR04: Trig al pin 9, Echo al pin 10, Vcc a 5V y Gnd a GND.
- Conecta el zumbador: S al pin 8, + a 5V y − a GND.
- Conecta la pantalla OLED: SDA a A4, SCL a A5, VCC a 5V y GND a GND.
- Tres piezas necesitan 5V y GND. Usa las tiras + y − de tu breadboard.
💻 El código
// Sensor de aparcamiento deluxe
// Como el sensor normal, pero ahora también ves la distancia en la pantalla OLED.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const int TRIG_PIN = 9; // Trig del HC-SR04 en pin 9
const int ECHO_PIN = 10; // Echo del HC-SR04 en pin 10
const int ZUMBADOR_PIN = 8; // S del zumbador en pin 8
Adafruit_SSD1306 pantalla(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
// Mide la distancia en centímetros
long medirDistancia() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long tiempo = pulseIn(ECHO_PIN, HIGH, 30000);
if (tiempo == 0) return 999; // Sin echo: nada cerca
return tiempo / 58;
}
// Pone la distancia grande en la pantalla, con una barrita debajo
void mostrarDistancia(long distancia) {
pantalla.clearDisplay();
pantalla.setTextSize(2);
pantalla.setCursor(0, 0);
if (distancia >= 999) {
pantalla.print(F("---"));
} else {
pantalla.print(distancia);
pantalla.print(F(" cm"));
}
// Barrita: cuanto más cerca, más larga
int largo = map(constrain(distancia, 0, 100), 0, 100, 128, 0);
pantalla.fillRect(0, 24, largo, 8, SSD1306_WHITE);
pantalla.display();
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(ZUMBADOR_PIN, OUTPUT);
pantalla.begin(SSD1306_SWITCHCAPVCC, 0x3C);
pantalla.setTextColor(SSD1306_WHITE);
}
void loop() {
long distancia = medirDistancia();
mostrarDistancia(distancia);
if (distancia < 5) {
digitalWrite(ZUMBADOR_PIN, HIGH); // Muy cerca: un tono largo
delay(100);
} else if (distancia < 50) {
digitalWrite(ZUMBADOR_PIN, HIGH); // Pitido corto
delay(50);
digitalWrite(ZUMBADOR_PIN, LOW);
delay(distancia * 10); // Más cerca = más pitidos
} else {
digitalWrite(ZUMBADOR_PIN, LOW);
delay(100);
}
}
🧠 ¿Qué hace el código?
medirDistancia()mide la distancia en centímetros con el HC-SR04.mostrarDistancia()pone el número grande en la pantalla y dibuja una barrita confillRect().- El zumbador pita más rápido cuanto menor es la distancia.
🎯 Prueba esto…
- Muestra "¡STOP!" en la pantalla si estás a menos de 5 cm
- Muestra la distancia en metros si algo está a más de 1 metro
- Añade el anillo LED que cambia de verde a rojo
🚀 Construye este proyecto con Codey: abre codey.online/es/starter-kits/uno/projects/parking-sensor-deluxe y haz clic en HAZ ESTO. Entonces el código y el esquema de conexión estarán listos enseguida.
Codey Online es un producto de OTRONIC