Sensor de estacionamiento: pantalla
Parte de la sección Proyectos del Journey de Arduino de Coddy. Lección 12 de 24.
El último paso muestra la distancia exacta en la pantalla. La pantalla LCD de 16x2 está conectada de la forma habitual: RS en 12, E en 11, D4 a D7 en 5, 4, 3 y 2.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);La fila superior nunca cambia, así que escribe Distance: una vez en setup(), después de lcd.begin(16, 2). Solo se actualiza la fila inferior en loop().
Una pantalla LCD conserva cada carácter hasta que algo lo reemplaza. Al pasar de 250 cm a 8 cm, imprimir 8 cm sobre 250 cm deja el final antiguo de la línea, y la pantalla muestra 8 cmcm. Imprime algunos espacios después del texto para cubrir lo que haya dejado un número más largo:
lcd.setCursor(0, 1);
lcd.print(cm);
lcd.print(" cm ");Los espacios también evitan el parpadeo de lcd.clear(), que borraría toda la pantalla diez veces por segundo.
Desafío
FácilMuestra la distancia en la pantalla LCD:
- incluye
LiquidCrystal.hy crealcd(12, 11, 5, 4, 3, 2) - en
setup():lcd.begin(16, 2)yDistance:en la fila superior - en
loop(): la distancia ycmen la fila inferior, como57 cm, con espacios después
Mantén las luces, los pitidos y la impresión. Pulsa Run y después Check.
Pruébalo tú mismo
// El sensor de distancia
const int trigPin = 9;
const int echoPin = 10;
// Las luces de advertencia
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;
// El zumbador
const int buzzerPin = 8;
unsigned long lastBeep = 0; // cuándo comenzó el último pitido
// Envía un pulso y devuelve la distancia en cm.
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}
// Verde cuando no hay obstáculos, amarillo cuando está cerca y rojo cuando está demasiado cerca.
void showLights(long cm) {
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
if (cm >= 100) {
digitalWrite(greenPin, HIGH);
} else if (cm >= 30) {
digitalWrite(yellowPin, HIGH);
} else {
digitalWrite(redPin, HIGH);
}
}
// Emite pitidos más rápidos a medida que el objeto se acerca.
void beep(long cm) {
if (cm >= 100) {
noTone(buzzerPin);
} else if (cm < 10) {
tone(buzzerPin, 1000); // demasiado cerca: un tono continuo
} else if (millis() - lastBeep >= cm * 10) {
lastBeep = millis();
tone(buzzerPin, 1000, 50);
}
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(redPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
long cm = readDistance();
Serial.println(cm);
showLights(cm);
beep(cm);
delay(100);
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Proyectos
3Sensor de estacionamiento
Sensor de estacionamiento: distanciaSensor de estacionamiento: lucesSensor de estacionamiento: pitidosSensor de estacionamiento: pantallaPractica por tu cuenta: Playground de Arduino