несколько rfid меток

Serega161610
Offline
Зарегистрирован: 28.09.2019

Подносим правильную rfid метку горит зеленый диод если не правильную горит красный 

как добавить несколько меток (карты, брелки) чтобы горел зеленый диод

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
#define greenPin  8
#define redPin  7
MFRC522 mfrc522(SS_PIN, RST_PIN);

const uint8_t valid_uid[] = {0x56, 0xF3, 0x6D, 0x1F};


void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(greenPin,OUTPUT); 
  pinMode(redPin,OUTPUT);
}

void loop() {
  if(!mfrc522.PICC_IsNewCardPresent())
    return;

  if(!mfrc522.PICC_ReadCardSerial())
    return;

  if((mfrc522.uid.size == sizeof(valid_uid)) &&
      (memcmp(&mfrc522.uid.uidByte, &valid_uid,
              sizeof(valid_uid)) == 0))
  {
   
   digitalWrite(greenPin, 1);
   delay(3000);
   digitalWrite(greenPin, 0);
   delay(10);  
  } else {
    digitalWrite(redPin, 1);
   delay(3000);
   digitalWrite(redPin, 0);
   delay(10);
  }
}

 

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

^C , ^V

Serega161610
Offline
Зарегистрирован: 28.09.2019

sadman41 пишет:

^C , ^V

а по русски 

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

Serega161610 пишет:

sadman41 пишет:

^C , ^V

а по русски 

КонтралЦэ, КонтралВэ

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

Так программы всё-равно "по русски" не пишут, учите english.

Serega161610
Offline
Зарегистрирован: 28.09.2019

sadman41 пишет:

Так программы всё-равно "по русски" не пишут, учите english.

Чол  пошутил я тоже (Типа скопировать а если мне 20 меток надо то какой код будить)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Serega161610 пишет:

а если мне 20 меток надо то какой код будить

И какой? Нормальный. А если 2000 меток?

Вы бы озвучили полный список хотелок сразу, а то там скоро и миллион вылезет.

Serega161610
Offline
Зарегистрирован: 28.09.2019

ЕвгенийП пишет:

Serega161610 пишет:

а если мне 20 меток надо то какой код будить

И какой? Нормальный. А если 2000 меток?

Вы бы озвучили полный список хотелок сразу, а то там скоро и миллион вылезет.

Почему бы и нет смысл кода та не изменится (возможно памяти не хватит)

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Использование uid для идентификации карты само по себе является неправильным решением. uid никак не защищен по определению, первое что не рекомендуют делать, это использовать его для идентификации, несмотря на это в СКУД продолжают его использовать.
Простое решение
При персонализации:
выбрать сектор, установить в access bits для этого сектора разрешение чтение/записи на ключе 'B' (не забыть поменять этот ключ), выбрать блок в секторе и записать свой идентификатор.
При валидации (проверке):
Для блока выполнить аутентификацию и прочитать идентификатор.
Таким образом, все карты будут иметь один идентификатор, который можно прочитать только зная ключ.
Не нужно в коде проверять "несколько меток", у всех меток будет один идентификатор, а ключ для его чтения известен только вам.

Serega161610
Offline
Зарегистрирован: 28.09.2019

Алексей. пишет:

Использование uid для идентификации карты само по себе является неправильным решением. uid никак не защищен по определению, первое что не рекомендуют делать, это использовать его для идентификации, несмотря на это в СКУД продолжают его использовать.
Простое решение
При персонализации:
выбрать сектор, установить в access bits для этого сектора разрешение чтение/записи на ключе 'B' (не забыть поменять этот ключ), выбрать блок в секторе и записать свой идентификатор.
При валидации (проверке):
Для блока выполнить аутентификацию и прочитать идентификатор.
Таким образом, все карты будут иметь один идентификатор, который можно прочитать только зная ключ.
Не нужно в коде проверять "несколько меток", у всех меток будет один идентификатор, а ключ для его чтения известен только вам.

