Как сканировать температуру MLX90614ESF после того, как MFRC522 сканирует RFID-метку?

//THIS IS THE RFID CODE

#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
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();                                              // Init MFRC522 card
    //shows in serial that it is ready to read
}
//*****************************************************************************************//
void loop() {
  // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
  //some variables we need
  byte block;
  byte len;
  MFRC522::StatusCode status;
  //-------------------------------------------

  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

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


  byte buffer1[18];

  block = 4;
  len = 18;

  //------------------------------------------- GET FIRST NAME
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
  if (status != MFRC522::STATUS_OK) {
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer1, &len);
  if (status != MFRC522::STATUS_OK) {
    return;
  }

  //PRINT FIRST NAME
  for (uint8_t i = 0; i < 16; i++)
  {
    if (buffer1[i] != 32)
    {
      Serial.write(buffer1[i]);
    }
  }
  Serial.print(" ");

  //---------------------------------------- GET LAST NAME

  byte buffer2[18];
  block = 1;

  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
  if (status != MFRC522::STATUS_OK) {
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer2, &len);
  if (status != MFRC522::STATUS_OK) {
    return;
  }

  //PRINT LAST NAME
  for (uint8_t i = 0; i < 16; i++) {
    Serial.write(buffer2[i] );
  }

  //----------------------------------------

  delay(1000); //change value if you want to read cards faster

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//

// AND THIS IS THE MLX90614 CODE 
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(9600);

  mlx.begin();  
}

void loop() {
  
  Serial.print("*\Body Temperature = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");

  Serial.println();
  delay(500);
}

, 👍1

Обсуждение

спасибо, я исправлю это сразу, @Ace Canacan

https://arduinoprosto.ru/q/78362/how-can-i-make-the-mlx90614-infrared-thermal-scanner-to-measure-temperature-af я опубликовал еще один с исправлениями., @Ace Canacan

извините за это, я уже отредактировал этот и удалил другой. это мой первый раз на этой платформе., @Ace Canacan

Пожалуйста, добавьте текст к вашему вопросу. Что происходит, почему это не то, что вы ожидали и что вы хотели бы. Хм, судя по всему, этот код, скорее всего, не компилируется, потому что у вас есть несколько функций, использующих одно и то же имя., @st2000

Спасибо, что не удваиваешь!, @st2000


1 ответ


0

Похоже, что вы просто объединили код из скетча RFID-метки и код из температурного скетча вместе. Это не сработает, так как обе программы содержат функции с одинаковыми именами. В частности, "setup()" и "loop()". Все, что вам нужно сделать, это интегрировать код для каждой функции "setup()" в одну функцию "setup ()". Аналогично, вам нужно сделать то же самое с функциями "loop ()".

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

,

Кто-то может на самом деле запрограммировать для вас решение @Ace Canacan. Я думаю, что ты должен сначала попытаться разобраться в себе. Кроме того, всегда лучше, если вы попробуете что-нибудь, прежде чем задавать свой вопрос здесь. Больше людей будут готовы помочь, если увидят, что вы пытались несколько раз, прежде чем задать вопрос., @st2000