Stap 4: Codering en finale installatie van onderdelen.
Ik aangesloten de LCD display op Edisons connector schild I2C poort en de led's pin13 en pin12
Waar groen is pin13 en rode pin 12 is.
En natuurlijk de groene betekent open en rode gesloten.
Het is gemakkelijk om te wijzigen de led van een relais of een servomotor bijvoorbeeld. De led net aangeven wanneer er huidige is of niet.
Nu voor de code.
Eerste definitie van van de bibliotheek en globale variabelen.
Dit is waar u kunt het wachtwoord voor alles wat die je wilt wijzigen. om te veranderen het wachtwoord simpelweg wijzigen naar de "wachtwoord wachtwoord = Password ("1234");" aan iets anders als wachtwoord ("1230985");
#include #include #include #include "rgb_lcd.h"rgb_lcd lcd;Password password = Password("1234");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] = {5, 4, 3, 2}; byte colPins[COLS] = {8, 7, 6}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );byte greenLed = 13; byte redLed = 12;
Voer de setup.
void setup(){ lcd.begin(16, 2);pinMode(greenLed, OUTPUT); pinMode(redLed, OUTPUT); digitalWrite(greenLed, LOW); digitalWrite(redLed, LOW);Serial.begin(115200);keypad.addEventListener(keypadEvent); keypad.setDebounceTime(10);}
En de lus.
void loop(){keypad.getKey(); lcd.setCursor(0,0); lcd.print("Enter pincode"); digitalWrite(redLed,HIGH);}
Tot slot moeten we enkele van de gebeurtenis die u kunt gebruiken in de lus maken
void keypadEvent(KeypadEvent eKey){switch (keypad.getState()){case PRESSED:lcd.setCursor(0,1);lcd.print(eKey);Serial.print(eKey);switch (eKey){case '#': guessPassword(); break;default:password.append(eKey);}}}void guessPassword(){if (password.evaluate()){ digitalWrite(redLed, LOW); lcd.setCursor(0,0);lcd.print(" ");digitalWrite(greenLed,HIGH); lcd.setCursor(0,0);lcd.print("Correct.");Serial.println("Correct.");lcd.setCursor(0,1);lcd.print("Unlocked");password.reset();delay(10000);digitalWrite(greenLed,LOW);lcd.clear();}else{digitalWrite(greenLed, LOW);digitalWrite(redLed,HIGH);lcd.clear();lcd.setCursor(0,0);lcd.print("Wrong code");lcd.setCursor(0,1);lcd.print("Try again.");Serial.println("Try again");digitalWrite(redLed, LOW);delay(100);digitalWrite(redLed, HIGH);delay(100);digitalWrite(redLed, LOW);delay(100);digitalWrite(redLed, HIGH);delay(100);digitalWrite(redLed, LOW);delay(100);digitalWrite(redLed, HIGH);delay(100);digitalWrite(redLed, LOW);delay(100);digitalWrite(redLed, HIGH);delay(100);password.reset(); delay(1000);lcd.clear();}}