помогите создать домофон

ewwwww
Offline
Зарегистрирован: 19.05.2015
  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}
  4. #define SS_PIN 10
  5. #define RST_PIN 9
  6. #define DD 4 // Pin D4 --> выход на реле
  7. #define ZZ 5 // Pin D4 --> выход на активный зуммер
  8. #define REL DD // REL - открывает дверь
  9. MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522
  10. MFRC522::MIFARE_Key key;
  11.  
  12. // готовим массив карт с флагами доступа 0-нет доступа, 1-есть доступ (спец пропуска)
  13. struct Cards {
  14. String id;
  15. int flag;
  16. };
  17. struct Cards cards[8] ={{"0000000000",1},{"0000000000",1},{"0000000000",1},{"0000000000",1},{"0000000000",0},{"0000000000",0},{"0000000000",0},{"0000000000",0}};
  18. boolean work=false;
  19. unsigned int CUR_TIME;
  20. unsigned int ALL_TIME;
  21.  
  22. void setup(void)
  23. {
  24.  
  25. while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
  26. SPI.begin(); // Init SPI bus
  27. mfrc522.PCD_Init(); // Init MFRC522 card
  28.  
  29. pinMode(4,OUTPUT);
  30. digitalWrite(4,HIGH);
  31. pinMode(5,OUTPUT);
  32. digitalWrite(5,LOW);
  33. Serial.begin(115200);
  34. Serial.print("setup begin\r\n");
  35. }
  36. void loop(void)
  37. {
  38. ALL_TIME=(millis()/1000);
  39. if ((ALL_TIME - CUR_TIME)>=5){
  40. work=true;
  41. work=false;
  42. CUR_TIME=ALL_TIME;
  43. }
  44. if (work==false){
  45. work=true;
  46. //------------------------РАБОТАЕМ СО СЧИТЫВАТЕЛЕМ КАРТ----------------------------
  47. // Look for new cards, and select one if present
  48. if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
  49. delay(50);
  50. work=false;
  51. return;
  52. }
  53.  
  54. String UID = dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  55. // mfrc522.PICC_HaltA();
  56.  
  57. Serial.print(F("Card UID: "));
  58. Serial.print(UID);
  59. Serial.println();
  60.  
  61. //----------------------------------открытие дверей по пропускам--------------------------------
  62. if (UID!=""){
  63. for (int i = 0; i <= 7; i++) {
  64. if (cards[i].id==UID && cards[i].flag==1) {
  65. DoorOpen(UID);
  66. work=false;
  67. return;
  68. }
  69. }
  70.  
  71. }
  72. }
  73. work=false;
  74. } //это конец LOOPа
  75. //------------------------выуживаем UID из карты как числовое значение----------------------------
  76.  
  77. String dump_byte_array(byte *buffer, byte bufferSize) {
  78. // String s;
  79. unsigned long uiddec = 0;
  80. // unsigned long temp;
  81. char uid[8];
  82. for (byte m = (bufferSize > 4 ? (bufferSize - 4) : 0); m < bufferSize; m++) { //берем только последние 4 байта и переводим в десятичную систему
  83. unsigned long p = 1;
  84. for(int k = 0; k < bufferSize-m-1; k++) {
  85. p = p*256;
  86. }
  87. uiddec += p*buffer[m];
  88. // s = s + (buffer[m] < 0x10 ? "0" : "");
  89. // s = s + String(buffer[m], HEX);
  90. }
  91. // s.toCharArray(uid, 8);
  92. return String(uiddec);
  93. }
  94.  
  95. //-----------открытие двери
  96. void DoorOpen(String uid){
  97. Serial.print(F("DOOR-OPEN!"));
  98. Serial.println();
  99. digitalWrite( REL, LOW );
  100. for (int i = 0; i <= 6; i++) {
  101. digitalWrite( ZZ, HIGH ); delay(250);digitalWrite( ZZ, LOW );delay(250);
  102. digitalWrite( ZZ, HIGH ); delay(250);digitalWrite( ZZ, LOW );delay(250);
  103. }
  104. digitalWrite( REL, HIGH );
  105. }
ewwwww
Offline
Зарегистрирован: 19.05.2015

помогите создать кнопку открытия двери из нутри 

 

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Вставте в код чтение кнопки и если кнопка зажата то вызываете процес открытия.

ewwwww
Offline
Зарегистрирован: 19.05.2015

Я не очень разбираюсь только учусь 

ewwwww
Offline
Зарегистрирован: 19.05.2015

Помогите отредактировать 

ewwwww
Offline
Зарегистрирован: 19.05.2015

Что куда у меня не получаеться помоги

ewwwww
Offline
Зарегистрирован: 19.05.2015

Люди помогите 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Если ты хочешь научиться - начни с более простых задач.  Если просто "ПАМАГИТИ!!!!" - это в раздел "Ищу исполнителя". Там люди меняют своё время на твои деньги.  

adread
Offline
Зарегистрирован: 23.01.2018

Самый простой пример: http://arduino.ru/tutorials/button

// считываем значения с входа кнопки

  buttonState = digitalRead(buttonPin);

  // проверяем нажата ли кнопка
  // если нажата, то buttonState будет HIGH:
  if (buttonState == HIGH) {   
    // открываем дверь
    DoorOpen("открыто кнопкой");

  }

 

 

ewwwww
Offline
Зарегистрирован: 19.05.2015

Спасибо буду должен

 

ewwwww
Offline
Зарегистрирован: 19.05.2015

Сколько будет стоить добавить кнопку в скетч 

sadman41
Offline
Зарегистрирован: 19.10.2016

Пиццот. Каждому.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

и пузырь

ewwwww
Offline
Зарегистрирован: 19.05.2015

А серьезно надо очень 

sadman41
Offline
Зарегистрирован: 19.10.2016

ewwwww пишет:

А серьезно надо очень 

Ну, напишите на wrk.sadman@gmail.com, договоримся может. А так-то есть для таких работ раздел сайта специальный.

satelit 2
Offline
Зарегистрирован: 04.12.2016

я занимаюсь обслуживанием домофонов, и там я скажу все так просто. кнопка выхода подключена к блоку питания, которая отключает магнит.