Поиск по этому блогу

2 сент. 2016 г.

Контроль доступа на Arduino

Попытался сделать в деревню...

               
*/
//=====================================================================================//
#include  // Инициализация библиотеки Wire
#include  // Инициализация библиотеки шины OneWire.
#include  // Инициализация библиотеки для LCD-20x4
#include Инициализация библиотеки сервопривода
#include  // Инициализация библиотеки SPI для "RFID-RC522"
#include // Инициализация библиотеки "RFID-RC522"
#include  // Инициализация библиотеки Adafruit_GFX для нокиа-5510
#include  // Инициализация библиотеки Adafruit_PCD8544 для нокиа-5510
#include "RTClib.h"
#include
//===========================================================================================//
#define BACKLIGHT     7 //Х.З.
#define LCD_EN  4 //я незнаю как сказать или как понять
#define LCD_RW  5 //но эти строки нужнв для того чтобы
#define LCD_RS  6 //Ардуино понимала как подключены ножки
#define LCD_D4  0 //дисплея к ножкам I2C микросхемы и все
#define LCD_D5  1 //работает нормально поверьте
#define LCD_D6  2 //проверено мной лично 0259!
#define LCD_D7  3 //если кто сможет обяснить назначение этих строк правильно пожалуйста распишите для меня
//#define ONE_WIRE_BUS 10// Подключение цифрового вывода датчика к 10-му пину Ардуино.
//===========================================================================================//
LiquidCrystal_I2C lcd(63, 20, 4); // устанавливаем адрес 63, и дисплей 20 символов в 4 строки (20х4)
Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2); //описываем ноги дисплея нокиа-5510 (CLK, DIN, DC, CE, RST)
//OneWire oneWire(ONE_WIRE_BUS);// Запуск интерфейса OneWire для подключения OneWire устройств.
//===========================================================================================//
#define SS_PIN 10 // описание ног RFID считывателя
#define RST_PIN 9 // описание ног RFID считывателя
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp;  // для храниения номера RFID метки/карточки в десятичном формате
Servo servo;
RTC_DS1307 RTC;
const int SoundPin = 7; // Пин подключения пьезоизлучателя – 7 дискретный
int lPin = 1; // пин подключения подсветки дисплея нокиа-5510
int DelaySound = 200; // звучание нот пьезоизлучател 0.2 секунд
void setup()
{
  pinMode(lPin, OUTPUT);
  //===========================================================================================//
  // инициализация очистка и подсветка дисплея нокиа-5510
  display.begin();
  display.clearDisplay(); // очистка дисплея нокиа-5510
  display.display();
  display.setContrast(61); // установка контраста
  delay(1000);
  display.setTextSize(1);  // установка размера шрифта
  display.setTextColor(BLACK); // установка цвета текста
  display.setCursor(0, 0); // установка положения курсора
  pinMode(lPin, OUTPUT);// инициализируем пин как выход на подсветку дисплея нокиа-5510
  digitalWrite(lPin, 0); //гасим подсветку дисплея нокиа-5510
  //===========================================================================================//
  lcd.init(); // инициализация LCD 20x4
  lcd.backlight();  // включаем подсветку
  lcd.clear();  // очистка дисплея
  lcd.setCursor(2, 0); // устанавливаем курсор,  3 знак 1 строка
  lcd.print("Platonov Andrey"); // вывод сообщения на LCD 20x4
  //===========================================================================================//
  Serial.begin(9600);
  Serial.println("Waiting for card...");
  SPI.begin();  //  инициализация SPI / Init SPI bus.
  Wire.begin();
  mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.
  servo.attach(8);  // подключаем сервопривод к 8 пину
  servo.write(0);  // устанавливаем серву в закрытое сосотояние
  RTC.begin();
}
//===========================================================================================//
void loop()
{
  //делаем часы
  DateTime now = RTC.now(); // объявляем набор данных, считываемый из RTC_DS1307 значений времени
  lcd.setCursor(0, 3);  // устанавливаем курсор,  1 знак 4 строка
  if (now.hour() < 10)  // если часов меньше 10
    lcd.print('0');     // то пририсовываем впереди 0
  lcd.print(now.hour(), DEC); // печатаем на LCD 20x4 часы
  lcd.print(":");  // печатаем на LCD 20x4 разделительные точки
  if (now.minute() < 10)  // если минут меньше 10
    lcd.print('0');       // то пририсовываем впереди 0
  lcd.print(now.minute(), DEC); // печатаем на LCD 20x4 минуты
  lcd.print(":");  // печатаем на LCD 20x4 разделительные точки
  if (now.second() < 10)  // если секунд меньше 10
    lcd.print('0');       // то пририсовываем впереди 0
  lcd.print(now.second(), DEC); // печатаем на LCD 20x4 секунды
  //===========================================================================================//
  lcd.print(" "); //печатаем на LCD 20x4 разделительного пробела
  if (now.day() < 10) //
    lcd.print('0');
  lcd.print(now.day(), DEC);
  lcd.print("/");
  if (now.month() < 10)
    lcd.print('0');
  lcd.print(now.month(), DEC);
  lcd.print("/");
  lcd.print(now.year(), DEC);
  delay(500);
  //===========================================================================================//
  // Поиск новой метки
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  // Выбор метки
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  uidDec = 0;
  // Выдача серийного номера метки.
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    uidDecTemp = mfrc522.uid.uidByte[i];
    uidDec = uidDec * 256 + uidDecTemp;
  }
  //===========================================================================================//
  Serial.println("==================");
  Serial.println("Card UID: ");
  Serial.println(uidDec); // Выводим UID метки в консоль.
  if (uidDec == 421629573 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
  {
    lcd.backlight();  // включаем подсветку LCD 20x4
    lcd.setCursor(5, 0);  // устанавливаем курсор,  6 знак 1 строка
    lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
    Serial.println("WELCOME!");
    lcd.setCursor(1, 1);  // устанавливаем курсор,  2 знак 2 строка
    lcd.print("Platonov Andrey"); //печать на LCD 20x4 "Platonov Andrey"
    Serial.println("Platonov Andrey");
    Serial.println("==================");
    lcd.setCursor(1, 2);  // устанавливаем курсор,  2 знак 3 строка
    lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
    lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    noTone(7); // Выключаем звук
    servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(7, 300, 500); // Делаем звуковой сигнал,  Закрытие
    lcd.noBacklight(); // гасим подсветку LCD 20x4
    lcd.clear();  // очистка дисплея LCD 20x4
    servo.write(0);  // устанавливаем серву в закрытое сосотояние
  }
  //===========================================================================================//
  else if (uidDec == 2263293483 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
  {
    lcd.backlight();  // включаем подсветку LCD 20x4
    lcd.setCursor(5, 0);  // устанавливаем курсор,  6 знак 1 строка
    lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
    Serial.println("WELCOME!");
    lcd.setCursor(1, 1);  // устанавливаем курсор,  2 знак 2 строка
    lcd.print("Platonova Larisa"); //печать на LCD 20x4 "Platonova Larisa"
    Serial.println("Platonova Larisa");
    Serial.println("==================");
    lcd.setCursor(1, 2);  // устанавливаем курсор,  2 знак 3 строка
    lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
    lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    noTone(7); // Выключаем звук
    servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(7, 300, 500); // Делаем звуковой сигнал,  Закрытие
    lcd.noBacklight(); // гасим подсветку LCD 20x4
    lcd.clear();  // очистка дисплея LCD 20x4
    servo.write(0);  // устанавливаем серву в закрытое сосотояние
  }
  //===========================================================================================//
  else if (uidDec == 2573439878 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
  {
    // digitalWrite(lPin, 255); // включаем подсветку дисплея нокиа-5510
    display.println("Добро         Пожаловать!   "); // пишем имя владельца на нокиа-5510
    display.println("Платонова     Алена");  // пишем имя владельца на нокиа-5510
    display.display();
    //===========================================================================================//
    lcd.backlight();  // включаем подсветку LCD 20x4
    lcd.setCursor(5, 0);  // устанавливаем курсор,  6 знак 1 строка
    lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
    Serial.println("WELCOME!");
    lcd.setCursor(1, 1);  // устанавливаем курсор,  2 знак 2 строка
    lcd.print("Platonova Alena"); //печать на LCD 20x4 "Platonova Larisa"
    Serial.println("Platonova Alena");
    Serial.println("==================");
    lcd.setCursor(1, 2);  // устанавливаем курсор,  2 знак 3 строка
    lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
    lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
    //===========================================================================================//
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1700); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    tone(7, 1400); // Делаем звуковой сигнал, Открытие
    delay(DelaySound);
    //===========================================================================================//
    noTone(7); // Выключаем звук
    servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(7, 300, 500); // Делаем звуковой сигнал,  Закрытие
    //===========================================================================================//
    digitalWrite(lPin, 0); // гасим подсветку дисплея нокиа-5510
    display.clearDisplay();  // очищаем дисплей нокиа-5510
    display.display();
    //=============================================================================================//
    lcd.noBacklight(); // гасим подсветку LCD 20x4
    lcd.clear();  // очистка дисплея LCD 20x4
    servo.write(0);  // устанавливаем серву в закрытое сосотояние
    //===========================================================================================//
  }
  else
  {
    lcd.backlight();  // включаем подсветку LCD 20x4
    lcd.setCursor(3, 0);  // устанавливаем курсор,  4 знак 1 строка
    lcd.print("Unknown Card!"); //печать на LCD 20x4 "Unknown Card!"
    Serial.println("Unknown User");
    lcd.setCursor(4, 1);  // устанавливаем курсор,  6 знак 2 строка
    lcd.print("Access is Denied!"); //печать на LCD 20x4 "Door Close"
    lcd.setCursor(1, 2);  // устанавливаем курсор,  2 знак 3 строка
    lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
    lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
    tone(7, 170, 1000); // Делаем звуковой сигнал, Открытие
    delay(3000); // пауза 3 сек
    lcd.noBacklight(); // гасим подсветку LCD 20x4
    lcd.clear();  // очистка дисплея LCD 20x4
    //===========================================================================================//
  }
}

/*