Sensor de Estacionamento: Bipes
Parte da seção Projetos do Journey de Arduino da Coddy. Lição 11 de 24.
Um sensor de estacionamento fala e também mostra: quanto mais perto da parede, mais rápido ele apita, até emitir um tom contínuo que significa parar. O buzzer está no pino 8.
O intervalo entre os bipes vem da distância: a distância vezes 10, em milissegundos. A 70 cm, um bipe a cada 700 ms; a 20 cm, a cada 200 ms. Um temporizador millis() decide quando o próximo bipe deve ocorrer:
if (millis() - lastBeep >= cm * 10) {
lastBeep = millis();
tone(buzzerPin, 1000, 50); // um bipe de 50 ms
}Há mais dois casos. A menos de 10 cm, toque tone(buzzerPin, 1000) sem duração: o som continua até que algo o interrompa. A 100 cm ou mais, mantenha o silêncio e chame noTone(buzzerPin) para interromper também um tom contínuo que tenha ficado tocando.
Desafio
MédioAdicione os bipes:
- 100 cm ou mais: sem som (chame
noTone()) - De 10 a 99 cm: um bipe de 50 ms a 1000 Hz a cada
cm * 10ms, cronometrado commillis() - Menos de 10 cm: um tom contínuo de 1000 Hz
Mantenha as luzes e a impressão. Pressione Executar, aproxime o objeto e, em seguida, Verificar.
Experimente você mesmo
// O sensor de distância
const int trigPin = 9;
const int echoPin = 10;
// As luzes de aviso
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;
// Envia um pulso e retorna a distância em 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 quando não há obstáculos por perto, amarelo quando está perto, vermelho quando está perto demais.
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Projetos
3Sensor de Estacionamento
Sensor de Estacionamento: DistânciaSensor de Estacionamento: LuzesSensor de Estacionamento: BipesSensor de Estacionamento: VisorPratique por conta própria: Playground de Arduino