Olá pll,
Estou-me a iniciar no mundo dos Arduinos....comecei por ler o básico e pus mão à obra.
O objectivo (para já) é controlar 8 reles com o Arduino.
O hardware é:
- Arduino Uno;
- Teclado Matricial 4x4;
- 8 Relés
Pretendia:
- Através de senha "accionar" o sistema, (senha correcta "libera" o teclado, senha errada "nada")
- "Liberado" o teclado:
2.1 Uma tecla acciona rele, na mesma tecla desliga rele;
2.2 Uma tecla acciona 3 reles, na mesma tecla desliga 3 reles
Em relação aos pontos 2.1 e 2.2 já consegui fazer o código;
Em relação ao ponto 1 também já tenho o código, (é o exemplo "PasswordKeypad" da biblioteca Password.h
Agora o que não estou a conseguir, (já ando nisto à 3 dias), é "inserir" os pontos 2.1 e 2.2 no ponto 1
Alguém pode ajudar?
Aqui ficam os códigos em causa)
Da Password:
...
..... void setup(){
Serial.begin(9600);
[font=Verdana] keypad.addEventListener(keypadEvent); //add an event listener for this keypad[/font]
}
void loop()[font=Verdana]{
keypad.getKey();
}
//take care of some special events
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*': checkPassword(); break;
case '#': password.reset(); break;
default: password.append(eKey);
}
}
}
void checkPassword(){
if (password.evaluate()){
Serial.println("Success");
//Add code to run if it works (POIS JÁ TENTEI INSERIR AQUI A PARTE DE CARREGAR NAS TECLAS...MAS SEM SUCESSO :sweat_smile:
}else{
Serial.println("Wrong");
//add code to run if it did not work
}
[/font]
Agora a programação que "fiz" e na qual quero inserir a password:
#include <Password.h> //http://www.arduino.cc/playground/uploads/Code/Password.zip
#include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip
Password password = Password( "1234" ); // Senha utilizada
const byte ROWS = 4; //quatro linhas - Fios Laranja
const byte COLS = 4; //quatro colunas - Fios Brancos
//Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9,8,7,6 };//ligar as linhas do teclado
byte colPins[COLS] = {12,11,10,5};//ligar as colunas do teclado
// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int releHQI = 2; // Atribui Lâmpadas HQI ao Rele 1 - conectado na porta 02 do arduino no IN1 da placa rele - Fio Roxo
int releT8 = 3; // Atribui Lâmpadas T8 ao Rele 2 - conectado na porta 03 do arduino no IN2 da placa rele - Fio Verde
int releMoonlight = 4; // Atribui Lâmpadas Moonlight ao Rele 3 - conectado na porta 04 do arduino no IN3 da placa rele - Fio Cinzento
int releEscumador = 13; // Atribui Escumador ao Rele 4 - conectado na porta 13 do arduino no IN4 da placa rele - Fio Amarelo
void setup(){
Serial.begin(9600);
pinMode(releHQI,OUTPUT); // Define a porta 02 como sendo de saída.
digitalWrite(releHQI,HIGH); // inicializa com o Lâmpadas HQI desligadas.
pinMode(releT8,OUTPUT); // Define a porta 03 como sendo de saída.
digitalWrite(releT8, HIGH); // inicializa com o Lâmpadas T8 desligadas.
pinMode(releMoonlight,OUTPUT); // Define a porta 04 como sendo de saída.
digitalWrite(releMoonlight, HIGH); // inicializa com o Lâmpadas Moonlight desligadas.
pinMode(releEscumador,OUTPUT); // Define a porta 13 como sendo de saída.
digitalWrite(releEscumador, HIGH); // inicializa com o Escumador desligado.
}
void loop(){
char Key = keypad.getKey();
if (Key != NO_KEY)
{
Serial.println(Key);
}
if(Key) // Checa se um botão foi pressionado.
{
switch (Key)
{
case '1' : // Se for pressionado…
if(digitalRead(releHQI)==LOW) // verifica se as Lâmpadas HQI estão desligadas
{digitalWrite(releHQI, HIGH); // se verdadeiro liga as Lâmpadas HQI
}else
{digitalWrite(releHQI,LOW); // se falso desliga Lâmpadas HQI
}break; // Parada, aguardando pressionar outro botão
case '2' : // Se for pressionado…
if(digitalRead(releT8)==LOW) // verifica se as Lâmpadas T8 estão desligadas
{digitalWrite(releT8, HIGH); // se verdadeiro liga as Lâmpadas T8
}else
{digitalWrite(releT8,LOW); // se falso desliga Lâmpadas T8
}break; // Parada, aguardando pressionar outro botão
case '3' : // Se for pressionado…
if(digitalRead(releMoonlight)==LOW) // verifica se as Lâmpadas Moonlight estão desligadas
{digitalWrite(releMoonlight, HIGH); // se verdadeiro liga as Lâmpadas Moonlight
}else
{digitalWrite(releMoonlight,LOW); // se falso desliga as Lâmpadas Moonlight
}break; // Parada, aguardando pressionar outro botão
case 'A' : // Se for pressionado…
if((digitalRead(releHQI)==HIGH)|| // verifica se as Lâmpadas estão ligadas
(digitalRead(releT8)==HIGH)|| // verifica se as Lâmpadas estão ligadas
(digitalRead(releMoonlight)==HIGH)) // verifica se as Lâmpadas estão ligadas
{digitalWrite(releHQI, LOW); // se verdadeiro desliga as Lâmpadas HQI
digitalWrite(releT8, LOW) ; // SE verdadeiro desliga as Lâmpadas T8
digitalWrite(releMoonlight, LOW); // se verdadeiro desliga as Lâmpadas Moonlight
}else
{digitalWrite(releHQI, HIGH); // se falso liga as Lâmpadas HQI
digitalWrite(releT8, HIGH); // se falso liga as Lâmpadas T8
digitalWrite(releMoonlight, HIGH); // se falso liga as Lâmpadas Moonlight
}break;
case '4' : // Se for pressionado…
if(digitalRead(releEscumador)==LOW) // verifica se o Escumador está desligado
{digitalWrite(releEscumador, HIGH); // se verdadeiro liga o Escumador
}else
{digitalWrite(releEscumador,LOW); // se falso desliga o Escumador
}break; // Parada, aguardando pressionar outro botão
default:
Serial.println(Key);
}
}
}
Nota: Destaquei aquilo que acho que devo introduzir neste ultimo programa, se cometi alguma "bacurada" foi mesmo por estar "verde" na materia
Mais uma vez alguém pode ajudar?
Obg
NJPinheiro