Такой вариант конечно лучше но нужно именно проверка нескольких меток

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Получив в руки одну метку (всего не несколько миллисекунд), только для того чтоб считать uid, можно изготовить неограниченное количество меток с таким-же uid-ом.
И что тогда проверять?
Про СКУД писал-же, от домофона у меня на руках 4-ре метки, все девственно чисты и у всех один и тот-же uid. Зачем проверять много если можно проверить один.

Serega161610
Offline
Зарегистрирован: 28.09.2019

Алексей. пишет:

Получив в руки одну метку (всего не несколько миллисекунд), только для того чтоб считать uid, можно изготовить неограниченное количество меток с таким-же uid-ом.
И что тогда проверять?
Про СКУД писал-же, от домофона у меня на руках 4-ре метки, все девственно чисты и у всех один и тот-же uid. Зачем проверять много если можно проверить один.

ладно спасибо

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

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

[code]
//Viral Science www.youtube.com/c/viralscience
//RFID Solenoid Lock

#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 6 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 5 //relay pin
#define BUZZER 7 //buzzer pin
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();          // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(RELAY, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  digitalWrite(RELAY, LOW);
  Serial.println("Put your card to the reader...");
  Serial.println();

}
void loop() 
{
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "93 9B 42 1A" ) //change here the UID of the card/cards that you want to give access
 
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(500);
    digitalWrite(RELAY, HIGH);
    digitalWrite(LED_G, HIGH);
    delay(ACCESS_DELAY);
    digitalWrite(RELAY, LOW);
    digitalWrite(LED_G, LOW);
  }
 
 else   {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 300);
    delay(DENIED_DELAY);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
  }
}
[/code]

 

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

Не вижу никаких попыток добавить доп. метки.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

Я рабочий скетч показал без моих вмешательств единственное только один uid вставлен от моей метки

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

sadman41 пишет:

Не вижу никаких попыток добавить доп. метки.

Знал бы как сделать не спрашивал бы , я попробовал разные варианты не получается вернул в исходное состояние, короче в таком виде все работает но только на ту одну метку на которую я UID вручную вставлю , мне бы кто обьяснил как еще карты добавлять 

b707
Offline
Зарегистрирован: 26.05.2017

попробуйте записать нужное условие обычным человеческим яхыком, с использованием слов "если" "равно" "и" "или". Потом замените эти слова на соответвующие операторы - и вы получите почти готовый код.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

b707 пишет:

попробуйте записать нужное условие обычным человеческим яхыком, с использованием слов "если" "равно" "и" "или". Потом замените эти слова на соответвующие операторы - и вы получите почти готовый код.

Помогите пожалуйста если знаете как , я в програмировании совсем валенок я в основном железки более менее паяю,  помогите если не сложно 

b707
Offline
Зарегистрирован: 26.05.2017

Agritreid пишет:

Помогите пожалуйста если знаете как

а это разве не помощь:

b707 пишет:

попробуйте записать нужное условие обычным человеческим яхыком

или вы и обычным языком тоже не владаеете?

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

Обычным человеческим языком ? А ардуино поймёт ?  Ардуино , хочу что бы ты зажигал зеленый светодиод если RC522 увидит только метку с таким uid или с таким , а на другие uid которых я тебе не указал не реагируй никак .   Так писать  и куда это вставлять в коде ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вы всерьез считаете, что описание алгоритма следует начинать со слова "хочу"?

От Вас требуется составить на русском языке алгоритм, а не описать свои хотелки.

Собственно, у Вас выбор небольшой: либо Вы пытаетесь сделать что-то самостоятельно и при этом выполняете то, что Вам здесь советуют, либо обращаетесь в раздел"Ищу исполнителя" и там Вам за соответствующее вознаграждение сделают то, что Вам нужно. Только имейте в виду, что составление технического задания - это тоже работа, поэтому чем менее вразумительным будет описание Вами хотелок, тем дороже выйдет заказ.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

andriano пишет:

Вы всерьез считаете, что описание алгоритма следует начинать со слова "хочу"?

