Voltámos aos guias de Arduino, assunto que tem ganho bastante expressão no Pplware e já há um canal no Facebook que tem crescido fomentando a troca de ideias e a promoção da entreajuda.
Assim, hoje vamos desenvolver um Sensor de Distância com Arduino.
Continuando com os mini tutoriais do Arduino, que despertaram o interesse do público em geral, hoje daremos uma continuidade ao último artigo do Ligue um lcd ao Arduino.
Alguém já andou num carro com sensores de estacionamento? Se sim, vai encontrar algumas semelhanças neste tutorial que será sobre um sensor de distância com lcd e um buzzer.
Material necessário:
- 1 Arduino UNO/ Mega
- 1 buzzer
- 1 sensor hc-sr04
- 1 lcd 16×2
- 1 potenciómetro 5k
- 1 resistência 100 ohms
Vamos então passar ao esquema de ligações, que já é um pouco mais complexa que as anteriores.
O código para fazer o circuito funcionar com o Arduino:
//inclui a biblioteca LCD #include
//escolha dos pinos LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
//Pinos do Sensor int pinotrig = 7; int pinoEco = 6;
int val = 0; // Valor do HIGH.
int buzzer = 1; //pino do buzzer int distancia; // variável de distância.
void setup() { //Inicia a comunicaçao Serial.begin(9600); //Inicia o lcd com 16 carateres e 2 linhas lcd.begin(16, 2);
//Pinos do Sensor Ultrasonico (Entrada e Saida) pinMode(pinotrig,OUTPUT); pinMode(pinoEco,INPUT);
//Pinos do Leds como saida
//Pino do buzzer como saida pinMode(buzzer, OUTPUT);
//Aqui imprime o texto inicial scrollRight();
}
voidloop()
{
//Inicia a leitura do Sensor digitalWrite(pinotrig,HIGH); delayMicroseconds(11); digitalWrite(pinotrig,LOW);
//Deteta a Distancia distancia = pulseIn(pinoEco, HIGH);
//Calculando a distância em centímetros, sendo que… // …velocidade do som = 340 m/s ou 29 us/cm. distancia = distancia/29/2;
//____________________________________________________________________ //Distância no serial monitor. Serial.print(distancia); Serial.print(” cm”); Serial.println(); //Tempo de atualização da amostragem de distância no LCD ou no serial monitor do aplicaçao do Arduino. delay(70);
//Impressao no LCD lcd.clear(); lcd.print(“Distancia atual:”); lcd.setCursor(5, 1); lcd.print(distancia); lcd.setCursor(9, 1); lcd.print(“cm”); delay(70);
//____________________________________________________________________
//CONDIÇÕES:
if(distancia == 0) { lcd.clear(); lcd.print(“Distancia atual:”); lcd.setCursor(3, 1); lcd.print(“A detetar”); delay(100); }
//verifica a distancia variando a velocidade do beep if ((distancia < 0) && (distancia <= 5)) { tone(1,2999,800); } if ((distancia > 5) && (distancia <= 10)) { tone(1,2999,800); } if ((distancia > 10) && (distancia <= 15)) { tone(1,2999,800); } if ((distancia > 10) && (distancia <= 15)) { tone(1,2999,800); } if ((distancia > 15) && (distancia <= 20)) { tone(1,2999,800); } if ((distancia > 20) && (distancia <= 25)) { tone(1,2999,800); } if ((distancia > 25)) { tone(1,2999,800);
}
//delays para o buzzer em função da distancia
digitalWrite(buzzer, LOW); delay(distancia*7);
}
//____________________________________________________________________
void scrollRight() {
digitalWrite(buzzer, LOW);
lcd.clear(); lcd.print(“Sensor”); lcd.setCursor(0, 1); lcd.print(“Ultrasonico”); delay(1500);
lcd.clear(); lcd.print(“PPLWARE”); lcd.setCursor(0,1); lcd.print(“Daniel Costa”); delay(1200);
for (int x = 0; x < 16; x++) { //desloca o display 16 vezes para a direita lcd.scrollDisplayRight(); delay(300); } }
E agora, por fim, podemos ver a demonstração do funcionamento do programa num vídeo:
Espero que seja o primeiro passo que precisa para se iniciar na robótica ou algo do género, pois é bastante útil.
Qualquer dúvida ou sugestão, temos a nossa página no Facebook (pplware.arduino) e nos nossos comentários, onde podem sugerir, corrigir e serem esclarecidos.