Arduino Automatic Gate Project
by ritatavaresazeredo in Circuits > Arduino
410 Views, 1 Favorites, 0 Comments
Arduino Automatic Gate Project
Neste projeto vou simular um portão de um parque de estacionamento, para isso vou usar um sensor ultrassónico para abrir e fechar o portão quando uma distância é atingida.
Hardware
- Ultrasonic sensor (sensor ultrassónico)
- Arduino Uno
- Servo Motor
- Jumper cable
Como Funciona
O sensor ultrassónico vai detetar, a uma certa distância, um possível objeto que passará em frente do mesmo. O sensor ultrassónico vai enviar uma onda sonora, que ao detetar o objeto, irá fazer ricochete, e fará com que a onda volte para trás, sendo recebida pelo mesmo sensor, isto irá dar instruções ao arduino microcontroller para abrir o portão, depois o arduino vai dar instruções ao servo para abrir o portão a 90º.
Conecção Do Sensor Ultrasónico
- Vcc para o 3.3V do arduino
- trig para a porta 4 do arduino
- echo para a porta 6 do arduino
- Gnd para o Gnd do arduino
Conecção Do Servo Motor
- fio castanho para Gnd do Arduino
- fio vermelho para o 5V do Arduino
- fio laranja para a porta 9 do Arduino
Conclusão
No final deste projeto isto vai ser o aspeto do mesmo.
Neste projeto, qualquer objeto que se atravesse em frente do sensor de distância irá fazer com que o portão se abra.
Isto é apenas uma ideia para uma aplicação simples e divertida.
O Código
#include
Servo myservo; const int trigPin=4; // Definir a constante TrigPin como inteira const int echoPin=6; // Definir a constante EchoPin como inteira long tempodur; // Definir a constante Tempodur como long int distancia; // Definir a constante Distancia como Inteira
void setup() {
myservo.attach(9); // porta em que o Motor esta ligada ao Arduino pinMode(trigPin,OUTPUT); //Definir o pino de "disparo do sensor" como output pinMode(echoPin,INPUT); //Definir o pino de "Receção de Informação do sensor" como input Serial.begin(9600); //Iniciar o monitor de série myservo.write(0); //Definir a posição do motor servo nos 0º
}
void loop() { digitalWrite(trigPin,LOW); delayMicroseconds(3); digitalWrite(trigPin,HIGH); delayMicroseconds(11); digitalWrite(trigPin,LOW); //Rotina de Envio e receção de dados do sensor para poder calcular a distancia do objecto (Neste caso o carro) tempodur=pulseIn(echoPin,HIGH); distancia=(0.034*tempodur)/2; //Conversão dos dados do sensor para a unidade de medida de distancia cm
if(distancia<=16){ myservo.write(0); //Quando o valor de distancia estiver menor ou igual a 16 cm o sensor aciona para a posição 0º } else{ myservo.write(90);} // Quando o valor de distancia estiver maior que 16 cm o sensor aciona para a posição 90ª Serial.print("distancia:"); Serial.println(distancia); // Rotina de envio de info da Distancia para o serial monitor delay(1500); // Atraso de 1,5s durante para ciclo de forma a dar tempo ao veiculo de passar debaixo da cancela.
}