Last active
May 30, 2016 14:00
-
-
Save thales-assis/e64a4a7e5f70455b2de4 to your computer and use it in GitHub Desktop.
Project Automation Arduino - Part 1.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// VERSÃO DE TESTE E PROTÓTIPO - TEST VERSION | |
// --- Bibliotecas Auxiliares --- | |
#include <SPI.h> // Biblioteca do Arduino para Comunicação SPI ( Serial Peripheral Interface - Interface Periféricos Seriais) | |
#include <Wire.h> // Biblioteca do Arduino para Comunicação I2C ( Inter-Integrated Circuit - Circuito Inter-Integrado ) | |
#include <IRremote.h> // Biblioteca para Receptopr / Emissor Infravermelho. | |
#include <DHT.h> // Biblioteca para Sensor de Temperatura e Umidade DHT11. | |
#include <MFRC522.h> // Biblioteca Para Módulo RFID RC-522 | |
#include <LiquidCrystal_I2C.h> // Biblioteca para LCD com I2C integrado. | |
#include <DS3231.h> // Biblioteca para RTC ( Real Time Clock ) DS3231. | |
// --- Mapeamento de Hardware - Portas Analógicas --- | |
const int LM35 = A0; // Pino Analógico A1 do Arduino para ler o valor do Sensor de Temperatura Thermistor. | |
#define LDR A1 // Pino Analógico A0 do Arduino para ler o valor do Sensor LDR. | |
#define DHTPIN A2 // Pino Analógico A2 do Arduino para ler o valor do Senor DHT11. | |
#define Sensor_Alarme A3 // Pino Analógico A3 do Arduino para ler o valor do Senor de Alarme ( EDT002 - Barreira Ótica http://www.educatronica.com.br/kits.html ) | |
#define Sensor_Chuva A4 // Pino Analógico A4 do Arduino para ler o valor do Sensor de Água. | |
#define Sensor_Chama A5 // Pino Analógico A5 do Arduino para ler o valor do Senor de Chama. | |
// --- Definindo Portas PWM para Controle de Voz com Módulo EASY VR --- | |
#define Sala_Vermelho 2 | |
#define Sala_Verde 3 | |
#define Sala_Azul 4 | |
#define Suite_Vermelho 5 | |
#define Suite_Verde 6 | |
#define Suite_Azul 7 | |
#define Quarto_Vermelho 8 | |
#define Quarto_Verde 9 | |
#define Quarto_Azul 10 | |
// --- Mapeamento de Hardware - Portas Digitais --- | |
#define Botao_Menu_Mais 22 // Botão para selecionar menu acima no digital 12 | |
#define Botao_Menu_Menos 23 // Botão para selecionar menu abaixo no digital 11 | |
#define Botao_OK 24 // Botão OK | |
#define Botao_Liga 25 // Botão para Ligar. | |
#define Botao_Desliga 26 // Botão para Desligar. | |
#define Receptor_Infravermelho 19 // Receptor Infravermelho | |
#define Led_Sistema 27 // LED para indicar que sistema está ligado | |
#define Led_Alarme 28 // LED para indicar quando houver uma invasão detectada pelo sensor de alarme | |
#define Buzzer 29 // Buzzer. | |
#define Iluminacao_LDR 30 // Pino que irá ligar um RELÉ de 5V para acionar o circuito de ligação da Iluminação Externa da Casa. | |
#define Led_RFID_Liberado 31 // LED para indicar que TAG liga no Módulo RFID RC522 é válida e cadastrada. | |
#define Led_RFID_Negado 32 // LED para indicar que TAG liga no Módulo RFID RC522 é inválida e não cadastrada. | |
#define rele_RFID_Liberado 33 // Pino que irá ligar um RELÉ de 5V para acionar Fechadura Eletrônica da porta. | |
// --- Definindo Comando das Bibliotecas dos Módulos e Sensores do Arduino --- | |
IRrecv irrecv(Receptor_Infravermelho); // Comando da Biblioteca <IRremote.h> | |
decode_results results; // Comando da Biblioteca <IRremote.h> | |
#define DHTTYPE DHT11 //Comando da Biblioteca <DHT.h> | |
DHT dht(DHTPIN, DHTTYPE); // Comando da Biblioteca <DHT.h> | |
// Arduino MEGA: Pino Digital 49 - RESET(RST_RFID), Pino Digital 50 - MISO(Entrada de DADOS), | |
// Pino Digital 51 - MOSI(Saída de DADOS), Pino Digital 52 - SCK(Clock), Pino Digital 53 - SDA(SS_RFID). | |
#define RST_RFID 49 // Comando da Biblioteca <MFRC522.h> | |
#define SS_RFID 53 // Comando da Biblioteca <MFRC522.h> | |
MFRC522 mfrc522(SS_RFID, RST_RFID); // Comando da Biblioteca <MFRC522.h> | |
LiquidCrystal_I2C lcd(0x27,16,2); // Comando da Biblioteca <LiquidCrystal_I2C.h> | |
DS3231 Clock(SDA, SCL); // Comando da Biblioteca <DS3231.h> | |
Time tempo; // Comando da Biblioteca <DS3231.h> | |
// --- Protótipo das Funções Auxiliares --- | |
void Menu_Atual(); //Função para modificar o menu atual | |
void Menu_Lcd(); //Função para mostrar o menu atual | |
void menu1_Relogio(); // Função do menu 1, mostrar a hora e data com RTC DS3231. | |
void menu2_Temperatura_Umidade(); // Função do menu 2, mostrar a temperatura e umidade com DHT11. | |
void menu3_Alarme_Seguranca(); // Função do menu 3, mostrar o alarme de segurança. | |
void menu4_Temperatura_Interna(); // Função do menu 4, mostrar a temperatura interna da casa. | |
void menu5_Iluminacao_Externa(); // Função do menu 5, mostrar a Iluminação Externa e a luminosidade. | |
void menu6_Chuva(); // Função do menu 6, mostrar se está chovendo. | |
void Fechadura_Eletronica_RFID(); // Função para acionamento da Fechadura Eletrônica da Casa. | |
// --- Variáveis Globais --- | |
char menu = 0x01; // Variável para selecionar os menus. Inicia no menu 1. | |
boolean Flag_Botao_mais, Flag_Botao_menos, Flag_Botao_Ligar, Flag_Botao_Desligar,Flag_Botao_OK; // Flags para controle dos Botões do menu. | |
boolean Ligar_Alarme, Invasao_Detectada, Ligar_Iluminacao, Ligar_Chuva, Chuva_Detectada; | |
int Valor_LDR, Valor_Alarme, Valor_Chuva, Valor_Thermistor,Temp_Dht11, Umid_Dht11; | |
float Valor_LM35; | |
byte i; | |
unsigned int atualizacao_dados; | |
String tagsCadastrada[3] = {"B9 03 46 D5","26 F1 F4 48","21 5E AA 8B"}; | |
// --- Configurações Iniciais --- | |
void setup() | |
{ | |
Serial.begin(9600); // Inicia Taxa de Cominicação Serial de 9600 bits por segundo. | |
SPI.begin(); | |
Wire.begin(); | |
Clock.begin(); | |
dht.begin(); | |
lcd.init(); | |
lcd.backlight(); | |
// --- RFID --- | |
mfrc522.PCD_Init(); | |
// --- Infravermelho --- | |
irrecv.enableIRIn(); // Habilita Rececptor Infravermelho. | |
//Clock.setDOW(MONDAY); // Comando para Setar o Dia da Semana , Segunda - 1 e Domingo - 7 | |
//Clock.setTime(16, 10, 0); // Comando para Setar Hora/Minuto/Segundos. | |
//Clock.setDate(23, 5, 2016); // Comando para Setar dia, mês e Ano. | |
for(char a=22; a<27; a++) pinMode(a, INPUT_PULLUP); // Entrada para os botões(digitais 14 a 18)com pull-ups internos | |
for(char b=2; b<11; b++) pinMode(b, OUTPUT); // Define como saída todos os Pinos PWM para Easy VR | |
for(char c=27; c<34; c++) pinMode(c, OUTPUT); // Define como saída os pinos que irá ligar LEDs,Buzzer,Relés,etc. | |
// Flags para Controle dos Botões do Menu. | |
Flag_Botao_mais = false; Flag_Botao_menos = false; Flag_Botao_Ligar = false; Flag_Botao_Desligar = false; Flag_Botao_OK = false; | |
Ligar_Alarme = false; Invasao_Detectada = false; Ligar_Iluminacao = false; Ligar_Chuva = false; Chuva_Detectada = false; // Inicia Booleanos como Falsos. | |
digitalWrite(Iluminacao_LDR, HIGH); | |
digitalWrite(rele_RFID_Liberado, HIGH); | |
// Ligando SISTEMA --- | |
lcd.setCursor(0,0); | |
lcd.print("LIGANDO"); | |
lcd.setCursor(0,1); | |
lcd.print("SISTEMA"); | |
delay(500); | |
lcd.setCursor(7,1); | |
lcd.print("."); | |
delay(500); | |
lcd.setCursor(8,1); | |
lcd.print("."); | |
delay(500); | |
lcd.setCursor(9,1); | |
lcd.print("."); | |
delay(1000); | |
lcd.clear(); | |
lcd.print("SISTEMA LIGADO"); | |
digitalWrite(Led_Sistema, HIGH); | |
digitalWrite(Buzzer, HIGH); | |
delay(100); | |
digitalWrite(Buzzer, LOW); | |
delay(100); | |
digitalWrite(Buzzer, HIGH); | |
delay(100); | |
digitalWrite(Buzzer, LOW); | |
delay(1500); | |
lcd.clear(); | |
} //Fim do void setup | |
// --- Loop Infinito --- | |
void loop() | |
{ | |
Menu_Atual(); | |
Menu_Lcd(); | |
Fechadura_Eletronica_RFID(); | |
// --- Lendo RTC DS3231 --- | |
tempo = Clock.getTime(); | |
Clock.getTemp(); | |
// --- Lendo Sensor DHT11, Temperatura e Umidade externa da Casa e Temperatura Interna da Casa a cada 2 segundos --- | |
if(millis() - atualizacao_dados >= 2000 ) | |
{ | |
Temp_Dht11 = dht.readTemperature(); | |
Umid_Dht11 = dht.readHumidity(); | |
Valor_LM35 = (float(analogRead(LM35))*5/(1023))/0.01; | |
Serial.print("Temperatura LM35: "); | |
Serial.println(Valor_LM35,2); | |
atualizacao_dados = millis(); | |
} | |
// --- Lendo Valor do Alarme de Segurança --- | |
Valor_Alarme = analogRead(Sensor_Alarme); | |
if ( Valor_Alarme >= 1015 && Ligar_Alarme == true) | |
{ | |
digitalWrite(Buzzer, HIGH); | |
digitalWrite(Led_Alarme, HIGH); | |
Invasao_Detectada = true; | |
} | |
//--- Lendo Luminosidade do Ambiente Externo --- | |
Valor_LDR = (analogRead(LDR)); // Lendo Sensor LDR | |
Valor_LDR = map(Valor_LDR, 0, 1023, 0, 100); // Mapeamento de 0 - 1023 bits para 0 - 100 % | |
if ( Valor_LDR < 35 && Ligar_Iluminacao == true ) | |
{ | |
digitalWrite(Iluminacao_LDR, LOW); // Módulo Relé ativos em 0 ( LOW ); | |
} | |
else digitalWrite(Iluminacao_LDR, HIGH); | |
// --- Lendo Sensor de Chuva --- | |
Valor_Chuva = analogRead(Sensor_Chuva); | |
// Serial.print("Valor da Chuva: "); | |
// Serial.println(Valor_Chuva); | |
if( Sensor_Chuva == 1023 && Ligar_Chuva == true ) | |
{ | |
Chuva_Detectada = true; | |
} | |
// --- Lendo Sensor IR --- | |
if (irrecv.decode(&results)) { | |
Serial.println(results.value, DEC); | |
irrecv.resume(); // Receive the next value | |
} | |
} //end loop | |
// --- Desenvolvimento das Funções Auxiliares --- | |
void Menu_Atual() //Modifica o menu atual | |
{ | |
if(!digitalRead(Botao_Menu_Mais) || results.value == 1086277815 ) Flag_Botao_mais = true; // Botão Botão_Menu_Mais pressionado? Seta flag | |
if(!digitalRead(Botao_Menu_Menos)|| results.value == 1086285465 ) Flag_Botao_menos = true; // Botão Botão_Menu_Menos pressionado? Seta flag | |
if(digitalRead(Botao_Menu_Mais) && results.value != 1086277815 && Flag_Botao_mais == true ) // Botão Botão_Menu_Mais solto e Flag_Botao_mais setada? | |
{ | |
Flag_Botao_mais = false; // Limpa flag | |
lcd.clear(); // Limpa display | |
menu++; // Incrementa menu | |
if(menu > 0x06) menu = 0x01; // Se menu maior que 6, volta a ser 1 | |
} // --- Fim do Botao_Menu_Mais --- | |
if(digitalRead(Botao_Menu_Menos) && results.value !=1086285465 && Flag_Botao_menos == true) // Botao_Menu_Menos solto e Flag_Botao_menos setada? | |
{ | |
Flag_Botao_menos = false; // Limpa flag | |
lcd.clear(); // Limpa display | |
menu--; // Decrementa menu | |
if(menu < 0x01) menu = 0x06; // Se menu menor que 1, volta a ser 6 | |
} //Fim Botao_Menu_Menos | |
} //Fim | |
void Menu_Lcd() //Mostra o menu atual | |
{ | |
switch(menu) //Controle da variável menu | |
{ | |
case 0x01: menu1_Relogio(); // Caso 1 - Chama a função para mostrar o relógio na tela. | |
break; //break | |
case 0x02: menu2_Temperatura_Umidade(); // Caso 2 - Chama a função para mostrar a Temperatura e Umidade externa da Casa na tela. | |
break; //break | |
case 0x03: menu3_Alarme_Seguranca(); // Caso 3 - Chama função para mostrar o Alarme de Segurança na tela. | |
break; //break | |
case 0x04: menu4_Temperatura_Interna(); // Caso 4 - Chama função para mostrar a Temperatura Interna da Casa na tela. | |
break; //break | |
case 0x05: menu5_Iluminacao_Externa(); // Caso 5- Chama função para mostrar a Luminosidade/Iluminação Externa na tela. | |
break; //break | |
case 0x06: menu6_Chuva(); // Caso 6 - Chama função função para mostrar se está chovendo na tela. | |
break; | |
} //Fim do switch menu | |
} // Fim do void Menu_Lcd | |
void menu1_Relogio(){ | |
lcd.setCursor(0,0); | |
if(tempo.hour<10) | |
{ | |
lcd.print("0"); | |
} | |
lcd.print(tempo.hour); | |
lcd.print(":"); | |
if(tempo.min <10) | |
{ | |
lcd.print("0"); | |
} | |
lcd.print(tempo.min); | |
lcd.print(":"); | |
if(tempo.sec<10) | |
{ | |
lcd.print("0"); | |
} | |
lcd.print(tempo.sec); | |
lcd.print(" "); | |
lcd.print(Clock.getTemp()); | |
lcd.write(B11011111); //Simbolo de graus celsius | |
lcd.print("C"); | |
lcd.setCursor(0,1); | |
if(tempo.date<10) | |
{ | |
lcd.print("0"); | |
} | |
lcd.print(tempo.date); | |
lcd.print("/"); | |
switch(tempo.mon) | |
{ | |
case 1: lcd.print("01");break; | |
case 2: lcd.print("02");break; | |
case 3: lcd.print("03");break; | |
case 4: lcd.print("04");break; | |
case 5: lcd.print("05");break; | |
case 6: lcd.print("06");break; | |
case 7: lcd.print("07");break; | |
case 8: lcd.print("08");break; | |
case 9: lcd.print("09");break; | |
case 10: lcd.print("10");break; | |
case 11: lcd.print("11");break; | |
case 12: lcd.print("12");break; | |
default: lcd.print("Erro");break; | |
} | |
lcd.print("/"); | |
lcd.print(tempo.year); | |
lcd.print(" "); | |
switch(tempo.dow) | |
{ | |
case 1: lcd.print("SEG");break; | |
case 2: lcd.print("TER");break; | |
case 3: lcd.print("QUA");break; | |
case 4: lcd.print("QUI");break; | |
case 5: lcd.print("SEX");break; | |
case 6: lcd.print("SAB");break; | |
case 7: lcd.print("DOM");break; | |
default: lcd.print("Erro");break; | |
} | |
} | |
void menu2_Temperatura_Umidade(){ | |
lcd.setCursor(0,0); | |
lcd.print("UMID.EXTERNA "); | |
lcd.print(Umid_Dht11); | |
lcd.print("%"); | |
lcd.setCursor(0,1); | |
lcd.print("TEMP.EXTERNA "); | |
lcd.print(Temp_Dht11); | |
lcd.write(B11011111); //Simbolo de graus celsius | |
} | |
void menu3_Alarme_Seguranca(){ | |
if(!digitalRead(Botao_Liga) || results.value == 1086279855 ) Flag_Botao_Ligar = true; | |
if(!digitalRead(Botao_Desliga) || results.value == 1086302295 ) Flag_Botao_Desligar = true; | |
if(!digitalRead(Botao_OK) || results.value == 1086296175 ) Flag_Botao_OK = true; | |
if(digitalRead(Botao_Liga) && results.value != 1086279855 && Flag_Botao_Ligar == true) | |
{ | |
Ligar_Alarme = true; | |
lcd.clear(); | |
Flag_Botao_Ligar = false; | |
} | |
if(digitalRead(Botao_Desliga) && results.value != 1086302295 && Flag_Botao_Desligar == true) | |
{ | |
Ligar_Alarme = false; | |
lcd.clear(); | |
Flag_Botao_Desligar = false; | |
} | |
if(Ligar_Alarme == true && Invasao_Detectada == false) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("ALARME DE SEGUR."); | |
lcd.setCursor(0,1); | |
lcd.print("LIGADO "); | |
} | |
else if( Ligar_Alarme == false) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("ALARME DE SEGUR."); | |
lcd.setCursor(0,1); | |
lcd.print("DESLIGADO"); | |
digitalWrite(Buzzer, LOW); | |
digitalWrite(Led_Alarme, LOW); | |
Invasao_Detectada = false; | |
} | |
else if(Ligar_Alarme == true && Invasao_Detectada == true) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print(" INVASAO "); | |
lcd.setCursor(0,1); | |
lcd.print(" DETECTADA !! "); | |
if(digitalRead(Botao_OK) && results.value != 1086296175 && Flag_Botao_OK == true) | |
{ | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print(" RESTAURANDO"); | |
lcd.setCursor(0,1); | |
lcd.print(" ALARME"); | |
delay(500); | |
lcd.setCursor(10,1); | |
lcd.print("."); | |
delay(500); | |
lcd.setCursor(11,1); | |
lcd.print("."); | |
delay(500); | |
lcd.setCursor(12,1); | |
lcd.print("."); | |
delay(500); | |
digitalWrite(Buzzer, LOW); | |
digitalWrite(Led_Alarme, LOW); | |
Flag_Botao_OK = false; | |
Invasao_Detectada = false; | |
lcd.clear(); | |
} | |
} | |
} | |
void menu4_Temperatura_Interna() | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("TEMPERATURA INT."); | |
lcd.setCursor(0,1); | |
lcd.print("DA CASA "); | |
lcd.print(Valor_LM35); | |
lcd.write(B11011111); //Simbolo de graus celsius | |
lcd.print("C"); | |
} // --- Fim do menu4_Temperatura_Interna --- | |
void menu5_Iluminacao_Externa(){ | |
if(!digitalRead(Botao_Liga) || results.value == 1086279855 ) Flag_Botao_Ligar = true; | |
if(!digitalRead(Botao_Desliga) || results.value == 1086302295 ) Flag_Botao_Desligar = true; | |
if(digitalRead(Botao_Liga)&& results.value != 1086279855 && Flag_Botao_Ligar == true){ | |
Ligar_Iluminacao = true; | |
Flag_Botao_Ligar = false; | |
lcd.clear(); | |
} | |
if(digitalRead(Botao_Desliga)&& results.value != 1086302295 && Flag_Botao_Desligar == true){ | |
Ligar_Iluminacao = false; | |
Flag_Botao_Desligar = false; | |
lcd.clear(); | |
} | |
if ( Ligar_Iluminacao == true ) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("AUTOMATIZACAO DO"); | |
lcd.setCursor(0,1); | |
lcd.print("JARDIM "); | |
lcd.setCursor(7,1); | |
lcd.print("LIGADO "); | |
} | |
else | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("AUTOMATIZACAO DO"); | |
lcd.setCursor(0,1); | |
lcd.print("JARDIM "); | |
lcd.setCursor(7,1); | |
lcd.print("DESLIGADO"); | |
} | |
} | |
void menu6_Chuva(){ | |
if(!digitalRead(Botao_Liga) || results.value == 1086279855 ) Flag_Botao_Ligar = true; | |
if(!digitalRead(Botao_Desliga) || results.value == 1086302295 ) Flag_Botao_Desligar = true; | |
if(digitalRead(Botao_Liga)&& results.value != 1086279855 && Flag_Botao_Ligar == true){ | |
Ligar_Chuva = true; | |
Flag_Botao_Ligar = false; | |
lcd.clear(); | |
} | |
if(digitalRead(Botao_Desliga)&& results.value != 1086302295 && Flag_Botao_Desligar == true){ | |
Ligar_Chuva = false; | |
Flag_Botao_Desligar = false; | |
lcd.clear(); | |
} | |
if ( Ligar_Chuva == true ) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("SENSOR DE CHUVA "); | |
lcd.setCursor(0,1); | |
lcd.print("LIGADO "); | |
} | |
else | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("SENSOR DE CHUVA "); | |
lcd.setCursor(0,1); | |
lcd.print("DESLIGADO"); | |
} | |
if ( Ligar_Chuva == true && Chuva_Detectada == true) | |
{ | |
lcd.setCursor(0,0); | |
lcd.print("CHOVENDO,LEVE"); | |
lcd.setCursor(0,1); | |
lcd.print("UM GUARDA-CHUVA "); | |
} | |
} | |
void Fechadura_Eletronica_RFID(){ | |
// Aguarda proximidade do cartão/tag | |
if ( ! mfrc522.PICC_IsNewCardPresent()) | |
{ | |
return; | |
} | |
// Seleciona o cartão/tag | |
if ( ! mfrc522.PICC_ReadCardSerial()) | |
{ | |
return; | |
} | |
// String que armazenará o UID do cartão | |
String Codigo_TAG = ""; | |
// variavel que coletará os bytes lidos | |
byte letra; | |
// Dentro deste FOR, armazena byte a byte e concatena na variavel Codigo_TAG | |
for (byte i = 0; i < mfrc522.uid.size; i++) | |
{ | |
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); | |
Serial.print(mfrc522.uid.uidByte[i], HEX); | |
Codigo_TAG.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); | |
Codigo_TAG.concat(String(mfrc522.uid.uidByte[i], HEX)); | |
} | |
// Coloca o valor da variavel Codigo_TAG toda em Maisculo | |
Codigo_TAG.toUpperCase(); | |
// if (Codigo_TAG.substring(1) == tagsCadastrada[0]) //UID 1 - "B9 03 46 D5" - TAG Cartão. | |
// if (Codigo_TAG.substring(1) == tagsCadastrada[1]) //UID 2 - "26 F1 F4 48" - TAG Chaveiro. | |
// if (Codigo_TAG.substring(1) == tagsCadastrada[2]) //UID 3 - "21 5E AA 8B" - TAG Cartão BOM - Thales. | |
// if (Codigo_TAG.substring(1) == "B9 03 46 D5") | |
// if (Codigo_TAG.substring(1) == "26 F1 F4 48") | |
// if (Codigo_TAG.substring(1) == "21 5E AA 8B") | |
if (Codigo_TAG.substring(1) == "21 5E AA 8B" || Codigo_TAG.substring(1) == "26 F1 F4 48" ) // Válida TAG - Cartão BOM e TAG - Chaveiro. | |
{ | |
// Se Tag aproximada é cadastrada liga Led de acesso Liberado e Relé para acionamento de trava eletrônica. | |
digitalWrite(Led_RFID_Liberado, HIGH); | |
digitalWrite(rele_RFID_Liberado, LOW); | |
delay(500); | |
digitalWrite(Led_RFID_Liberado, LOW); | |
digitalWrite(rele_RFID_Liberado, HIGH); | |
} | |
else | |
{ | |
digitalWrite(rele_RFID_Liberado, HIGH); | |
digitalWrite(Led_RFID_Negado, HIGH); | |
delay(500); | |
digitalWrite(Led_RFID_Negado, LOW); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment