نمایش نتایج: از 1 به 4 از 4

موضوع: rfid+shild data logger+lcd

  1. #1
    Junior Member
    تاریخ عضویت
    Aug 2016
    نوشته ها
    5

    Question rfid+shild data logger+lcd

    سلام دوستان
    من تازه با آردوینو آشنا شدم
    میخوام با استفاده از rfid هرکس کارت میزنه اسم و تاریخ ورودش روی lcdنمایش داده بشه

    کد مربوط به rfid
    #include <SPI.h>
    #include <MFRC522.h>

    #define RST_PIN 9 // Configurable, see typical pin layout above
    #define SS_PIN 10 // Configurable, see typical pin layout above

    MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

    void setup() {
    Serial.begin(9600); // Initialize serial communications with the PC
    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
    mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
    Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
    }

    void loop() {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
    }

    // Dump debug info about the card; PICC_HaltA() is automatically called
    mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
    }



    و کد LCD(قبلا اجرا می داد ولی الان نمیده دلیلشا نمیدونم)

    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display

    void setup()
    {
    lcd.init(); // initialize the lcd
    lcd.init();
    // Print a message to the LCD.
    lcd.backlight();
    lcd.setCursor(3,0);
    lcd.print("Hello, world!");
    lcd.setCursor(2,1);
    lcd.print("Ywrobot Arduino!");
    lcd.setCursor(0,2);
    lcd.print("Arduino LCM IIC 2004");
    lcd.setCursor(2,3);
    lcd.print("Power By Ec-yuan!");
    }


    void loop()
    {
    }

    و کد ساعت هم میخواد نمیدونم چطوری همشا با هم بنویسم میشه راهنماییم کنین

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    میتونید از این کد الهام بگیرید برای کاری که قصد دارید انجام بدید:
    کد:
    
    
    
    //Read And Write by Tim Tolar
    //enjoy and fell free to change code. Thanks!
    
    
    //RFID pinout
    //Reset   RST          9   
    //SS      SDA          10  
    //MOSI    MOSI         11 
    //MISO    MISO         12 
    //SCK     SCK          13 
    
    
    
    
    #include <SPI.h>
    #include <MFRC522.h>
    #include <LiquidCrystal.h>   //library for lcd
    
    
    
    
    
    
    #define RST_PIN         9          
    #define SS_PIN          10      
    
    
    MFRC522 mfrc522(SS_PIN, RST_PIN);  
    MFRC522::MIFARE_Key key;
    LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
    const int BackLight = 8;
    void setup() {
    pinMode(BackLight, OUTPUT);
    digitalWrite(BackLight, HIGH);  
    lcd.begin(16,2);
    delay(100);  
    lcd.setCursor(0,0);
    lcd.println(F("Read And Write  "));
    lcd.setCursor(0,1);
    lcd.println(F("by TIM TOLAR :)  "));
    delay(2000);
    lcd.clear();  
    
    
    SPI.begin();       
    mfrc522.PCD_Init();
    for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;}
    lcd.setCursor(0,0); 
    lcd.println(F("Scan a MIFARE  !"));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Using key A or B!"));
    delay(1000);
    lcd.clear();
    dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE);
    lcd.setCursor(0,0);
    lcd.println(";)Files will be ");
    lcd.setCursor(0,1);
    lcd.println(F("writen in sector"));
    delay(1000);
    lcd.clear();
    }
    
    
     
    void loop() {
    
    
    if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
    if ( ! mfrc522.PICC_ReadCardSerial())
    return;
    lcd.begin(16,2);
    lcd.setCursor(0,0);  
    lcd.println(F("Card UID:       "));
    lcd.setCursor(0,1);
    delay(1000);
    lcd.println("MIFARE 522        ");
    delay(1000);
    lcd.clear();
    
    
    dump_byte_array(mfrc522.uid.uidByte,mfrc522.uid.size);
    delay(1000);
    lcd.setCursor(0,0);
    lcd.println(F("PICC type:      "));
    lcd.setCursor(0,1);
    byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
    lcd.print(mfrc522.PICC_GetTypeName(piccType));
    
    
    if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI  
    &&  piccType != MFRC522::PICC_TYPE_MIFARE_1K  
    &&  piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("only works with MIFARE."));
    return;}
    delay(1000);
    lcd.clear();
    
    
    byte sector         = 1;
    byte blockAddr      = 4;
    byte dataBlock[]    = {
            0x01, 0x02, 0x03, 0x04, 
            0x05, 0x06, 0x07, 0x08, 
            0x08, 0x09, 0xff, 0x0b,
            0x0c, 0x0d, 0x0e, 0x0f  
        };
    byte trailerBlock   = 7;
    byte status;
    byte buffer[18];
    byte size = sizeof(buffer);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("checking key A !"));
    status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,1);
    lcd.print(F("checking failed: "));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(mfrc522.GetStatusCodeName(status));
    delay(1000);
    lcd.clear();   
    lcd.setCursor(0,0);
    lcd.println(F("Current data in sector:"));
    mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Reading data ")); 
    lcd.setCursor(0,1);
    lcd.print(F("from block "));
    lcd.print(blockAddr);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,0);
    lcd.print(F("failed"));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.print(mfrc522.GetStatusCodeName(status));}
    lcd.setCursor(0,0);
    lcd.print(F("Data in block "));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(blockAddr);
    lcd.setCursor(0,1);
    dump_byte_array(buffer, 16); 
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("singing key B..."));
    status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid));
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,1);
    lcd.print(F("PCD_Authenticate() failed: "));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(mfrc522.GetStatusCodeName(status));
    return;}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Writing data  ")); 
    lcd.setCursor(0,1);
    lcd.print(blockAddr);
    dump_byte_array(dataBlock, 16);
    delay(1000);
    lcd.clear(); 
    status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16);
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,0);
    lcd.print(F("MIFARE_Write() failed: "));
    lcd.print(mfrc522.GetStatusCodeName(status));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Reading data from block "));
    lcd.setCursor(0,1);   
    lcd.print(blockAddr);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
    if (status != MFRC522::STATUS_OK) {
    lcd.print(F("failed"));
    lcd.setCursor(0,1);
    lcd.println(mfrc522.GetStatusCodeName(status));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Data in block "));
    lcd.setCursor(0,1);  
    lcd.print(blockAddr); 
    dump_byte_array(buffer, 16);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("Checking result..."));
    byte count = 0;
    for (byte i = 0; i < 16; i++) {
    if (buffer[i] == dataBlock[i])
    count++;}
    lcd.setCursor(0,1);
    lcd.print(F("Number of bytes that match = ")); 
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(count);
    if (count == 16) {
    lcd.setCursor(0,1);
    lcd.print(F("Success :-)"));
    } else {
    lcd.print(F("Failure, no match :-("));
    lcd.print(F("  perhaps the write didn't work properly..."));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("thanks see you");
    digitalWrite(BackLight, LOW);
    
    
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector);
    mfrc522.PICC_HaltA();
    mfrc522.PCD_StopCrypto1();}
    void dump_byte_array(byte *buffer, byte bufferSize) {
    for (byte i = 0; i < bufferSize; i++) {
    lcd.print(buffer[i] < 0x10 ? " 0" : " ");
    
    
        }
    }
    رفرنس:
    arduino rfid read and write on lcd - All

  3. #3
    Junior Member
    تاریخ عضویت
    Aug 2016
    نوشته ها
    5
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    میتونید از این کد الهام بگیرید برای کاری که قصد دارید انجام بدید:
    کد:
    
    
    
    //Read And Write by Tim Tolar
    //enjoy and fell free to change code. Thanks!
    
    
    //RFID pinout
    //Reset   RST          9   
    //SS      SDA          10  
    //MOSI    MOSI         11 
    //MISO    MISO         12 
    //SCK     SCK          13 
    
    
    
    
    #include <SPI.h>
    #include <MFRC522.h>
    #include <LiquidCrystal.h>   //library for lcd
    
    
    
    
    
    
    #define RST_PIN         9          
    #define SS_PIN          10      
    
    
    MFRC522 mfrc522(SS_PIN, RST_PIN);  
    MFRC522::MIFARE_Key key;
    LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
    const int BackLight = 8;
    void setup() {
    pinMode(BackLight, OUTPUT);
    digitalWrite(BackLight, HIGH);  
    lcd.begin(16,2);
    delay(100);  
    lcd.setCursor(0,0);
    lcd.println(F("Read And Write  "));
    lcd.setCursor(0,1);
    lcd.println(F("by TIM TOLAR :)  "));
    delay(2000);
    lcd.clear();  
    
    
    SPI.begin();       
    mfrc522.PCD_Init();
    for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;}
    lcd.setCursor(0,0); 
    lcd.println(F("Scan a MIFARE  !"));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Using key A or B!"));
    delay(1000);
    lcd.clear();
    dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE);
    lcd.setCursor(0,0);
    lcd.println(";)Files will be ");
    lcd.setCursor(0,1);
    lcd.println(F("writen in sector"));
    delay(1000);
    lcd.clear();
    }
    
    
     
    void loop() {
    
    
    if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
    if ( ! mfrc522.PICC_ReadCardSerial())
    return;
    lcd.begin(16,2);
    lcd.setCursor(0,0);  
    lcd.println(F("Card UID:       "));
    lcd.setCursor(0,1);
    delay(1000);
    lcd.println("MIFARE 522        ");
    delay(1000);
    lcd.clear();
    
    
    dump_byte_array(mfrc522.uid.uidByte,mfrc522.uid.size);
    delay(1000);
    lcd.setCursor(0,0);
    lcd.println(F("PICC type:      "));
    lcd.setCursor(0,1);
    byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
    lcd.print(mfrc522.PICC_GetTypeName(piccType));
    
    
    if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI  
    &&  piccType != MFRC522::PICC_TYPE_MIFARE_1K  
    &&  piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("only works with MIFARE."));
    return;}
    delay(1000);
    lcd.clear();
    
    
    byte sector         = 1;
    byte blockAddr      = 4;
    byte dataBlock[]    = {
            0x01, 0x02, 0x03, 0x04, 
            0x05, 0x06, 0x07, 0x08, 
            0x08, 0x09, 0xff, 0x0b,
            0x0c, 0x0d, 0x0e, 0x0f  
        };
    byte trailerBlock   = 7;
    byte status;
    byte buffer[18];
    byte size = sizeof(buffer);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("checking key A !"));
    status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,1);
    lcd.print(F("checking failed: "));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(mfrc522.GetStatusCodeName(status));
    delay(1000);
    lcd.clear();   
    lcd.setCursor(0,0);
    lcd.println(F("Current data in sector:"));
    mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Reading data ")); 
    lcd.setCursor(0,1);
    lcd.print(F("from block "));
    lcd.print(blockAddr);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,0);
    lcd.print(F("failed"));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.print(mfrc522.GetStatusCodeName(status));}
    lcd.setCursor(0,0);
    lcd.print(F("Data in block "));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(blockAddr);
    lcd.setCursor(0,1);
    dump_byte_array(buffer, 16); 
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("singing key B..."));
    status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid));
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,1);
    lcd.print(F("PCD_Authenticate() failed: "));
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(mfrc522.GetStatusCodeName(status));
    return;}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Writing data  ")); 
    lcd.setCursor(0,1);
    lcd.print(blockAddr);
    dump_byte_array(dataBlock, 16);
    delay(1000);
    lcd.clear(); 
    status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16);
    if (status != MFRC522::STATUS_OK) {
    lcd.setCursor(0,0);
    lcd.print(F("MIFARE_Write() failed: "));
    lcd.print(mfrc522.GetStatusCodeName(status));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Reading data from block "));
    lcd.setCursor(0,1);   
    lcd.print(blockAddr);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
    if (status != MFRC522::STATUS_OK) {
    lcd.print(F("failed"));
    lcd.setCursor(0,1);
    lcd.println(mfrc522.GetStatusCodeName(status));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Data in block "));
    lcd.setCursor(0,1);  
    lcd.print(blockAddr); 
    dump_byte_array(buffer, 16);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println(F("Checking result..."));
    byte count = 0;
    for (byte i = 0; i < 16; i++) {
    if (buffer[i] == dataBlock[i])
    count++;}
    lcd.setCursor(0,1);
    lcd.print(F("Number of bytes that match = ")); 
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(count);
    if (count == 16) {
    lcd.setCursor(0,1);
    lcd.print(F("Success :-)"));
    } else {
    lcd.print(F("Failure, no match :-("));
    lcd.print(F("  perhaps the write didn't work properly..."));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("thanks see you");
    digitalWrite(BackLight, LOW);
    
    
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector);
    mfrc522.PICC_HaltA();
    mfrc522.PCD_StopCrypto1();}
    void dump_byte_array(byte *buffer, byte bufferSize) {
    for (byte i = 0; i < bufferSize; i++) {
    lcd.print(buffer[i] < 0x10 ? " 0" : " ");
    
    
        }
    }
    رفرنس:
    arduino rfid read and write on lcd - All




    .........................
    ممنونم ازتون

    از طریق این تیکه کد برای اسم و تاریخ ورود استفاده میکنه؟ و اینکه کتابخانه تاریخ و ساعت مگه نمی خواد؟
    lcd.println(mfrc522.GetStatusCodeName(status));}
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(F("Data in block "));
    lcd.setCursor(0,1);
    lcd.print(blockAddr);
    dump_byte_array(buffer, 16);
    delay(1000);
    lcd.clear();

  4. #4
    Junior Member
    تاریخ عضویت
    Aug 2014
    نوشته ها
    1
    با عرض سلام و خسته نباشید
    من در پروژه ای نیاز دارم تا اطلاعت چندین سنسور (که تقریبا تمام پایه های اردیونو رو اشغال می کنه) رو در کارت sdذخیره کنم که برای آن شیلد دیتا لاگر تهیه کردم. می خواستم بدونم می شه به منظور آزاد کردن پین های Arduino برای انتقال اطلاعات از icspدر arduino uno ، و در شیلد دیتا لاگر (بع علت نداشتن icsp جدا ) از پایه های اصلی استفاده کرد؟ (دیتا لاگر رو برد اردیونو سوار نکرد و سیم کشید)
    با تشکر

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO