Ciao a tutti sto realizzando con arduino e una wifi shield un telecomando per far accendere e spegnere le luci di casa collegate a un impianto Myhome Bticino
i collegamenti del keypad 3X4 sono ai pin A0,A1,A2,A3, 6,5,3,
ho trovato in rete uno schetc per avere 2 o piu password e pensavo di usarlo anche per il mio scopo...
in poche parole vorrei sapere dove mi salva i tasti digitati.
esempio clicco 41 e leggo sul monitor 41 che nn è la password esatta io vorrei che prende questo numero che ho digitato e mi faccia una stringa come prefisso iniziale 11* numero digitato (in questo caso 41)e finisca con ##...sono riuscito a trovare la lunghezza della stringa ma non il valore a suo interno con la funzione
Serial.println(currentPasswordLength)
non so se è il posto giusto per queste domande ,mi sono spulciato un po il sito ma c'è da perdersi(nel senso che comincio a cercare una cosa e poi finisco su un altra perchè interessato).... se non lo è chiedo venia.....grazie anticipatamente....
qui posto il codice trovato
http://forum.arduino.cc/index.php?topic=217942.0
#include <Keypad.h>
#include <Password.h>
String newPasswordString; //hold the new password
char newPassword[4]; //charater string of newPasswordString
//initialize password to 1234
//you can use password.set(newPassword) to overwrite it
Password password1 = Password( "1111" );
Password password2 = Password( "2222" );
byte maxPasswordLength = 4;
byte currentPasswordLength = 0;
const byte ROWS = 4; // Four rows
const byte COLS = 3; // Four columns
//Define the keymap
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
//// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = {14,15,16,17}; //connect to row pinouts
// Connect keypad COL0, COL1, COL2 and COL3 to these Arduino pins.
byte colPins[COLS] = {6,5,3}; //connect to column pinouts
// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
}
void loop(){
char key = keypad.getKey();
if (key != NO_KEY){
delay(60);
switch (key){
case 'A': break;
case 'B': break;
case 'C': break;
case 'D': changePassword(); break;
case '#': checkPassword(); break;
case '*': resetPassword(); break;
default: processNumberKey(key);
}
}
}
void processNumberKey(char key) {
Serial.print(key);
currentPasswordLength++;
password1.append(key);
password2.append(key);
if (currentPasswordLength == maxPasswordLength) {
checkPassword();
}
}
void checkPassword() {
if (password1.evaluate()){
Serial.println(" FIRST PASSWORD IS OK ");
} else if (password2.evaluate()){
Serial.println(" SECOND PASSWORD IS OK ");
changePassword();
}
else {
Serial.println(" Wrong password!");
Serial.println(" numero digitato :");//
scs();//<-------------------------qui poi vado a mettere il codice per inviare comandi luci
}
resetPassword();
}
void resetPassword() {
password1.reset();
password2.reset();
currentPasswordLength = 0;
}
void changePassword() {
newPasswordString = "1234";
newPasswordString.toCharArray(newPassword, newPasswordString.length()+1); //convert string to char array
password1.set(newPassword);
resetPassword();
Serial.print("Password changed to ");
Serial.println(newPasswordString);
}