Arduino Låskista (1 / 5 steg)
Steg 1: Set-up, kod
#include
#include
#include
#include
int greenLed = 22.
int redLed = 23.
int servoPin = 24; / / Servo
int piezoPin = 25;
char * ourCode = "1234";
int aktuellaposition = 0;
Servo myservo;
int pos = 0;
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] = {13,10,9,8}.
byte colPins [cols] = {7,6,1}.
Knappsatsen keypad=Keypad(makeKeymap(keys),rowPins,colPins,rows,cols);
LiquidCrystal Lcd (12,11,5,4,3,2);
void setup()
{
LCD.BEGIN(16,2);
myservo.attach(24);
displayCodeEntryScreen();
pinMode(piezoPin,OUTPUT);
pinMode(servoPin,OUTPUT);
pinMode(redLed,OUTPUT);
pinMode(greenLed,OUTPUT);
digitalWrite(redLed,LOW);
digitalWrite(greenLed,LOW);
}
void loop() {
int l;
char key=keypad.getKey();
Lcd.setCursor(0,0);
LCD.Print ("Ange lösenord");
IF(int(Key)!=0) {
Lcd.setCursor(4,1);
för (l = 0; l < = aktuellaposition; ++ l)
{Lcd.print("*");}
IF(Key==ourCode[currentPosition])
{
++ aktuellaposition;
IF(currentPosition==4)
{unlockDoor();
aktuellaposition = 0;
}
}
Else{invalidCode();
aktuellaposition = 0;
}
}
}
void invalidCode()
{
digitalWrite(redLed,HIGH);
digitalWrite(servoPin,LOW);
digitalWrite(piezoPin,HIGH);
clearScreen();
Lcd.setCursor(0,0);
LCD.Print ("åtkomst nekad!");
Lcd.setCursor(0,1);
LCD.Print ("ogiltig kod").
Delay(5000);
digitalWrite(redLed,LOW);
digitalWrite(piezoPin,LOW);
displayCodeEntryScreen();
}
void turnHandle()
{
för (pos = 0; pos < = 180, pos + = 1) / / går från 0 grader till 180 grader
{/ / i steg om 1 grad
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(15); Waits 15 MS för servo att nå ställning
}
för (pos = 180, pos > = 0; pos-= 1) / / går från 180 grader till 0 grader
{
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(15); Waits 15 MS för servo att nå ställning
}
}
void unlockDoor()
{
digitalWrite(greenLed,HIGH);
clearScreen();
Lcd.setCursor(0,0);
LCD.Print ("tillgång beviljas");
Lcd.setCursor(0,1);
LCD.Print ("Välkommen!");
digitalWrite(servoPin,HIGH);
turnHandle();
Delay(500);
digitalWrite(greenLed,LOW);
digitalWrite(servoPin,LOW);
displayCodeEntryScreen();
}
void displayCodeEntryScreen()
{
clearScreen();
Lcd.setCursor(0,0);
LCD.Print ("Hej och");
Lcd.setCursor(0,1);
LCD.Print ("Välkommen!");
Delay(3000);
clearScreen();
}
void clearScreen()
{
Lcd.setCursor(0,0);
LCD.Print("");
Lcd.setCursor(0,1);
LCD.Print("");
}