Arduino + RFID + сенсор температуры

Тема в разделе "Arduino & Shields", создана пользователем Злая Птичка, 1 дек 2013.

  1. Здравствуйте.
    Пока ещё не заказал RFID сенсор, но уже пишу код под него.

    Что требуется:
    1. Если к сенсору RFID приложена карта, передавать в Serial порт строку вида: "Temperature = 2C, Humidity = 10%CARD363636", где 363636 - номер карты, 2C и 10% соответственно - температура и влажность.
    2. Если к сенсору RFID НЕ приложена карта, передавать в Serial порт строку вида: "Temperature = 2C, Humidity = 10%CARD", где 2C и 10% соответственно - температура и влажность.
    (без кавычек)


    Код на Arduino:

    PHP:
        // подключаем библиотеку температуры
        #include <dht.h>

        // подключаем библиотеку для работы с RFID
        #include <SoftwareSerial.h>

        // создаём объект-сенсор
        DHT sensor = DHT();

        // создаём обьект-RFID

        SoftwareSerial rfid = SoftwareSerial(5, 6);

        // строка для значений температуры

        char msg[128];

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

            // методом attach объявляем к какому контакту подключен
            // сенсор. В нашем примере это нулевой аналоговый контакт
            sensor.attach(A5);
            // после подачи питания ждём секунду до готовности сенсора к работе
            delay(500);
            // проверяем датчик температуры
            sprintf(msg, "Temperature = %dC, Humidity = %d%%", sensor.getTemperatureInt(), sensor.getHumidityInt());
            //Serial.println(msg);
                if (rfid.available())
                {
                    Serial.print(msg);
                    Serial.print("CARD");
                    while (rfid.available())
                    {
                    Serial.print(rfid.read());
                    }
                }else{
                    Serial.print(msg);
                    Serial.print("CARD");
                }
            // проверяем номер RFID-карты

        }

        void loop()
        {
        }

     
    Вопрос: правильный ли код я написал под Arduino? (протестировать не могу, т.к. пока нету RFID-сенсора)
     
    Последнее редактирование: 5 дек 2013
  2. Заработало со следующим кодом:

    PHP:
      // подключаем библиотеку температуры
        #include <dht.h>

        // подключаем библиотеку для работы с RFID
        #include <SoftwareSerial.h>

        // создаём объект-сенсор
        DHT sensor = DHT();

        // создаём обьект-RFID

        SoftwareSerial rfid = SoftwareSerial(5, 6);

        // строка для значений температуры

        char msg[128];

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

            // методом attach объявляем к какому контакту подключен
            // сенсор. В нашем примере это нулевой аналоговый контакт
            sensor.attach(A5);
            // после подачи питания ждём секунду до готовности сенсора к работе
            delay(500);


        }

        void loop()
        {
                sensor.update();
                Serial.println("");
                sprintf(msg, "Temperature = %dC, Humidity = %d%%", sensor.getTemperatureInt(), sensor.getHumidityInt());
                if (rfid.available())
                {
                    Serial.print(msg);
                    Serial.print("CARD");
                    while (rfid.available())
                    {
                    Serial.print(rfid.read());
                    }
                }else{
                    Serial.print(msg);
                    Serial.print("CARD");
                }
                delay(1000);
        }

     
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Вместо
    Код (Text):

     if (rfid.available())
     {
       Serial.print(msg);
       Serial.print("CARD");
       while (rfid.available())
       {
         Serial.print(rfid.read());
       }
     }
     else{
       Serial.print(msg);
       Serial.print("CARD");
     }
    можно написать короче:
    Код (Text):
      Serial.print(msg);
      Serial.print("CARD");
      while (rfid.available())
        Serial.print(rfid.read());