Intellekten Edison: Pinlock (tangentbord) (4 / 5 steg)
Steg 4: Kodning och final komponenten setup.
Jag ansluten LCD-displayen till Edisons kontakten sköld I2C port och led's till pin13 och pin12
Där gröna är pin13 och röd är stift 12.
Och naturligtvis gröna innebär öppen och röda stängda.
Det är lätt att ändra de lysdioder för ett relä eller en servomotor till exempel. Det ledde bara ange när det finns aktuella eller inte.
Nu för koden.
Första definitionen av bibliotekets och globala variabler.
Det här är där du kan ändra lösenordet för vad du vill. ändra lösenordet helt enkelt ändra den "lösenord lösenord = lösenord ("1234")," till något annat som lösenord ("1230985");
#include
#include
#include
#include "rgb_lcd.h"
rgb_lcd lcd;
Lösenord lösenord = Password("1234");
CONST byte rader = 4;
CONST byte COLS = 3;
char nycklar [rader] [COLS] = {
{"1", "2", "3"},
{'4', '5','6 '},
{'7', '8','9 '},
{'*','0','#'}
};
byte rowPins [rader] = {5, 4, 3, 2};
byte colPins [COLS] = {8, 7, 6};
Tangentbordet knappsatsen = knappsatsen (makeKeymap(keys), rowPins, colPins, rader, kolumner);
byte greenLed = 13.
byte redLed = 12;
Gör sedan installationen.
void setup() {
LCD.BEGIN (16, 2);
pinMode (greenLed, produktionen);
pinMode (redLed, produktionen);
digitalWrite (greenLed, låg);
digitalWrite (redLed, låg);
Serial.BEGIN(115200);
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(10);
}
Och slingan.
void loop() {
keypad.getKey();
lcd.setCursor(0,0);
LCD.Print ("ange PIN-koden");
digitalWrite(redLed,HIGH);
}
Slutligen måste vi göra några evenemang som du kan använda i slingan
void keypadEvent (KeypadEvent eNyckeln) {
Switch (keypad.getState()) {
fall tryckt:
lcd.setCursor(0,1);
LCD.Print(eKey);
Serial.Print(eKey);
Växla (eNyckeln) {
ärende '#': guessPassword();
bryta;
standard:
Password.append(eKey);
}
}}
void guessPassword() {
om (password.evaluate()) {
digitalWrite (redLed, låg);
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();
}
annat {
digitalWrite (greenLed, låg);
digitalWrite(redLed,HIGH);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("fel kod").
lcd.setCursor(0,1);
LCD.Print ("försök igen.");
Serial.println ("försök igen");
digitalWrite (redLed, låg);
Delay(100);
digitalWrite (redLed, hög);
Delay(100);
digitalWrite (redLed, låg);
Delay(100);
digitalWrite (redLed, hög);
Delay(100);
digitalWrite (redLed, låg);
Delay(100);
digitalWrite (redLed, hög);
Delay(100);
digitalWrite (redLed, låg);
Delay(100);
digitalWrite (redLed, hög);
Delay(100);
Password.Reset();
Delay(1000);
LCD.Clear();
}
}