Tela de LCD 20x4 e Teclado 4x4
Nesse projeto, ensinarei a criar um sistema de segurança com teclado e LCD, com Arduino Mega 2560, mas você pode usar o Arduino de sua preferência, que esteja de acordo com os requerimentos do projeto.
Estarei utilizando o Módulo I2C para o display LCD, para facilitar a montagem e o uso de portas no Arduino, mas antes vou mostrar a montagem do projeto sem o módulo, caso você ainda não tenha em sua bancada.
- Arduino Mega 2560;
- Display de LCD 20x4;
- Teclado Matricial 4x4
- Módulo I2C
- Potenciômetro 1k
- Mini protoboard
- Fios Jumpers M-M, M-F;
Esquemático sem o Módulo I2C:
É necessaria a montagem conforme o esquema
Fonte: Própria autora
No Display, aparecerá uma mensagem pedindo a senha de acesso, digite a senha correta e o sistema permitirá o acesso, caso o usuário digite caracteres que não estejam de acordo com a senha correta, será informado ao mesmo, que a senha está inválida, e reiniciará o procedimento.
Faça a inclusão da biblioteca KeyPad, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8
Faça a inclusão da biblioteca KeyPad, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8
Código sem o Módulo I2C:
/*
* Arduino Sistema de Segurança com Teclado e LCD
* Sem o módulo I2C
*/
#include <LiquidCrystal.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca
#define redLED 10 //Defini os pinos de LED
#define greenLED 11
char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição
const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;
char keyMap [rows] [cols] =
{ // Define os símbolos nos botões do teclado
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)
void setup()
{
lcd.begin(16, 2);
pinMode(redLED, OUTPUT); //Defina o LED como uma saída
pinMode(greenLED, OUTPUT);
setLocked (true); //estado da senha
}
void loop(){
char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey
lcd.setCursor(0, 0);
lcd.print(" Bem vindos");
lcd.setCursor(0, 1);
lcd.print(" Digite a senha:");
if(whichKey == '*' || whichKey == '#' || whichKey == 'A' || //Defini chaves inválidas
whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
{
pozisyon=0;
setLocked (true);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Chave inválida!");
delay(1000);
lcd.clear();
}
if(whichKey == password [pozisyon]){
pozisyon ++;
}
if(pozisyon == 4){
setLocked (false);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*** Verificado***");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Robotica ");
lcd.setCursor(0, 1);
lcd.print("para Leigos");
delay(7000);
lcd.clear();
}
delay(100);
}
void setLocked(int locked)
{
if(locked)
{
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
else
{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
}
* Arduino Sistema de Segurança com Teclado e LCD
* Sem o módulo I2C
*/
#include <LiquidCrystal.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca
#define redLED 10 //Defini os pinos de LED
#define greenLED 11
char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição
const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;
char keyMap [rows] [cols] =
{ // Define os símbolos nos botões do teclado
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)
void setup()
{
lcd.begin(16, 2);
pinMode(redLED, OUTPUT); //Defina o LED como uma saída
pinMode(greenLED, OUTPUT);
setLocked (true); //estado da senha
}
void loop(){
char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey
lcd.setCursor(0, 0);
lcd.print(" Bem vindos");
lcd.setCursor(0, 1);
lcd.print(" Digite a senha:");
if(whichKey == '*' || whichKey == '#' || whichKey == 'A' || //Defini chaves inválidas
whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
{
pozisyon=0;
setLocked (true);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Chave inválida!");
delay(1000);
lcd.clear();
}
if(whichKey == password [pozisyon]){
pozisyon ++;
}
if(pozisyon == 4){
setLocked (false);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*** Verificado***");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Robotica ");
lcd.setCursor(0, 1);
lcd.print("para Leigos");
delay(7000);
lcd.clear();
}
delay(100);
}
void setLocked(int locked)
{
if(locked)
{
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
else
{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
}
Agora que sabemos o circuito completo do projeto sem o uso do modulo, chegou a hora de usa-lo em nosso projeto.
Estrutura do módulo I2C
Na lateral esquerda do módulo temos 4 pinos, sendo que dois são para alimentação (Vcc e GND), e os outros dois são da interface I2C (SDA e SCL). O potenciômetro da placa serve para ajuste do contraste do display, e o jumper na lateral oposta permite que a luz de fundo (backlight) seja controlada pelo programa ou permaneça apagada.
Fonte: Arduino e Cia
Faça a inclusão da biblioteca LiquidCrystal_I2C
Para controlar esse módulo I2C, utilize a biblioteca LiquidCrystal_I2C, todo o material necessário para a execução desse projeto, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8
Esquemático com o modulo I2C
Para o Arduino Uno
Para o Arduino Mega
Fonte: Arduino e Cia
Código com o módulo I2C
/*
* Arduino Sistema de Segurança com Teclado e LCD
* Com o módulo I2C
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca
#define redLED 10 //Defini os pinos de LED
#define greenLED 11
char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição
const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;
char keyMap [rows] [cols] =
{ // Define os símbolos nos botões do teclado
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
//LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
void setup()
{
lcd.begin (20,4);
pinMode(redLED, OUTPUT); //Defina o LED como uma saída
pinMode(greenLED, OUTPUT);
setLocked (true); //estado da senha
}
void loop(){
char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey
lcd.setBacklight(HIGH);
lcd.setCursor(4, 0);
lcd.print("BEM VINDOS!!!");
lcd.setCursor(0, 2);
lcd.print("DIGITE A SENHA:");
if(whichKey == '*' || whichKey == '#' || whichKey == 'A' || //Defini chaves inválidas
whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
{
pozisyon=0;
setLocked (true);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SENHA INVALIDA!!!");
delay(1000);
lcd.clear();
}
if(whichKey == password [pozisyon]){
pozisyon ++;
}
if(pozisyon == 4){
setLocked (false);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("***VERIFICADO***");
delay(3000);
lcd.clear();
lcd.setCursor(6, 1);
lcd.print("SALA DA");
lcd.setCursor(4, 2);
lcd.print("MECATRONICA");
delay(7000);
lcd.clear();
}
delay(100);
}
void setLocked(int locked)
{
if(locked)
{
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
else
{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
}
Nenhum comentário:
Postar um comentário