Как сделать кодовый замок на Arduino

Кодовый замок представляет собой цифровое устройство предназначенное для разблокировки замка. Разблокировка замка осуществляется после того как пользователь наберет на клавиатуре определенную комбинацию клавиш. В данной статье речь идет о простом кодовом замке на платформе Arduino. Код состоит из комбинации 6 цифр, который вводиться через клавиатуру. Введенное значение сравнивается с хранящимся в памяти значением.

Для того чтобы сделать кодовый замок нам понадобиться:

  • одна плата Arduino UNO, или другие платы;
  • клавиатура ввода данных;
  • нагрузка.

О том что такое 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 "положительный сигнал", а если не совпадают то "отрицательный".

Мониторинг самодельного кодового замка

 Теперь вы знаете как сделать настоящий кодовый замок, и сохранить все ваше имущество!)

Комментарии  

 
#1 Сергей 29.06.2015 16:30
сделал, 17 раз проверил,но увы, не работает :( в проге нет ошибок?
Цитировать
 
 
#2 Антон 29.06.2015 17:17
Цитирую Сергей:
сделал, 17 раз проверил,но увы, не работает :( в проге нет ошибок?

С первого раза не всегда получается)Ошиб ки тут точно не должно быть, в терминале у вас что отображается?
Цитировать
 
 
#3 Александр 29.06.2015 17:22
При вводе цифры 1, у вас она отображается в мониторинге порта?
Цитировать
 
 
#4 Сергей 29.06.2015 17:29
все цифры отображаются ,только лента сообщений порта быстро бежит.
Цитировать
 
 
#5 bes 06.07.2015 19:47
Цитирую Сергей:
все цифры отображаются ,только лента сообщений порта быстро бежит.

бред, цифры 7,8,9,0 не могут отображаться
Цитировать
 
 
#6 Сергей 07.07.2015 07:41
Цитирую bes:
Цитирую Сергей:
все цифры отображаются ,только лента сообщений порта быстро бежит.

бред, цифры 7,8,9,0 не могут отображаться

Бес, я про цифры которые в коде. ...
А ошибку я нашел, все просто раскрывается . перевод описания работы укороченный, ничего не говорится про А и B . Вот дополнение упущенное : "....... код состоит из комбинации цифр от 1 до 6. Есть отдельные клавиши для блокировки и разблокировки системы. Система может быть разблокирована, нажав на кнопку разблокировки после ввода правильной комбинации цифр. Шестигранный ключ прокладка используется в качестве устройства ввода. Только первые два ряда ключевых (1, 2, 3, A, 4, 5, 6, Б) используется в этом проекте. Используется для блокировки системы и Б используется для разблокировки системы...."
Цитировать
 
 
#7 Дед Пихто 14.11.2015 18:22
Программа получилась не очень дружелюбная. Не отслеживаются паузы между нажатиями. Если не успеешь отпустить кнопку через 300мсек то эта-же цифра запишется в следующую ячейку массива "с" и код получится неверный. А при проверке кода указатель "i" не сбрасывается, вторую попытку надо делать только после нажатия кнопки "А" .
Цитировать
 
 
#8 Павел Складнев 25.03.2016 13:53
на самом деле программа хорошая ,если нужно добавить какие-то кнопки то копируется часть программы
где перечисляется где контакт выхода выключен,и можно добавлять кнопки в зависимости от ваших нужд,
но там есть одна ошибка - после того как программа сравнила массивы и выдала wrong password то после нужно переменной i присвоить 0 ,тк она отвечает за номер вводимой цифры в массив и если ввести несколько неправильных цифр то положение цифр сбивается(ввели 3 цифры а дальше пароль то пароль разделился надвое и начало оказалось в середине ). НО ПРОГРАММА ХОРОШАЯ ,АВТОРУ СПАСИБО ;-)
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа