Запись данных на RFID метку.

Тема в разделе "Arduino & Shields", создана пользователем ACID, 27 мар 2017.

  1. ACID

    ACID Нуб

    Здравствуйте, такой вопрос возник: как записать данные на карту rfid метки.
    У меня открывается серво когда подносишь метку. Но нужно, чтобы на метке было определённое число, которое отвечает за количество денег(или количества разрешенных проездов). Подносишь метку - открывается серво и списываются деньги или один проезд.
    Будет использоваться sd карта. На неё планирую записывать данные с компьютера. Допустим создаю txt файл с Rfid идентификатором и количеством проездов в этом файле. Как можно придумать способ открытия файла с сд карты именно при подносе метки и чтение этого файла?) Если что-то непонятно, переспросите, постараюсь лучше объяснять.
    Или есть возможность как-то по-другому это организовать?)
    Пример кода программы:
    Код (C++):
    uidDec = readRFID();
      if (uidDec > 0)
      {
        Serial.print("Card UID: ");
        Serial.println(uidDec);
      }

      if (uidDec == 2422114125)
      {
        servoAngle = 90;
        servo.write(servoAngle);
        delay(3000);
      }

      if (analogRead(photorez3)<400 && servoAngle == 90)
        { // Если у шлакбаума кто-то стоит то шлакбаум будет открыт.
          servoAngle = 90;
          servo.write(servoAngle);
          delay(3000);
        }
      servoAngle = 0;
      servo.write(servoAngle);  // устанавливаем серву в закрытое сосотояние
      Serial.println(analogRead(photorez3));

    unsigned long readRFID()
    {
      if ( !mfrc522.PICC_IsNewCardPresent()) return 0;
      if ( !mfrc522.PICC_ReadCardSerial()) return 0;
      // Vida4a seriynogo nomera metki
      unsigned long uidDecTemp;  // для временного хранения номера метки в десятичном формате
      for (byte i = 0; i < mfrc522.uid.size; i++)
      {
        uidDecTemp = mfrc522.uid.uidByte[i];
        uidDec = uidDec * 256 + uidDecTemp;
      }
      return uidDec;
    }
     
    Последнее редактирование: 27 мар 2017
  2. ACID

    ACID Нуб

    Если в названии txt файла писать идентификатор метки uidec, то думаю можно вызывать именно тот самый файл. Допустим
    Код (C++):
    SD.open(uidec, FILE_WRITE);
    Но во-первых надо имя файла в кавычках писать, а с uidec я не знаю как этого делать)
    А во-вторых как всё это будет вызываться и открываться я себе не представляю)
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    в библиотеке в примерах есть запись на карту.
     
  4. ACID

    ACID Нуб

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

    ACID Нуб

    Может я неправильно формулирую вопрос) Как в текстовом файле читать то, что нужно мне. Например именно ту строчку, или же какой-то в строке например с 3 символа начать читать. Знаю есть position() и seek(), но как пользоваться пока не понимаю.