Sensor de estacionamiento: pitidos
Parte de la sección Proyectos del Journey de Arduino de Coddy. Lección 11 de 24.
Un sensor de estacionamiento habla y también muestra: cuanto más cerca está la pared, más rápido pita, hasta que mantiene un tono continuo que significa detenerse. El zumbador está conectado al pin 8.
El intervalo entre pitidos depende de la distancia: la distancia multiplicada por 10, en milisegundos. A 70 cm, un pitido cada 700 ms; a 20 cm, cada 200 ms. Un temporizador millis() decide cuándo debe sonar el siguiente pitido:
if (millis() - lastBeep >= cm * 10) {
lastBeep = millis();
tone(buzzerPin, 1000, 50); // un pitido de 50 ms
}Hay otros dos casos. A menos de 10 cm, reproduce tone(buzzerPin, 1000) sin duración: suena hasta que algo lo detiene. A 100 cm o más, permanece en silencio y llama a noTone(buzzerPin) para detener también cualquier tono continuo que haya quedado sonando.
Desafío
IntermedioAñade los pitidos:
- 100 cm o más: sin sonido (llama a
noTone()) - De 10 a 99 cm: un pitido de 50 ms a 1000 Hz cada
cm * 10ms, cronometrado conmillis() - Menos de 10 cm: un tono constante de 1000 Hz
Mantén las luces y la impresión. Pulsa Run, acerca el objeto 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;
// 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án cerca y rojo cuando están 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);
}
}
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);
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