Официальный сайт компании Arduino по адресу arduino.cc
помогите создать домофон
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 21/01/2018 - 22:21
- #include <SPI.h>
- #include <MFRC522.h>
- #define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}
- #define SS_PIN 10
- #define RST_PIN 9
- #define DD 4 // Pin D4 --> выход на реле
- #define ZZ 5 // Pin D4 --> выход на активный зуммер
- #define REL DD // REL - открывает дверь
- MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522
- MFRC522::MIFARE_Key key;
- // готовим массив карт с флагами доступа 0-нет доступа, 1-есть доступ (спец пропуска)
- struct Cards {
- String id;
- int flag;
- };
- struct Cards cards[8] ={{"0000000000",1},{"0000000000",1},{"0000000000",1},{"0000000000",1},{"0000000000",0},{"0000000000",0},{"0000000000",0},{"0000000000",0}};
- boolean work=false;
- unsigned int CUR_TIME;
- unsigned int ALL_TIME;
- void setup(void)
- {
- while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
- SPI.begin(); // Init SPI bus
- mfrc522.PCD_Init(); // Init MFRC522 card
- pinMode(4,OUTPUT);
- digitalWrite(4,HIGH);
- pinMode(5,OUTPUT);
- digitalWrite(5,LOW);
- Serial.begin(115200);
- Serial.print("setup begin\r\n");
- }
- void loop(void)
- {
- ALL_TIME=(millis()/1000);
- if ((ALL_TIME - CUR_TIME)>=5){
- work=true;
- work=false;
- CUR_TIME=ALL_TIME;
- }
- if (work==false){
- work=true;
- //------------------------РАБОТАЕМ СО СЧИТЫВАТЕЛЕМ КАРТ----------------------------
- // Look for new cards, and select one if present
- if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
- delay(50);
- work=false;
- return;
- }
- String UID = dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
- // mfrc522.PICC_HaltA();
- Serial.print(F("Card UID: "));
- Serial.print(UID);
- Serial.println();
- //----------------------------------открытие дверей по пропускам--------------------------------
- if (UID!=""){
- for (int i = 0; i <= 7; i++) {
- if (cards[i].id==UID && cards[i].flag==1) {
- DoorOpen(UID);
- work=false;
- return;
- }
- }
- }
- }
- work=false;
- } //это конец LOOPа
- //------------------------выуживаем UID из карты как числовое значение----------------------------
- String dump_byte_array(byte *buffer, byte bufferSize) {
- // String s;
- unsigned long uiddec = 0;
- // unsigned long temp;
- char uid[8];
- for (byte m = (bufferSize > 4 ? (bufferSize - 4) : 0); m < bufferSize; m++) { //берем только последние 4 байта и переводим в десятичную систему
- unsigned long p = 1;
- for(int k = 0; k < bufferSize-m-1; k++) {
- p = p*256;
- }
- uiddec += p*buffer[m];
- // s = s + (buffer[m] < 0x10 ? "0" : "");
- // s = s + String(buffer[m], HEX);
- }
- // s.toCharArray(uid, 8);
- return String(uiddec);
- }
- //-----------открытие двери
- void DoorOpen(String uid){
- Serial.print(F("DOOR-OPEN!"));
- Serial.println();
- digitalWrite( REL, LOW );
- for (int i = 0; i <= 6; i++) {
- digitalWrite( ZZ, HIGH ); delay(250);digitalWrite( ZZ, LOW );delay(250);
- digitalWrite( ZZ, HIGH ); delay(250);digitalWrite( ZZ, LOW );delay(250);
- }
- digitalWrite( REL, HIGH );
- }
помогите создать кнопку открытия двери из нутри
Вставте в код чтение кнопки и если кнопка зажата то вызываете процес открытия.
Я не очень разбираюсь только учусь
Помогите отредактировать
Что куда у меня не получаеться помоги
Люди помогите
Если ты хочешь научиться - начни с более простых задач. Если просто "ПАМАГИТИ!!!!" - это в раздел "Ищу исполнителя". Там люди меняют своё время на твои деньги.
Самый простой пример: http://arduino.ru/tutorials/button
Спасибо буду должен
Сколько будет стоить добавить кнопку в скетч
Пиццот. Каждому.
и пузырь
А серьезно надо очень
А серьезно надо очень
Ну, напишите на wrk.sadman@gmail.com, договоримся может. А так-то есть для таких работ раздел сайта специальный.
я занимаюсь обслуживанием домофонов, и там я скажу все так просто. кнопка выхода подключена к блоку питания, которая отключает магнит.