Escolar Documentos
Profissional Documentos
Cultura Documentos
Trabalho Prático nº 1
Gestão do Parque de
Estacionamento
Índice
1. Introdução .......................................................................................................... 3
2. Métodos .............................................................................................................. 3
3. Resultados.............................................................................................................. 4
4. Discussão .......................................................................................................... 10
5. Conclusão ......................................................................................................... 10
1. Introdução
Para a implementação desta aplicação existiam quatro requisitos, a deteção dos carros
nos lugares de estacionamento, a disponibilidade dos lugares, alerta luminosos e o
processo de entrada e saída dos lugares.
2. Métodos
Para realizar o trabalho comecei por realizar o circuito e o código referente a
cada requisito e desde aí avançar de requisito.
3. Resultados
Neste capítulo vou apresentar o desenho do circuito, o algoritmo e fluxograma
a implementação do código de acordo com o algoritmo e a simulação no Tinkercad
Algoritmo:
Código:
int contadorEntrada1 = 0;
int contadorSaida1 = 0;
int contadorEntrada2 = 0;
int contadorSaida2 = 0;
void setup() {
Serial.begin(9600);
pinMode(verde_1, OUTPUT);
pinMode(vermelho_1, OUTPUT);
pinMode(led_alerta, OUTPUT);
pinMode(verde_2, OUTPUT);
pinMode(vermelho_2, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(buzzer_2, OUTPUT);
pinMode(trig_pin_1, OUTPUT);
pinMode(echo_pin_1, INPUT);
pinMode(trig_pin_2, OUTPUT);
pinMode(echo_pin_2, INPUT);
pinMode(vermelho_parque, OUTPUT);
pinMode(verde_parque, OUTPUT);
pinMode(botao, INPUT_PULLUP);
digitalWrite(verde_1, HIGH);
digitalWrite(vermelho_1, LOW);
digitalWrite(verde_2, HIGH);
digitalWrite(vermelho_2, LOW);
void loop() {
int distanciaLugarUm = medirDistanciaLugarUm();
int distanciaLugarDois = medirDistanciaLugarDois();
}else {
digitalWrite(verde_parque, HIGH);
digitalWrite(vermelho_parque, LOW);
}
if(analogRead(A0)< luz ){
digitalWrite(led_alerta, HIGH);
}else {
digitalWrite(led_alerta, LOW);
}
if (digitalRead(botao) == HIGH) {
delay(200);
disponibilidade();
}
digitalWrite(verde_1, LOW);
digitalWrite(vermelho_1, HIGH);
}
else if (distanciaLugarUm > saida) {
digitalWrite(verde_1, HIGH);
digitalWrite(vermelho_1, LOW);
digitalWrite(verde_2, LOW);
digitalWrite(vermelho_2, HIGH);
}
else if (distanciaLugarDois > saida) {
digitalWrite(verde_2, HIGH);
digitalWrite(vermelho_2, LOW);
int medirDistanciaLugarUm() {
digitalWrite(trig_pin_1, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin_1, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin_1, LOW);
return pulseIn(echo_pin_1, HIGH) * 0.034 / 2;
}
int medirDistanciaLugarDois() {
digitalWrite(trig_pin_2, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin_2, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin_2, LOW);
return pulseIn(echo_pin_2, HIGH) * 0.034 / 2;
}
void alarmeBuzzerUm() {
digitalWrite(buzzer, HIGH);
delay(3000);
digitalWrite(buzzer, LOW);
delay(1000);
}
void alarmeBuzzerDois() {
digitalWrite(buzzer_2, HIGH);
delay(3000);
digitalWrite(buzzer_2, LOW);
delay(1000);
}
void disponibilidade() {
static int ordem = 0;
int lugares = 0;
if (digitalRead(verde_1) == HIGH) {
lugares++;
}
if (digitalRead(verde_2) == HIGH) {
lugares++;
if (lugares == 0) {
Serial.println("Sem lugares de estacionamento");
} else {
ordem++;
Serial.print("Utilizador: ");
Serial.print(ordem);
Serial.print(", existem ");
Serial.print(lugares);
Serial.println(" lugares disponíveis.");
}
}
4. Discussão
Neste trabalho apenas não fazer a contagem das entradas e saídas dos lugares,
tive dificuldade na gestão das portas pois estava a usar os buzzers nas portas
digitais e depois era necessário usar uma porta lógica para os leds do parque,
mas como não consegui utilizar a porta passei os buzzers para as portas
analógicas e tinha espaço para os leds.
5. Conclusão