salve a tutti sto realizzando un progetto per accendere le luci da un keypad e dall'altra parte da un pulsante, ho fatto tutto lo sketch però non riesco ad inserire il pulsante.
praticamente il progetto funziona in questo modo:
se premo il tasto # accendo dei led temporizzati sulla tastiera per inserire il codice anche di notte, poi inserisco il mio codice di tre cifre e si accendono le luci temporizzate, in questa fase vorrei inserire un pulsante per accendere le luci da dentro casa perche questa tastiera si trova in mezzo la strada... Potete aiutarmi Grazie..
#include <Keypad.h>
#define luci 13
#define led 12
const byte ROWS = 4; //quattro righe
const byte COLS = 3; //tre colonne
char keyInsert[4];
// Queste variabili servono come verifica del corretto inserimento del codice
int i = 0;
int j = 0;
int s = 0;
int x = 0;
// Codice segreto
char code[4]= "000";
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {8,7,6,5}; //i Pin a cui sono connesse le righe del KeyPad
byte colPins[COLS] = {4,3,2}; // i Pin a cui sono connesse le colonne del KeyPad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
pinMode(luci,OUTPUT); // relè luci strada
pinMode(led, OUTPUT); // led tastiera
digitalWrite(luci,HIGH); imposto lo stato iniziale del relè
}
void loop(){
char key = keypad.getKey();
if (i==0){
Serial.println("inserisci il codice....");
i++;
}
if (key != NO_KEY && j<3){
Serial.print("*");
//Serial.println(key);
keyInsert[j]=key;
j++;
}
//tasto da premere per accendere i led tastiera
if(key == '#') {
digitalWrite(led,HIGH);
Serial.println("led acceso");
delay(5000);
digitalWrite(led,LOW);
Serial.println("led spento");
x=0;
i=0;
j=0;
}
if(key == '*') {
Serial.println();
Serial.println("verifica del codice...");
delay(1000);
for(s=0; s<3;s++){
if(keyInsert[s]==code[s]){
x++;
}
}
if(x==3){
Serial.println("Codice corretto");
digitalWrite(luci,LOW);
delay (5000);
digitalWrite (luci,HIGH);
x=0;
i=0;
j=0;
//TODO possibili ulteriori implementazioni
}else{
Serial.println("Codice non corretto, riprova");
delay(2000);
x=0;
i=0;
j=0;
}
}
}