От Вас требуется составить на русском языке алгоритм, а не описать свои хотелки.

Собственно, у Вас выбор небольшой: либо Вы пытаетесь сделать что-то самостоятельно и при этом выполняете то, что Вам здесь советуют, либо обращаетесь в раздел"Ищу исполнителя" и там Вам за соответствующее вознаграждение сделают то, что Вам нужно. Только имейте в виду, что составление технического задания - это тоже работа, поэтому чем менее вразумительным будет описание Вами хотелок, тем дороже выйдет заказ.

Задача проста думаю для специалиста все уже сто раз разжевал ,  нужно что то в коде как то изменить что бы на определенном диджитал пине менялось значение , при условии если UID такой-то или еще несколько которые я вручную вписал совпадают с теми которые приходят с RC522 а как это сделать правильно я незнаю предполагаю конечно что где то в этой срочке нужно что то менять  Serial.println();

  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "93 9B 42 1A" || "1F 3B 05 66"  ) //change here the UID of the card/cards that you want to give access    попробовал вот между UID воткнуть (||  или)  но не помогло
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Agritreid пишет:

 Задача проста думаю для специалиста 

Дак ты сам хочешь разобрацца, или со специалистом?

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

вапще, правила хорошего тона говорят, что, по вопросам переделки кода, перво-наперво нада обращаца к его автару. 

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

Логический оператор OR применяется к условиям, а не к значениям. Размножайте условия целиком, а не частями.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

DetSimen пишет:

Agritreid пишет:

 Задача проста думаю для специалиста 

Дак ты сам хочешь разобрацца, или со специалистом?

Хотелось бы самому но не получается а точнее непонятно что бы понимать нужно горы информации перекопать да еще проблема что английский я на уровне твоя моя непанимать

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

sadman41 пишет:
Логический оператор OR применяется к условиям, а не к значениям. Размножайте условия целиком, а не частями.
То есть  "ИЛИ  ||  "  нужно где то раньше вставлять ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Agritreid пишет:

Хотелось бы самому но не получается а точнее непонятно что бы понимать нужно горы информации перекопать да еще проблема что английский я на уровне твоя моя непанимать

Так с этим никто не спорит.

И "горы информации" и владение техническим английским. Без этого никак.

От нас то Вы чего хотите?

PS. И еще: Вы очень небрежно пишете, пропускаете знаки препинания и пр. В программировании так нельзя, компилятор этого не прощает. Так что к тому, о чем Вы написали, нужно еще добавить: уделять намного больше внимания тому, как Вы пишете. Это навык, без которого в программировании делать нечего.

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

Agritreid пишет:

sadman41 пишет:
Логический оператор OR применяется к условиям, а не к значениям. Размножайте условия целиком, а не частями.
То есть  "ИЛИ  ||  "  нужно где то раньше вставлять ?


Давайте подумаем - как выглядит условие сравнения?

negavoid
Offline
Зарегистрирован: 09.07.2016
 if (content.substring(1) == "93 9B 42 1A" || content.substring(1) == "1F 3B 05 66")

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Agritreid пишет:
но не получается

Пока неясно, получается или нет, т.к. никто и не пытается. Совет из #16 проигнорирован, вместо этого какие-то "||" прости Господи куда-то пихаются.

Agritreid пишет:

что бы понимать нужно горы информации перекопать

А то! Везде и во всём так. Или перекапывай сам, или плати тому, кто перекопал.

Agritreid пишет:

английский я на уровне твоя моя непанимать

А это, по нынешним временам, уже инвалидность несовместимая с комфортной жизнью. Лечитесь Прокачивайтесь.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

negavoid пишет:

 if (content.substring(1) == "93 9B 42 1A" || content.substring(1) == "1F 3B 05 66")

 

СПАСИБО ! Громадное человеческое ! Все отлично работает как и задумывалось , еще вопросик, если больше меток добавлять в скетч то это будет выглядеть по аналогии так   if (content.substring(1) == "93 9B 42 1A" || content.substring(1) == "1F 3B 05 66") || content.substring(1) == "XX XX XX XX")    ?

