No projeto usamos como contador um display lcd e 2 sensores, um para entrada dos alunos e outro para a saída dos mesmos e mais um led, que simula uma lampada,acendendo sempre que se contabiliza mais de 1 na sala
Bem antes de tudo monte conforme a imagem:
Primeiro umas nadegas a declarar, nessa imagem o led azul e na verdade o preto, o fototransistor, ou led receptor se preferir. E o preto na imagem é na realidade o led transparente, ou led emissor.
Como falei em outro post, no led emissor a perna mais longa vai um resistor de 220 ohms protegendo o mesmo de voltagem e corrente.
No caso do fototransistor, ou led receptor. a perna mais curta é ligada ao resistor de 220 ohms e posteriormente ao positivo da alimentação e a perna mais longa é ligada ao resistor de 330 ohms e posteriormente ao negativo da mesma, para fazer a funçao de pull-down e também ligada a porta do sensor do arduino.
E agora o codigo de compilação:
---------------------------------------------
// Programa : Controle de visitantes // Autor : Arduino e Cia // Pino de ligacao do sensor IR de entrada int pinoirent = 7; // Pino de ligacao do sensor IR de saida int pinoirsaida = 6; // Variavel que registra o estado do sensor de entrada int valorirent = 0; // Variavel que registra o estado do sensor de saida int valorirsai = 0; // Variavel que registra a quantidade de visitantes que entraram int content = 0; // Variavel que registra a quantidade de visitantes que sairam int contsai = 0; // Variavel que registra a quantidade de pessoas na sala int contsala = 0; // Variavel que registra a quantidade anterior de pessoas na sala int contanterior = 0; // Pino de ligacao do led que representa a luz da sala int pinoledsala = 10; // Configuracao do display LCD #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { Serial.begin(9600); // Seta o pino do sensor de entrada como ENTRADA pinMode(pinoirent, INPUT); // Seta o pino do sensor de saida como ENTRADA pinMode(pinoirsaida, INPUT); // Seta o pino do Led indicador de presenca como SAIDA pinMode(pinoledsala, OUTPUT); // Informacoes iniciais do display lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("Sala:0 "); lcd.setCursor(9,0); lcd.print("Tot: 0"); lcd.setCursor(0,1); lcd.print("Ent: 0"); lcd.setCursor(9,1); lcd.print("Sai: 0"); } void loop() { // Seta a variavel valorirent com o status do sensor de entrada valorirent = digitalRead(pinoirent); // Seta a variavel valorirsai com o status do sensor de saida valorirsai = digitalRead(pinoirsaida); // Mostra as informacoes dos sensores no serial monitor Serial.print("entrada : "); Serial.print(valorirent); Serial.print(" saida : "); Serial.println(valorirsai); // Verifica se o estado do sensor de entrada foi alterado if(valorirent!=1) { // Incrementa o valor do contador de entrada em 1 unidade content=content+1; // Verifica se a pessoa/objeto para em frente ao sensor while(digitalRead(pinoirent)!=1) { delay(100); Serial.println("Sensor de entrada parado !"); } // Atualiza no LCD o valor do contador de entrada lcd.setCursor(5,1); lcd.print(content); // Atualiza no LCD o valor total de visitantes lcd.setCursor(14,0); lcd.print(content); } // Verifica se o estado do sensor de saida foi alterado if(valorirsai!=1) { // Incrementa o valor do contador de saida em 1 unidade contsai=contsai+1; // Verifica se a pessoa/objeto para em frente ao sensor while(digitalRead(pinoirsaida)!=1) { delay(100); Serial.println("Sensor de saida parado !"); } // Atualiza no LCD o valor do contador de saida lcd.setCursor(14,1); lcd.print(contsai); } // Calcula o numero de visitantes na sala contsala=content-contsai; // Verifica se o numero atual de visitantes na sala foi alterado. if (contsala != contanterior) { lcd.setCursor(5,0); // Imprime 2 posicoes em branco, para limpar o cursor na // coluna 5, linha 0 lcd.print(" "); lcd.setCursor(5,0); // Atualiza no LCD o numero de visitantes na sala lcd.print(contsala); // Apos atualizar no LCD, coloca na varivel CONTANTERIOR // o valor atual de visitantes na sala (CONTASALA} contanterior = contsala; // Verifica se o valor do contador de pessoas na sala // e maior do que 0 if (contsala > 0) { //Caso positivo, acende a luz/led digitalWrite(pinoledsala,1); } else { //Caso negativo, apaga a luz/led digitalWrite(pinoledsala,0); } } }
-------------------------
E como prometido eis o vídeo:
Em breve postarei o video. E e isso pessoal,espero que guardem
Nenhum comentário:
Postar um comentário