Projetos de circuito eletrônicoProjetos de engenharia do ArduinoInterruptor LIGADO/DESLIGADO da rede elétrica CA controlada por senha

Relacionados

Relacionados

Interruptor LIGADO/DESLIGADO da rede elétrica CA controlada por senha

Neste post, vamos construir um circuito de chave liga / desliga baseado em senha, que pode ligar e desligar a fonte de alimentação CA, somente quando a senha correta for inserida. Isso evita o perigo de eletrocussão do técnico que pode estar trabalhando com as linhas e equipamentos de alta tensão.

A proteção por senha para linhas de rede elétrica é crucial

O maior pesadelo para qualquer eletricista ou técnico é uma ativação acidental de linhas de CA por alguém, que pode matar ou causar danos fatais aos órgãos do corpo em um piscar de olhos.

Este circuito de chave liga / desliga protegido por senha evita esse incidente infeliz e permite que o técnico LIGUE a fonte de alimentação CA com segurança digitando a senha correta e não apenas girando uma alavanca.

Este projeto apresenta a facilidade de alteração de senha que é armazenada na EEPROM do microcontrolador do Arduino.

O corpo humano ou mesmo o corpo do animal tem seu próprio sistema elétrico, que ajuda a enviar informações de uma parte do corpo para outra. A informação é enviada como sinais elétricos que têm amplitude e frequência mensuráveis. Também ajuda a contrair e relaxar os músculos, por exemplo o nosso coração.

Fato engraçado: O coração possui um gerador de sinal tipo multivibrador chamado “nó SA” ou “Sinoatrial”; que controla a frequência cardíaca. Se o sinoatrial falhar, temos que aplicar um sinal elétrico externo ao coração usando um marcapasso.

Qualquer surto de sinais elétricos existentes em nosso corpo fará com que percamos o controle sobre nossas próprias partes do corpo. É por isso que as pessoas se sentem presas e paralisadas quando entram em contato com um fio elétrico AO VIVO aberto.

Nosso corpo tem resistência razoável e também boa quantidade de condutância elétrica. Sabemos que qualquer elemento com resistência gera calor quando passa corrente elétrica.

Isso se aplica ao corpo humano também; o calor danifica os órgãos e pode fazer com que o sangue ferva. Cedo ou tarde a pessoa pode morrer se for eletrocutada por tempo suficiente.

Isso é eletrônica médica suficiente por agora. Vamos aos detalhes técnicos.

O projeto consiste em display LCD, teclado alfanumérico 4 x 3, LED de status e relé.

Esquema para conexão Arduino e LCD:

CIRCUITO LIGADO/DESLIGADO DA REDE ELÉTRICA CA BASEADO EM SENHA

O display está conectado aos pinos analógicos do arduino de A0 a A5. A tela é conectada de forma incomum a pinos analógicos (que funciona da mesma forma que conectado a pinos digitais) para que o teclado possa ser conectado a pinos digitais (de 2 a 9).

Ajuste o contraste da tela usando o potenciômetro de 10 K ohm.

Conexão do teclado:

CONEXÃO DO TECLADO LIGADO/DESLIGADO DA REDE ELÉTRICA CA BASEADA EM SENHA

O teclado possui 8 cabos que devem ser conectados ao Arduino, do pino #2 ao pino #9. O fio mais à esquerda do teclado deve ir ao pino 9 e conectar o próximo fio da direita ao próximo fio do teclado ao pino 8, 7, 6, 5, 4, 3, 2, o último ou o fio mais à direita do teclado deve ir para pino #2.

Restante das conexões elétricas:

DETALHES DA FIAÇÃO ELÉTRICA LIGADA/DESLIGADA DA REDE ELÉTRICA CA BASEADA EM SENHA

Você precisa baixar e adicionar a biblioteca do teclado no seguinte link: github.com/Chris–A/Keypad antes de compilar o código.

A EEPROM do microcontrolador Arduino teria alguns valores aleatórios armazenados inicialmente. Temos que redefinir para zero, para que nosso programa principal não fique confuso. Para colocar os valores da EEPROM em zero, carregue primeiro o programa abaixo e depois carregue o programa principal em segundo lugar.

Código do programa

Programa para redefinir EEPROM (carregue este primeiro):

