Кодовый замок представляет собой цифровое устройство предназначенное для разблокировки замка. Разблокировка замка осуществляется после того как пользователь наберет на клавиатуре определенную комбинацию клавиш. В данной статье речь идет о простом кодовом замке на платформе 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 цифры а дальше пароль то пароль разделился надвое и начало оказалось в середине ). НО ПРОГРАММА ХОРОШАЯ ,АВТОРУ СПАСИБО