salve a tutti
allora io sto programmando uno sketch che con una password attiva il relè. se la password è corretta fa lampeggiare un led sempre più velocemente e poi attiva il relè. o almeno dovrebbe... non riesco a capire dove sia l'errore mi potete aiutare? vi allego sotto lo sketch. grazie in anticipo
#include <Keypad.h>
// keypad configuration
const byte rows = 4;
const byte cols = 4;
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};
byte colPins[cols] = {5, 4, 3, 2};
char psw[7] = "123456";// PASSWORD
char inputCode[7];// numero cifre + 1
int rele = 15;// USCITA PER ATTIVARE IL RELE' A1
int buzz = 16;// A2
int LedO = 12;
int LedS = 13;
int LedW = 11;
int LedR = 14;//A0
int inputCode_idx;//CONTATORE PER DODICE INSERITO
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
void setup(){
Serial.begin(9600);
keypad.setDebounceTime(150);
pinMode(rele,OUTPUT);
pinMode(buzz,OUTPUT);
pinMode(LedO,OUTPUT);
pinMode(LedS,OUTPUT);
pinMode(LedR,OUTPUT);
pinMode(LedW,OUTPUT);
inputCode_idx = 0;// RESETTA IL CONTATORE DEL CODICE
}
void loop(){
char key = keypad.getKey();
//Serial.println(psw[1]);
digitalWrite(LedO,HIGH);
if(key !=NO_KEY){
if(key== '#'){
inputCode_idx = 0;// RESETTA IL CODICE
Serial.println("CODICE RESETTATO");
delay(1000);
}else{
inputCode[inputCode_idx++] = key;
Serial.print(key);
if(inputCode_idx == 6){
inputCode[inputCode_idx] = '\0';
inputCode_idx = 0;
Serial.println();
Serial.println(inputCode);
if(strcmp(inputCode,psw) != 0){
digitalWrite(buzz,HIGH);
digitalWrite(LedW,HIGH);
delay(1000);
digitalWrite(buzz,LOW);
digitalWrite(LedW,LOW);
}
}
}
}
if(strcmp(inputCode,psw) == 0){
digitalWrite(LedR,HIGH);
delay(1000);
digitalWrite(LedS,HIGH);
delay(2000);
digitalWrite(LedS,HIGH);
delay(100);
digitalWrite(LedS,HIGH);
delay(1500);
digitalWrite(LedS,HIGH);
delay(100);
digitalWrite(LedS,HIGH);
delay(1000);
digitalWrite(LedS,HIGH);
delay(100);
digitalWrite(LedS,HIGH);
delay(500);
digitalWrite(LedS,LOW);
digitalWrite(rele,HIGH);
Serial.println("APERTO");
delay(2000);
Serial.println("CHIUSO");
for(int i=0;i<6;i++){
inputCode[i] = '\0';
}
}
digitalWrite(rele,LOW);
digitalWrite(LedR,LOW);
}