Sensor para colocar na parede da garagem para auxiliar o estacionamento de ré.
Nos carros mais antigos, não possuindo sensor e câmera de ré, deixar essas luzes na parede da garagem, que seja possível observá-las pelo espelho retrovisor, é um auxílio muito bom para estacionar.
Quando o sensor detectar o carro entrando na garagem, a luz verde será acionada.
Com o carro se aproximando do sensor, a luz amarela começará a piscar, cada vez mais rápido conforme se aproxima.
A luz vermelha será acionada quando o carro estiver na distância correta, indicando a posição final e, segundos depois, se apaga.
Segue o esquema de ligação e o código fonte com comentários para entendimento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | /*--------------------------------------------------------- Programa : SENSOR PARA GARAGEM - ULTRASSÔNICO HC-SR04 Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 22/11/2024 ---------------------------------------------------------*/ #include <Ultrasonic.h> //Biblioteca do sensor HC-SR04 [ https://github.com/ErickSimoes/Ultrasonic/ ] #define GREEN 2 //Led verde #define YELLOW 3 //Led amarelo #define RED 4 //Led vermelho #define TRIG 5 //Trigger do sensor #define ECHO 6 //Echo do sensor #define DIST_MIN 30 //Distância mínima em centímetros Ultrasonic sensor(TRIG, ECHO); //Variável do sensor HC-SR04 int timeRed = 0; //Contador de tempo com carro estacionado na posição mínima void setup() { pinMode(TRIG, OUTPUT); //Configura o pino trig como saída (envia pulso) pinMode(ECHO, INPUT); //Configura o pino echo como entrada (recebe pulso) pinMode(GREEN, OUTPUT); pinMode(YELLOW, OUTPUT); pinMode(RED, OUTPUT); } void loop() { int distance = sensor.read(); //Leitura do sensor int distYellowMax = DIST_MIN * 3; //Distância máxima do led amarelo int distGreenMax = distYellowMax * 2; //Distância máxima do led verde int valueYellowBlink = map(distance, DIST_MIN, distYellowMax, 40, 400); //Valor do delay para piscar o led amarelo ledsOff(); //Condicionais para acionamento do led correto if (distance <= DIST_MIN && timeRed <= 100) { timeRed++; digitalWrite(RED, HIGH); } else if (distance > DIST_MIN && distance <= distYellowMax) { delay(valueYellowBlink); digitalWrite(YELLOW, HIGH); } else if (distance > distYellowMax && distance <= distGreenMax) { digitalWrite(GREEN, HIGH); } if (distance > DIST_MIN) timeRed = 0; // Reseta o contador quando o carro sai da posição mínima delay(100); } void ledsOff() { digitalWrite(GREEN, LOW); digitalWrite(YELLOW, LOW); digitalWrite(RED, LOW); } |
Nenhum comentário:
Postar um comentário