negavoid
Offline
Зарегистрирован: 09.07.2016

Пытается, просто вот так вот у него получается. Пусть сегодня будет день доброты :)

Пожалуйста. Да, верно. Это, на самом-то деле, наихудший способ сравнения, но для совсем начинающего сойдёт.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

Доброго времени суток Гуру !  Снова нужна ваша помощь, еще бы одну задачу как-то реализовать и можно будет замок монтировать на дверь,  код я уже подпилил слегка, тайминги (delay) настроил как мне надо и поменял последовательность срабатывания пинов 6, 5, 3,    и третий пин реле это я добавил, в общем задача такая что бы при срабатывании "Serial.println("Authorized access");" пины реле при каждой сработке менялись как бы местами , другими словами подносим метку к RC522     срабатывает RELAY_on 3 подносим второй раз срабатывает RELAY 5 и так по кругу ,  как это реализовать ?  Может от куда нибудь готовый кусок кода взять адаптировать в этот скетч 

[code]
//Viral Science www.youtube.com/c/viralscience
//RFID Solenoid Lock

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
#define LED_G 6 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 5 //relay pin 1 off
#define RELAY_on 3 //relay pin 2 on
#define BUZZER 7 //buzzer pin
#define ACCESS_DELAY 250          // время задержки на правильный ключь
#define DENIED_DELAY 1000         // время задержки на отказ в доступе
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup()
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();          // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(RELAY, OUTPUT);
  pinMode(RELAY_on, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  digitalWrite(RELAY, LOW);
  Serial.println("Put your card to the reader...");
  Serial.println();

}
void loop()
{
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "93 9B 42 1A" || content.substring(1) == "1F 3B 05 66") //change here the UID of the card/cards that you want to give access

  {
    Serial.println("Authorized access");
    Serial.println();
    digitalWrite(LED_G, HIGH);
    delay(500);
    digitalWrite(RELAY, HIGH);
    digitalWrite(RELAY_on, HIGH);
    delay(ACCESS_DELAY);
    digitalWrite(RELAY, LOW);
    digitalWrite(RELAY_on, LOW);
    digitalWrite(LED_G, LOW);
    delay(1500);                     // задержка после чтения UID
  }

  else   {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 300);
    delay(DENIED_DELAY);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
  }
}
[/code]

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

да, ничО не меняется в этом 2020 году, положи палец в рот...

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

xDriver пишет:

да, ничО не меняется в этом 2020 году, положи палец в рот...

Денег нет но вы держитесь ;-)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Agritreid пишет:

Снова нужна ваша помощь

Вроде, тебе в прошлый раз предлагали чему-нибудь научиться. Ты послал это предложение "на" и предпочёл дождаться халявы от negavoid. Не послал бы - этого поста бы уже не было.

А так ... ну, чё, у нас же тут известный филиал конгрегации Матери Терезы Калькуттской. Не negavoid, так ещё кто (чьё там дежурство?) подаст убогому Христа ради, наверняка. "Просите и дано будет вам".

kost82
Offline
Зарегистрирован: 30.11.2015

Для всех делателей RFID-замков (и для себя на память): вот здесь лежит библиотека, у которой среди примеров ее работы есть AccessControl. В ней реализована целая система доступа: одна считанная карта назначается "мастер-ключом". При поднесении мастер-ключа - следующая поднесенная карта добавляется в список "известных карт". При повторном поднесении - исключаются из списка. При выходе из режима программирования - известные карты открывают замок.

Ну а чтоб открывать замки на разных пинах я бы сделал так: создал бы массив пинов, при каждом новом открытии замка брал бы из массива номер пина (начиная с нулевого элемента массива), соответствующий текущему счетчику открытий замка, подавал на него сигнал открытия двери и увеличивал бы счетчик открытий на единицу. Если счетчик открытий достиг предела (количества элементов в массиве - 1) - его надо сбрасывать на ноль, чтобы перебирать массив сначала.

