Étape 4: Codage et final installation du composant.
J’ai branché l’écran LCD au port de bouclier I2C pour le raccordement d’Edison et la led pour pin13 et pin12
Où le vert est pin13 et rouge est axe de 12.
Et bien sûr le vert signifie rouge et ouvert fermé.
Il est facile de changer la led pour un relais ou un moteur d’asservissement par exemple. La led juste indique chaque fois qu’il y a courant ou non.
Maintenant pour le code.
Première définition de la bibliothèque et des variables globales.
C’est où vous pouvez changer le mot de passe pour ce que vous voulez. pour changer le mot de passe il suffit de modifier le "mot de passe password = mot de passe ("1234");" à autre chose comme mot de passe ("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;
Puis faire la configuration.
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);}
Et la boucle.
void loop(){keypad.getKey(); lcd.setCursor(0,0); lcd.print("Enter pincode"); digitalWrite(redLed,HIGH);}
Enfin, nous devons faire quelques événements que vous pouvez utiliser dans la boucle
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();}}