Кодовый замок представляет собой цифровое устройство предназначенное для разблокировки замка. Разблокировка замка осуществляется после того как пользователь наберет на клавиатуре определенную комбинацию клавиш. В данной статье речь идет о простом кодовом замке на платформе Arduino. Код состоит из комбинации 6 цифр, который вводиться через клавиатуру. Введенное значение сравнивается с хранящимся в памяти значением.
Для того чтобы сделать кодовый замок нам понадобиться:
О том что такое Arduino было сказано ранее.
"Строчные" линии R1-R4 подключены к выводам Arduino с 6-го по 9-й. Колонные выводы C1-C4 подключены к выводам C1-C4. Третий вывод настроен как выход в цепь включена нагрузка, в нашем случае это светодиод D1, последовательно к которому подключено сопротивление номиналом в 330 Ом. Оно необходимо для ограничения тока через светодиод. В настоящем кодовом замке подключаться электромагнит управляющий положением защелки замка. Если светодиод горит то замок открыт,если выключен то замок закрыт.
Данная схема позволяет подсоединить к компьютеру и просматривать состояние кодового замка через мониторинг последовательного порта
среды разработки Arduino.
int p[6]; //array for storing the password
int c[6]; // array for storing the input code
int n;
int a=0;
int i=0;
int lock=3;
int r1=6;
int r2=7;
int r3=8;
int r4=9;
int c1=10;
int c2=11;
int c3=12;
int c4=13;
int colm1;
int colm2;
int colm3;
int colm4;
void setup()
{
pinMode(r1,OUTPUT);
pinMode(r2,OUTPUT);
pinMode(r3,OUTPUT);
pinMode(r4,OUTPUT);
pinMode(c1,INPUT);
pinMode(c2,INPUT);
pinMode(c3,INPUT);
pinMode(c4,INPUT);
pinMode(lock,OUTPUT);
Serial.begin(9600); //sets the baud rate at 9600
digitalWrite(c1,HIGH);
digitalWrite(c2,HIGH);
digitalWrite(c3,HIGH);
digitalWrite(c4,HIGH);
digitalWrite(lock,LOW);
p[0]=1; //sets 1st digit of the password
p[1]=2; // sets 2nd digit of the password
p[2]=3; // sets 3rd digit of the password
p[3]=4; // sets 4th digit of the password
p[4]=5; // sets 5th digit of the password
p[5]=6; // sets 6th digit of the password
}
void loop()
{
digitalWrite(r1,LOW);
digitalWrite(r2,HIGH);
digitalWrite(r3,HIGH);
digitalWrite(r4,HIGH);
colm1=digitalRead(c1);
colm2=digitalRead(c2);
colm3=digitalRead(c3);
colm4=digitalRead(c4);
if(colm1==LOW)
{ n=1;
a=1;
Serial.println("1");
delay(200);}
else
{
if(colm2==LOW)
{ n=2;
a=1;
Serial.println("2");
delay(200);}
else
{
if(colm3==LOW)
{Serial.println("3");
n=3;
a=1;
delay(200);}
else
{
if(colm4==LOW)
{Serial.println("LOCKED");
digitalWrite(lock,LOW); //locks
i=0;
delay(200);}
}}}
digitalWrite(r1,HIGH);
digitalWrite(r2,LOW);
digitalWrite(r3,HIGH);
digitalWrite(r4,HIGH);
colm1=digitalRead(c1);
colm2=digitalRead(c2);
colm3=digitalRead(c3);
colm4=digitalRead(c4);
if(colm1==LOW)
{Serial.println("4");
n=4;
a=1;
delay(200);}
else
{
if(colm2==LOW)
{Serial.println("5");
n=5;
a=1;
delay(200);}
else
{
if(colm3==LOW)
{Serial.println("6");
n=6;
a=1;
delay(200);}
else
{
if(colm4==LOW)
{
if(c[0]==p[0]&&c[1]==p[1]&&c[2]==p[2]&&c[3]==p[3]&&c[4]==p[4]&&c[5]==p[5])
{digitalWrite(lock,HIGH); //unlocks
Serial.println("UNLOCKED");
c[5]=9;} //corrupts the code in array c
else
{Serial.println("WRONG PASSWORD");}
delay(200);}
}}}
if(a==1) // test whether a digit key is pressed
{
c[i]=n; // saves the current digit pressed to array c
i=i+1;
a=0;}
}
Наш пароль состоит из 6 цифр "123456" это значение храниться в массиве "p". Введенные нами значения последовательно записываются в массив "c". В коде программы происходит сравнение этих двух массивов,после того как будет нажата кнопка разблокировки. Если они совпадают то посылаем на вывод 3 "положительный сигнал", а если не совпадают то "отрицательный".
Теперь вы знаете как сделать настоящий кодовый замок, и сохранить все ваше имущество!)
Комментарии
С первого раза не всегда получается)Ошиб ки тут точно не должно быть, в терминале у вас что отображается?
бред, цифры 7,8,9,0 не могут отображаться
Бес, я про цифры которые в коде. ...
А ошибку я нашел, все просто раскрывается . перевод описания работы укороченный, ничего не говорится про А и B . Вот дополнение упущенное : "....... код состоит из комбинации цифр от 1 до 6. Есть отдельные клавиши для блокировки и разблокировки системы. Система может быть разблокирована, нажав на кнопку разблокировки после ввода правильной комбинации цифр. Шестигранный ключ прокладка используется в качестве устройства ввода. Только первые два ряда ключевых (1, 2, 3, A, 4, 5, 6, Б) используется в этом проекте. Используется для блокировки системы и Б используется для разблокировки системы...."
где перечисляется где контакт выхода выключен,и можно добавлять кнопки в зависимости от ваших нужд,
но там есть одна ошибка - после того как программа сравнила массивы и выдала wrong password то после нужно переменной i присвоить 0 ,тк она отвечает за номер вводимой цифры в массив и если ввести несколько неправильных цифр то положение цифр сбивается(ввели 3 цифры а дальше пароль то пароль разделился надвое и начало оказалось в середине ). НО ПРОГРАММА ХОРОШАЯ ,АВТОРУ СПАСИБО