P.S.: как уже говорилось выше - замок на RFID-метках, который открывается при сравнении ID метки с известными ID-шниками очень небезопасен. Не вздумайте ставить его на дверь в квартиру. Я делал для квеста - там нормально. А для чего-то более ценного - не стоит делать.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

kost82 пишет:

Для всех делателей RFID-замков (и для себя на память): вот здесь лежит библиотека, у которой среди примеров ее работы есть AccessControl. В ней реализована целая система доступа: одна считанная карта назначается "мастер-ключом". При поднесении мастер-ключа - следующая поднесенная карта добавляется в список "известных карт". При повторном поднесении - исключаются из списка. При выходе из режима программирования - известные карты открывают замок.

Ну а чтоб открывать замки на разных пинах я бы сделал так: создал бы массив пинов, при каждом новом открытии замка брал бы из массива номер пина (начиная с нулевого элемента массива), соответствующий текущему счетчику открытий замка, подавал на него сигнал открытия двери и увеличивал бы счетчик открытий на единицу. Если счетчик открытий достиг предела (количества элементов в массиве - 1) - его надо сбрасывать на ноль, чтобы перебирать массив сначала.

P.S.: как уже говорилось выше - замок на RFID-метках, который открывается при сравнении ID метки с известными ID-шниками очень небезопасен. Не вздумайте ставить его на дверь в квартиру. Я делал для квеста - там нормально. А для чего-то более ценного - не стоит делать.

Спасибо !  Я нашол код для кнопки явно его можно тут использовать, только я совсем не знаю как его в свой скетч вставить 

[code]
int ledPin1 = 13;
int ledPin2 = 12;
int switchPin = 7;

int val;
int state;
int c;

#define TIME 2000 // 2 сек
unsigned long int time;

void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, LOW);
}

void loop()
{
  state = digitalRead(switchPin);

  if (state == HIGH && c == 0) // нажали кнопку
  {
    c = 1;
  }
  if (state == LOW && c == 1) // отпустили кнопку
  {
    val = ++val;
    if (val == 3)
    {
      val = 0;
    }
    c = 0;
    time = millis(); // обнуляем счетчик
  }

  if (val == 0) // выключаем светодиоды
  {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
  }
  if (val == 1) // Если мы кнопку 1 раз нажали и отпустили
  {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
  }
  if (val == 2) // Если мы кнопку 2 раз нажали и отпустили
  {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
  }

// Если после двух секунд мы не нажали второй раз на кнопку, то возвращаемся в дефолт - тушим светодиоды
  if (millis() - time > TIME)
  {
    if (val != 2)
    {
      val = 0;
    }
  }
  delay(10);

[/code]

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Agritreid пишет:
только я совсем не знаю как его в свой скетч вставить
А чего тут знать-то? Постишь хотелку в коммерческом разделе, платишь и тебе вставляют. Знать нечего.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Agritreid пишет:

Я нашол код для кнопки явно его можно тут использовать, только я совсем не знаю как его в свой скетч вставить 

Пробуй, учись - и у тебя всё получится. Код ведь нашёл - а это уже половина дела. Теперь разбирайся, вставляй - мы в тебя верим. Главное - вставить в правильную дырочку, хотя - и в неправильную тоже норм, главное - смазки побольше.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

Концепция поменялась , решил добавить кнопку и концевик , будет использоваться два реле, одно реле на закрытие замка, второе на открытие . 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Agritreid пишет:

будет использоваться 

Ну, пишите. Напишете - будет, не напишете - не будет.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

Код стал таким 

[code]
//Viral Science www.youtube.com/c/viralscience
//RFID Solenoid Lock

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
#define LED_G 6 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 5 //relay pin 1 off
#define RELAY_off 3 //relay pin Закрыть замок
#define wipeA 8     // Button pin for WipeMode Кнопка A
#define wipeB 2     // Button pin for WipeMode КОНЦЕВИК B
#define BUZZER 7 //buzzer pin
#define ACCESS_DELAY 250          // время задержки на правильный ключь
#define DENIED_DELAY 1000         // время задержки на отказ в доступе
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup()
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();          // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(RELAY, OUTPUT);
  pinMode(RELAY_off, OUTPUT);      // Закрыть замок
  pinMode(wipeA, INPUT_PULLUP);   // Enable pin's pull up resistor кнопка А
  pinMode(wipeB, INPUT_PULLUP);   // Enable pin's pull up resistor КОНЦЕВИК В
  pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  digitalWrite(RELAY, LOW);
  Serial.println("Put your card to the reader...");
  Serial.println();

}
void loop()
{
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "93 9B 42 1A" || content.substring(1) == "1F 3B 05 66") //change here the UID of the card/cards that you want to give access

  {
    Serial.println("Authorized access");
    Serial.println();
    digitalWrite(LED_G, HIGH);
    delay(1000);                     // задержка перед открытием замка
    digitalWrite(RELAY, HIGH);
    
    delay(ACCESS_DELAY);
    digitalWrite(RELAY, LOW);
    delay(DENIED_DELAY);
    digitalWrite(LED_G, LOW);
    delay(1500);                     // задержка после чтения UID
  }

  else   {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 300);
    delay(DENIED_DELAY);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
    digitalWrite(RELAY_off, HIGH);
    delay(ACCESS_DELAY);
    digitalWrite(RELAY_off, LOW);
  }
}
[/code]

