школьный проект

Тема в разделе "Закажу проект", создана пользователем Маруся, 2 авг 2019.

  1. Onkel

    Onkel Гуру

    Я могу подсказать только как сделать с покнижным считыванием, но не очень быстро. Поеду в субботу в Москву наберу карточек метро, через недельку- другую попробую. мой мыл ydom@mail.ru - отпишите чтобы напрямую.
     
  2. Маруся

    Маруся Нуб

    благодарю
     
  3. Onkel

    Onkel Гуру

    Карточек метро не набрал, ну вернее набрал но потерял, сделал с теми что были. На схеме - светодиоды -один красный, один зеленый, биппер EP1 любой на 5 В, возможно нужно будет резистор поставить для ограничения тока, S1 - любой тумблер (режим запись - работа).


    Код (C++):

    #include <SPI.h>
    #include <MFRC522.h> // библиотека "RFID".
    #include <EEPROM.h>

    #define SS_PIN 10
    #define RST_PIN 9

    #define WRITECARDZ  1
    #define READCARDZ 0


    MFRC522 mfrc522(SS_PIN, RST_PIN);
    unsigned long uidDec, uidDecTemp;  // для храниения номера метки в десятичном формате
    unsigned long Cardz[32];
    byte QofCardz, OldMode, FlagOfNew, Done;

    byte Taken[32];
    void setup() {

      pinMode(4, INPUT_PULLUP);
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);

      Serial.begin(9600);
      Serial.println(" MFR522 Textbook Reminder  MFR522_TB   Waiting for card...");
      SPI.begin();  //  инициализация SPI / Init SPI bus.
      mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.


      EEPROM.get(0, QofCardz  );
      if (QofCardz > 0 && QofCardz < 33)
      {
        for (byte j = 0; j < QofCardz; j++)
          EEPROM.get(1 + sizeof(long)*j, Cardz[j]);

        Serial.print("Textbooks in List : ");
        Serial.println(QofCardz);

      }
      else
      {
        QofCardz = 0;
        Serial.println("No Cardz in Memory");
      }

    }
    void loop() {

      if (digitalRead(4) == LOW)
      {

        if (OldMode == READCARDZ)
        {
          OldMode = WRITECARDZ;
          QofCardz = 0;
          Serial.println("Erase All the Cardz from Memory");
        }

        // Поиск новой метки
        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;
          }
          FlagOfNew = 1;
          for (byte i = 0; i < QofCardz; i++)
          {

            if (uidDec == Cardz[i])
              FlagOfNew = 0;

          }

          if (FlagOfNew == 1)
          {
            Serial.print("New  Card in Memory  UID Card No  ");
            Serial.print(QofCardz);
            Serial.print("   UID    ");
            Serial.println(uidDec); // Выводим UID метки в консоль.
            Serial.print("  Cards in Portfolio:   ");
            Serial.println(QofCardz + 1);

            Cardz[QofCardz] = uidDec;
            QofCardz++;
            digitalWrite(5, HIGH);
            digitalWrite(6, LOW);
            digitalWrite(7, HIGH);


            delay (500);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
          }

        }

      }
      else
      {

        if (OldMode ==  WRITECARDZ)
        {
          OldMode =  READCARDZ;
          Serial.print("Config is done. Cards in Portfolio if Memory : ");
          Serial.println(QofCardz);

          EEPROM.put(0, QofCardz  );
          for (byte j = 0; j < QofCardz; j++)
            EEPROM.put(1 + sizeof(long)*j, Cardz[j]);


        }

        // Поиск новой метки
        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;
          }
          for (byte i = 0; i < QofCardz; i++)
          {

            if (uidDec == Cardz[i])
            {
              Taken[i] = 1;


              Done = 0;
              for (byte j = 0; j < QofCardz; j++)
              {
                if (Taken[j] == 1)
                  Done = Done + 1;


              }

              Serial.print("Added to Portfolio  Card No  ");

              Serial.println(uidDec); // Выводим UID метки в консоль.

              Serial.print("Need more textbooks:  ");

              Serial.println(QofCardz - Done ); // Выводим UID метки в консоль.


              digitalWrite(6, HIGH);
              digitalWrite(5, LOW);
              digitalWrite(7, HIGH);

              delay (500);
              digitalWrite(5, LOW);
              digitalWrite(6, LOW);
              digitalWrite(7, LOW);
              Done = 0;
              for (byte j = 0; j < QofCardz; j++)
              {
                if (Taken[j] == 1)
                  Done = Done + 1;


              }

              if (Done == QofCardz)
              {
                Serial.println("All Done  ");


                digitalWrite(6, HIGH);
                digitalWrite(5, LOW);
                digitalWrite(7, HIGH);
                delay (500);
                digitalWrite(7, LOW);

              }

            }

          }

     
          delay(100);
        }

      }
    }
     

    Вложения:

    • RFID_RC5220.JPG
      RFID_RC5220.JPG
      Размер файла:
      169,3 КБ
      Просмотров:
      16
  4. Onkel

    Onkel Гуру

    Вот видео

     
    KindMan нравится это.