O sensor utilizado para identificar os movimentos é uma chave de mercúrio. Um pequeno vidro com dois terminais dentro, com uma gota de mercúrio. Quando o mercúrio se movimenta, fecha ou abre o contato nos terminais internos.
O microcontrolador é o Attiny85 rodando Arduino, e a alimentação é a bateria CR2032 de 3v.
Um circuito simples, pequeno e muito barato, que pode servir de base para um sistema que aciona luzes de emergência, sirenes, etc.
Segue esquema elétrico e o código fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /*--------------------------------------------------------- Programa : SENSOR DE TERREMOTO Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 09/12/2017 ---------------------------------------------------------*/ #define LED_ALARM_R 0 #define LED_ALARM_Y 1 #define SENSOR 3 //Variável indicativa do estado do sensor int previousSensor; void setup() { //Configura os pinos dos leds como saída pinMode(LED_ALARM_R, OUTPUT); pinMode(LED_ALARM_Y, OUTPUT); //Configura o pino do sensor como entrada com pull-up interno pinMode(SENSOR, INPUT_PULLUP); //Seta a variável como o estado inicial do sensor previousSensor = digitalRead(SENSOR); } void loop() { //Variável recebe o valor atual do sensor int currentSensor = digitalRead(SENSOR); //Aciona o alarme caso o estado atual do sensor seja diferente do estado anterior if (currentSensor != previousSensor) { previousSensor = currentSensor; Alarm(); } } void Alarm() { for (int i = 0; i < 20; i++) { for (int i = 0; i < 3; i++) { digitalWrite(LED_ALARM_R, HIGH); delay(50); digitalWrite(LED_ALARM_R, LOW); delay(50); } for (int i = 0; i < 3; i++) { digitalWrite(LED_ALARM_Y, HIGH); delay(50); digitalWrite(LED_ALARM_Y, LOW); delay(50); } } } |
Nenhum comentário:
Postar um comentário