Теперь еще нужно кнопку и концевик  ( pinMode(wipeA, INPUT_PULLUP); pinMode(wipeB, INPUT_PULLUP); добавить в "void loop()"  да ?

kost82
Offline
Зарегистрирован: 30.11.2015

Agritreid пишет:

Теперь еще нужно кнопку и концевик  ( pinMode(wipeA, INPUT_PULLUP); pinMode(wipeB, INPUT_PULLUP); добавить в "void loop()"  да ?

Нет.

В Гугле забанили чтоли? Разве трудно посмотреть что делает pinMode()? И вообще лучше начать с мигания светодиодами, а там, глядишь, и до всего остального дорастете.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Agritreid пишет:

Теперь еще нужно ...

Блин! Ну, объяснили ж тебе всё! Нафига вот?! Я вчерась с Петровичем поспорил, что ты теперь хоть с недельку халявы клянчить не будешь. Повёл бы ты себя как человек, я б в следующую пятницу ром коллекционный пробовал, а так ... грёбанную прошивку для его метеостанции писать придётся :-( 

kost82
Offline
Зарегистрирован: 30.11.2015

Ворота пишет:

Я вчерась с Петровичем поспорил, что ты теперь хоть с недельку халявы клянчить не будешь. Повёл бы ты себя как человек, я б в следующую пятницу ром коллекционный пробовал, а так ... грёбанную прошивку для его метеостанции писать придётся :-( 

Дак может Agritreid это и есть Петрович. А что - нормальная схема: регаешь новый аккаунт, просишь какую-нибудь херню примитивную. Кто-то сжалится и напишет решение. Затем споришь, что просьбы прекратятся - и вуаля - прошивка для метеостанции нахаляву готова.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kost82 пишет:

Дак может Agritreid это и есть Петрович. 

Не, я бы в #43 в строке №23 использовал бы 115200.

А за идею спасибо. Может, воспользуюсь :-)

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

ЕвгенийП пишет:

Не, я бы в #43 в строке №23 использовал бы 115200.

Вы 57600 используете, не вводите общественность в заблуждение...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

Вы 57600 используете, не вводите общественность в заблуждение...

Я использую 57600 для протеуса - он больше не понимает и 115200 для железа.

Agritreid
Agritreid аватар
Offline
Зарегистрирован: 08.01.2020

ЕвгенийП пишет:

 

Не, я бы в #43 в строке №23 использовал бы 115200.

 

Куда мне такие скоростя , фильмы что ли смотреть с ардуинки в мониторе порта в Full HD