Escolar Documentos
Profissional Documentos
Cultura Documentos
Muitas vezes existe a necessidade de ter um aviso que a janela ou porta esta aberta. O avisador
pode ser aplicado a qualquer outra aplicação alterando o sensor, ou seja, tanto pode avisar a
abertura/fecho como para controlar ou avisar em função de outro tipo de sensor (sensor de luz por
exemplo). O sistema é composto por duas zonas um com sensores normalmente abertos (SW NA)
que atuam o aviso quando fecham e outra zona com sensores normalmente fechados (SW NF).
Podem ser usados vários sensores, por exemplo, pretendemos verificar se todas as janelas de uma
sala se encontram fechadas, podem ser usados vários sensores NA em cada uma janela. Usando os
NF, têm de estar em série, os NA em paralelo.
Optou-se por usar um LCD 16 carateres com 2 linhas mas é facultativo, o circuito funciona e atua
sem a informação no display.
Circuito Elétrico
A saída do LED pode ser usada para ativar dispositivos com maior potência usando um relé ou um
triac em substituição.
Funcionamento
Foi definido no código que o circuito das janelas é normalmente aberto e o circuito das portas
normalmente fechado. Ao ativar os sensores, aparece no display "JANELA ABERTA!" ou "PORTA
ABERTA!" e se o alarme está ligado ou não. Ao mesmo tempo, acende um led e o avisador sonoro é
ativado.
Arduino Sketch
// Eletronica PT //
// Jan 2016 //
#include <LiquidCrystal.h> // Carrega LIB para o LCD
int sensPin2 = 2; // entrada sensor PINO 2
int sensPin3 = 3; // entrada sensor PINO 3
int ledPin = 13; // Saida LED PINO 13
int Speaker = 5; // Saida Piezo PINO 5
int alarm1 = 0; // Definiçao da Variável de entrada ´1
int alarm2 = 0; // Definiçao da Variável de entrada ´1
} else {
digitalWrite(ledPin, LOW); // Desliga o LED
lcd.setCursor(0, 1);
lcd.print("OK ");
playTone(0, 1);
delay(300);
}
}
// duraçao em mSecs, frequencia em Hz
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(Speaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(Speaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}