Offline
Jr. Member
Karma: 0
Posts: 58
|
 |
« Reply #3 on: January 23, 2012, 04:45:26 pm » |
questo e lo sketch
#include <Keypad.h> #include <EEPROM.h>
char* secretCode = "1234"; int position = 0; boolean locked = true;
const byte rows = 4; const byte cols = 3; char keys[rows][cols] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} };
byte rowPins[rows] = {4, 9, 8, 6}; byte colPins[cols] = {5, 3, 7}; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
int redPin = 12; int greenPin = 11; int solenoidPin = 10;
void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); loadCode(); flash(); updateOutputs(); }
void loop() { char key = keypad.getKey(); if (key == '*' && ! locked) { // unlocked and * pressed so change code position = 0; getNewCode(); updateOutputs(); } if (key == '#') { locked = true; position = 0; updateOutputs(); } if (key == secretCode[position]) { position ++; } if (position == 4) { locked = false; updateOutputs(); } delay(100); } void updateOutputs() { if (locked) { digitalWrite(redPin, HIGH); digitalWrite(greenPin, LOW); digitalWrite(solenoidPin, HIGH); } else { digitalWrite(redPin, LOW); digitalWrite(greenPin, HIGH); digitalWrite(solenoidPin, LOW); } } void getNewCode() { flash(); for (int i = 0; i < 4; i++ ) { char key; key = keypad.getKey(); while (key == 0) { key = keypad.getKey(); } flash(); secretCode = key; } saveCode(); flash();flash(); }
void loadCode() { if (EEPROM.read(0) == 1) { secretCode[0] = EEPROM.read(1); secretCode[1] = EEPROM.read(2); secretCode[2] = EEPROM.read(3); secretCode[3] = EEPROM.read(4); } }
void saveCode() { EEPROM.write(1, secretCode[0]); EEPROM.write(2, secretCode[1]); EEPROM.write(3, secretCode[2]); EEPROM.write(4, secretCode[3]); EEPROM.write(0, 1); }
void flash() { digitalWrite(redPin, HIGH); digitalWrite(greenPin, HIGH); delay(500); digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); }
apena si avvia e gia in lock si inserisce il pin "1234" e si sblocca quando e sbloccato si preme * per ribloccare o # per cambiare il pin dato che questo schema lo fatto ancora6-7 mesi fa nn ricordo più come lavora. ma credo che per resettare il pin bisogni fare il clear della eepron
|