//------------------Program Developed by R.GIRISH------------------//
#include
int address = -1;
int value = 0;
int i = 0;
int j = 0;
int k = 0;
void setup()
{
Serial.begin(9600);
Serial.println("Reading EEPROM:");
for(i = 0; i<10; i++)
{
Serial.println(EEPROM.read(i));
}
Serial.println("Wrting null value:");
for(j = 0; j<10; j++)
{
address = address + 1;
EEPROM.write(address, value);
}
for(k = 0; k<10; k++)
{
Serial.println(EEPROM.read(i));
}
Serial.println("Done!!!");
}

void loop()
{
// Do nothing here.
}
//------------------Program Developed by R.GIRISH------------------//

Main Program (Upload this second):
//------------------Program Developed by R.GIRISH------------------//
#include 
#include
#include
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);
const int relay = 10;
const int LED = 11;
const byte ROWS = 4;
const byte COLS = 4;
char key1;
char key2;
char key3;
char key4;
char key5;
char key6;
char keyABCD;
char compkey1;
char compkey2;
char compkey3;
char compkey4;
char compkey5;
char compkey6;
int wordAddress1 = 0;
int wordAddress2 = 1;
int wordAddress3 = 2;
int wordAddress4 = 3;
int wordAddress5 = 4;
int wordAddress6 = 5;
int outputStatusAddress = 6;
int outputStatusValue = 0;
int passwordExistAddress = 7;
int passwordExistValue = 0;
int toggleAddress = 8;
int toggleValue = 0;
int check = 0;
char keys[ROWS][COLS] =
{ 
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
};
byte rowPins[ROWS] = {6,7,8,9};
byte colPins[COLS] = {2,3,4,5};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
lcd.begin(16,2);
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" WELCOME");
lcd.setCursor(0,1);
lcd.print("****************");
delay(2000);
}
void loop()
{
apex:
passwordExistValue = EEPROM.read(passwordExistAddress);
if(passwordExistValue == 1) {goto normal;}
if(passwordExistValue != 1)
{
top:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set new 6 digit");
lcd.setCursor(0,1);
lcd.print("pin numer:");
key1 = keypad.waitForKey();
if((key1 == '*') || (key1 == '#') || (key1 == 'A') || (key1 == 'B') || (key1 == 'C') || (key1 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key2 = keypad.waitForKey();
if((key2 == '*') || (key2 == '#') || (key2 == 'A') || (key2 == 'B') || (key2 == 'C') || (key2 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key3 = keypad.waitForKey();
if((key3 == '*') || (key3 == '#') || (key3 == 'A') || (key3 == 'B') || (key3 == 'C') || (key3 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("***");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key4 = keypad.waitForKey();
if((key4 == '*') || (key4 == '#') || (key4 == 'A') || (key4 == 'B') || (key4 == 'C') || (key4 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key5 = keypad.waitForKey();
if((key5 == '*') || (key5 == '#') || (key5 == 'A') || (key5 == 'B') || (key5 == 'C') || (key5 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key6 = keypad.waitForKey();
if((key6 == '*') || (key6 == '#') || (key6 == 'A') || (key6 == 'B') || (key6 == 'C') || (key6 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto top;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("******");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
}
keyABCD = keypad.waitForKey();
if(keyABCD == 'A')
{
wrong:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Re-type PIN NO:");
lcd.setCursor(0,1);
lcd.print("----------------");
compkey1 = keypad.waitForKey();
if((compkey1 == '*') || (compkey1 == '#') || (compkey1 == 'A') || (compkey1 == 'B') || (compkey1 == 'C') || (compkey1 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
compkey2 = keypad.waitForKey();
if((compkey2 == '*') || (compkey2 == '#') || (compkey2 == 'A') || (compkey2 == 'B') || (compkey2 == 'C') || (compkey2 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
compkey3 = keypad.waitForKey();
if((compkey3 == '*') || (compkey3 == '#') || (compkey3 == 'A') || (compkey3 == 'B') || (compkey3 == 'C') || (compkey3 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("***");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
compkey4 = keypad.waitForKey();
if((compkey4 == '*') || (compkey4 == '#') || (compkey4 == 'A') || (compkey4 == 'B') || (compkey4 == 'C') || (compkey4 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
compkey5 = keypad.waitForKey();
if((compkey5 == '*') || (compkey5 == '#') || (compkey5 == 'A') || (compkey5 == 'B') || (compkey5 == 'C') || (compkey5 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
compkey6 = keypad.waitForKey();
if((compkey6 == '*') || (compkey6 == '#') || (compkey6 == 'A') || (compkey6 == 'B') || (compkey6 == 'C') || (compkey6 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto wrong;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("******");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
keyABCD = keypad.waitForKey();
if(keyABCD == 'A')
{
if(key1 == compkey1)
{
check = check + 1;
}
if(key2 == compkey2)
{
check = check + 1;
}
if(key3 == compkey3)
{
check = check + 1;
}
if(key4 == compkey4)
{
check = check + 1;
}
if(key5 == compkey5)
{
check = check + 1;
}
if(key6 == compkey6)
{
check = check + 1;
}
if(check == 6)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Password has");
lcd.setCursor(0,1);
lcd.print("been saved.");
delay(2000);
passwordExistValue = 1;
EEPROM.write(passwordExistAddress,passwordExistValue);
EEPROM.write(wordAddress1, key1);
EEPROM.write(wordAddress2, key2);
EEPROM.write(wordAddress3, key3);
EEPROM.write(wordAddress4, key4);
EEPROM.write(wordAddress5, key5);
EEPROM.write(wordAddress6, key6);
if(EEPROM.read(outputStatusAddress) == 1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("STATUS:");
lcd.print("MAINS ON");
lcd.setCursor(0,1);
lcd.print("----------------");
digitalWrite(LED, HIGH);
digitalWrite(relay, HIGH);
toggleValue = 0;
EEPROM.write(toggleAddress,toggleValue);
}
if(EEPROM.read(outputStatusAddress) == 0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("STATUS:");
lcd.print("MAINS OFF");
lcd.setCursor(0,1);
lcd.print("----------------");
digitalWrite(LED, LOW);
digitalWrite(relay, LOW);
toggleValue = 1;
EEPROM.write(toggleAddress,toggleValue);
}
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Password");
lcd.setCursor(0,1);
lcd.print("Mismatched !!!");
delay(2000);
goto top;
}
if(keyABCD == 'B')
{
goto wrong;
}
}
}
if(keyABCD == 'B')
{
goto top;
}
normal:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("STATUS:");
if(EEPROM.read(outputStatusAddress) == 1)
{
lcd.print("MAINS ON");
lcd.setCursor(0,1);
lcd.print("----------------");
digitalWrite(LED, HIGH);
digitalWrite(relay, HIGH);
toggleValue = 0;
EEPROM.write(toggleAddress,toggleValue);
}
if(EEPROM.read(outputStatusAddress) == 0)
{
lcd.print("MAINS OFF");
lcd.setCursor(0,1);
lcd.print("----------------");
digitalWrite(LED, LOW);
digitalWrite(relay, LOW);
toggleValue = 1;
EEPROM.write(toggleAddress,toggleValue);
}
keyABCD = keypad.waitForKey();
if(keyABCD == 'C')
{
pass:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter current");
lcd.setCursor(0,1);
lcd.print("PIN:");
key1 = keypad.waitForKey();
if((key1 == '*') || (key1 == '#') || (key1 == 'A') || (key1 == 'B') || (key1 == 'C') || (key1 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key2 = keypad.waitForKey();
if((key2 == '*') || (key2 == '#') || (key2 == 'A') || (key2 == 'B') || (key2 == 'C') || (key2 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key3 = keypad.waitForKey();
if((key3 == '*') || (key3 == '#') || (key3 == 'A') || (key3 == 'B') || (key3 == 'C') || (key3 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("***");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key4 = keypad.waitForKey();
if((key4 == '*') || (key4 == '#') || (key4 == 'A') || (key4 == 'B') || (key4 == 'C') || (key4 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key5 = keypad.waitForKey();
if((key5 == '*') || (key5 == '#') || (key5 == 'A') || (key5 == 'B') || (key5 == 'C') || (key5 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key6 = keypad.waitForKey();
if((key6 == '*') || (key6 == '#') || (key6 == 'A') || (key6 == 'B') || (key6 == 'C') || (key6 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto pass;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("******");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
keyABCD = keypad.waitForKey();
if(keyABCD == 'A')
{
check = 0;
char readkey1 = EEPROM.read(wordAddress1);
char readkey2 = EEPROM.read(wordAddress2);
char readkey3 = EEPROM.read(wordAddress3);
char readkey4 = EEPROM.read(wordAddress4);
char readkey5 = EEPROM.read(wordAddress5);
char readkey6 = EEPROM.read(wordAddress6);
if(key1 == readkey1) {check = check + 1;}
if(key2 == readkey2) {check = check + 1;}
if(key3 == readkey3) {check = check + 1;}
if(key4 == readkey4) {check = check + 1;}
if(key5 == readkey5) {check = check + 1;}
if(key6 == readkey6) {check = check + 1;}
if(check == 6)
{
passwordExistValue = 0;
EEPROM.write(passwordExistAddress,passwordExistValue);
check = 0;
goto apex;
}
else if(check != 6)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Incorrect");
lcd.setCursor(0,1);
lcd.print("Pasword !!!");
delay(2000);
goto normal;
}
if(keyABCD == 'B') {goto normal;}
}
}
if(keyABCD == 'D')
{
toggle:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter the PIN:");
lcd.setCursor(0,1);
key1 = keypad.waitForKey();
if((key1 == '*') || (key1 == '#') || (key1 == 'A') || (key1 == 'B') || (key1 == 'C') || (key1 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key2 = keypad.waitForKey();
if((key2 == '*') || (key2 == '#') || (key2 == 'A') || (key2 == 'B') || (key2 == 'C') || (key2 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("**");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key3 = keypad.waitForKey();
if((key3 == '*') || (key3 == '#') || (key3 == 'A') || (key3 == 'B') || (key3 == 'C') || (key3 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("***");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key4 = keypad.waitForKey();
if((key4 == '*') || (key4 == '#') || (key4 == 'A') || (key4 == 'B') || (key4 == 'C') || (key4 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key5 = keypad.waitForKey();
if((key5 == '*') || (key5 == '#') || (key5 == 'A') || (key5 == 'B') || (key5 == 'C') || (key5 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*****");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
key6 = keypad.waitForKey();
if((key6 == '*') || (key6 == '#') || (key6 == 'A') || (key6 == 'B') || (key6 == 'C') || (key6 == 'D'))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter 6 digit,");
lcd.setCursor(0,1);
lcd.print("then press 'A/B'.");
delay(2500);
goto toggle;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("******");
lcd.setCursor(0,1);
lcd.print("YES 'A' NO 'B'");
}
check = 0;
if(EEPROM.read(wordAddress1) == key1)
{
check = check + 1;
}
if(EEPROM.read(wordAddress2) == key2)
{
check = check + 1;
}
if(EEPROM.read(wordAddress3) == key3)
{
check = check + 1;
}
if(EEPROM.read(wordAddress4) == key4)
{
check = check + 1;
}
if(EEPROM.read(wordAddress5) == key5)
{
check = check + 1;
}
if(EEPROM.read(wordAddress6) == key6)
{
check = check + 1;
}
keyABCD = keypad.waitForKey();
if(keyABCD == 'B')
{
goto normal;
}
if(keyABCD == 'A')
{
if(check == 6 && EEPROM.read(toggleAddress) == 1)
{
outputStatusValue = 1;
EEPROM.write(outputStatusAddress, outputStatusValue);
goto normal;
}
if(check == 6 && EEPROM.read(toggleAddress) == 0)
{
outputStatusValue = 0;
EEPROM.write(outputStatusAddress, outputStatusValue);
goto normal;
}
if(check != 6)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Incorrect");
lcd.setCursor(0,1);
lcd.print("Password !!!");
delay(1500);
goto normal;
}
}
}
}
//------------------Program Developed by R.GIRISH------------------//

ufa!!….Esse é um código de programa enorme.

Como operar este projeto de chave liga / desliga com base em senha:

· Com a configuração de hardware concluída, carregue o código de reinicialização da EEPROM.

· Agora, carregue o código do programa principal.

· Ele pedirá que você crie uma senha numérica de 6 dígitos (não menos ou não mais) no LCD, crie uma senha e pressione “A”.

· Redigite a senha novamente e pressione “A”. Sua senha está salva.

· Você pode alterar a senha pressionando “C”. Digite a senha atual e digite a nova senha.

· Para ligar ou desligar a alimentação CA, pressione “D” e digite a senha e pressione “A”.

Funções das teclas A, B, C e D:

A – Enter/Sim

B – Cancelar/NÃO

C – Alterar Senha

D - Alternar rede CA

Protótipo do autor:

IMG 62443D9B13C82

Se você tiver alguma pergunta específica sobre este projeto de circuito de chave LIGA/DESLIGA de rede elétrica AC baseado em senha, expresso na seção de comando, você pode receber uma resposta rápida.

Hashtags: #Interruptor #LIGADODESLIGADO #rede #elétrica #controlada #por #senha
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc...
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados