Baixe o app para aproveitar ainda mais
Prévia do material em texto
domingo, 25 de novembro de 2012 Projeto de um estacionamento Simples: Wellington Cássio Faria Engenharia da Computação INATEL – Instituto Nacional de Telecomunicações wellingtonf@gec.inatel.br Problema: Apresenta na entrada led’s com objetivo de orientar o motorista se há vagas ou não, em cada vaga há sensores que são utilizados para verificar a presença de carros e quanto tempo os mesmos estão estacionados. Quando o carro sai do estacionamento mostra no display quando teve ser pago, existe uma chave que altera o preço para dias de semana e finais de semana. Programação: #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int vaga1=6,vaga2=7,vaga3=8,entrada=9,saida=10,led1=14,led2=15,led3=16,ChPreco=0,chOnOff= 1; float tempo1,tempo2,tempo3,preco,total,ti1,ti2,ti3; int cont; void definirpreco(); void vagas(); void contatempo(); void imprimir(); void tempoinicial(); void setup() { lcd.begin(16,2); domingo, 25 de novembro de 2012 tempo1=tempo2=tempo3=total=ti1=ti2=ti3=0; pinMode(vaga1,INPUT); pinMode(vaga2,INPUT); pinMode(vaga3,INPUT); pinMode(entrada,INPUT); pinMode(saida,INPUT); pinMode(ChPreco,INPUT); pinMode(chOnOff,INPUT); digitalWrite(vaga1,HIGH); digitalWrite(vaga2,HIGH); digitalWrite(vaga3,HIGH); digitalWrite(entrada,HIGH); digitalWrite(saida,HIGH); digitalWrite(ChPreco,HIGH); digitalWrite(chOnOff,HIGH); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(led3,OUTPUT); digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); cont=0; } void loop() { if(digitalRead(chOnOff)==LOW) { definirpreco(); vagas(); if(digitalRead(entrada)==LOW) { tempoinicial(); } contatempo(); if(digitalRead(saida)==LOW) { if((digitalRead(vaga1)==HIGH)&&(tempo1>0)) { total=preco*tempo1; tempo1=0; ti1=0; } if((digitalRead(vaga2)==HIGH)&&(tempo2>0)) { total=preco*tempo2; tempo2=0; ti2=0; } domingo, 25 de novembro de 2012 if((digitalRead(vaga3)==HIGH)&&(tempo3>0)) { total=preco*tempo3; tempo3=0; ti3=0; } if(cont==0) { imprimir(); } cont++; total=0; }else { lcd.setCursor(0,0); lcd.print("Estacionamento TOP"); lcd.setCursor(0,1); lcd.print("Aguardando......"); cont=0; } }else { lcd.clear(); } } void definirpreco() //Definicao dos precos dos segundos { if(digitalRead(ChPreco)==LOW) { preco=1; //Dia de semana }else { preco=2; //FIM de Semana } } void vagas() //Controle dos Leds { if(digitalRead(vaga1)==LOW) { digitalWrite(led1,HIGH); }else { digitalWrite(led1,LOW); } if(digitalRead(vaga2)==LOW) { digitalWrite(led2,HIGH); }else { digitalWrite(led2,LOW); domingo, 25 de novembro de 2012 } if(digitalRead(vaga3)==LOW) { digitalWrite(led3,HIGH); }else { digitalWrite(led3,LOW); } } void contatempo() //Conta o Tempo { if(digitalRead(vaga1)==LOW) { tempo1=tempo1+millis()/1000-ti1; } if(digitalRead(vaga2)==LOW) { tempo2=tempo2+millis()/1000-ti2; } if(digitalRead(vaga3)==LOW) { tempo3=tempo3+millis()/1000-ti3; } } void imprimir() { lcd.setCursor(0,0); lcd.print("Estacionamento TOP"); lcd.setCursor(0,1); lcd.print("Valor a Pagar="); lcd.print(total); } void tempoinicial() { if(digitalRead(vaga1==HIGH)) { ti1=millis()/1000; } if(digitalRead(vaga2==HIGH)) { ti2=millis()/1000; } if(digitalRead(vaga3==HIGH)) { ti3=millis()/1000; } }
Compartilhar