ошибка при компиляции скетча для модуля 433 мГц под мегу 2560

Тема в разделе "Arduino & Shields", создана пользователем Ujine, 23 янв 2018.

  1. Ujine

    Ujine Нуб

    Не пинайте сильно уважаемый ALL но есть проблема при компиляции скетча для передачи температуры по каналу 433мГц на ардуине мега 2560 возникает ошибка:
    C:\Users\Gi\Documents\Arduino\libraries\OneWire\OneWire.cpp: In static member function 'static uint16_t OneWire::crc16(const uint8_t*, uint16_t, uint16_t)':

    C:\Users\Gi\Documents\Arduino\libraries\OneWire\OneWire.cpp:571:42: error: '_crc16_update' was not declared in this scope

    crc = _crc16_update(crc, input);

    ^

    exit status 1
    Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.

    Вот код для передатчика

    Код (C++):

    #include <OneWire.Dh>
    #include <DallasTemperature.h>
    #include <LiquidCrystal_I2C.h>
    #include <EEPROM.h>                              
    #include <VirtualWire.h>
    #include <EasyTransferVirtualWire.h>



    #define ledPin 22                                


    OneWire oneWire(3); // вход датчиков 18b20
    DallasTemperature ds(&oneWire);

    LiquidCrystal_I2C lcd (0x3F, 40, 2);                     // инициализируем 2х строчный дисплей1
    LiquidCrystal_I2C lcd1 (0x3E, 20, 1);                     // инициализируем 2х строчный дисплей2

    DeviceAddress sensor1 = {0x28, 0xFF, 0x10, 0x2F, 0x01, 0x17, 0x05, 0xC8 };
    DeviceAddress sensor2 = {0x28, 0xFF, 0x70, 0x66, 0x01, 0x17, 0x04, 0xF4 };
    DeviceAddress sensor3 = {0x28, 0xFF, 0xAE, 0x31, 0x01, 0x17, 0x05, 0x08 };



    int state = LOW;
    int floorPin = 28;                                 // порт управления полом
    int setAeroTemp;
    int AeroTempGisteresis;                            // гистерезис температуры воздуха
    int setFloorTemp = 40;                             // Температура пола при которой отключается нагрев
    int comfortFloorTemp = 35;                         // комфортная температура поверхности пола
    int FloorTempGisteresis = 1;                       // Гистерезис температуры пола
    float FloorTemp;                                   // Температура теплого пола
    float Temp;                                        // Температура воздуха на балконе
    float OutDoorTemp;                                 // Температура наружного воздуха


    boolean ledEnabled = false;

    EasyTransferVirtualWire ET;

    struct SEND_DATA_STRUCTURE{
      //put your variable definitions here for the data you want to send
      //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
      //Struct can'e be bigger then 26 bytes for VirtualWire version
      byte ID;
      float temperature;
      float temperatureA;
    };

    //give a name to the group of data
    SEND_DATA_STRUCTURE mydata;

    void setup() {
      //start the library, pass in the data details
      ET.begin(details(mydata));
      mydata.ID = 1;
      // Initialise the IO and ISR
      vw_set_ptt_inverted(true); // Required for DR3100
      vw_set_tx_pin(8);
      vw_setup(2000);  // Bits per sec
      randomSeed(analogRead(0));

      Serial.begin(9600);
      ds.begin();
      lcd.init();                               // инициализация LCD
      lcd.backlight();                          // включаем подсветку
      lcd1.init();                               // инициализация LCD1
      lcd1.backlight();                          // включаем подсветку LCD1



      pinMode(floorPin, OUTPUT);                       // Включаем порт управления теплым полом
      pinMode(ledPin, OUTPUT);                        

    }

    void loop() {

      ds.requestTemperatures(); // считываем температуру с датчиков
            Temp = ds.getTempC(sensor1);
            OutDoorTemp = ds.getTempC(sensor2);
            FloorTemp = ds.getTempC(sensor3);

      mydata.temperature = OutDoorTemp;
      mydata.temperatureA = Temp;


      ET.sendData();
      delay(3000);
     
        lcd.setCursor(0, 0);
        lcd.print("Sensor 1: ");
        lcd.print(Temp); // отправляем температуру
        lcd.write(byte(223));
        lcd.print("C");
        lcd1.setCursor(0, 0);
        lcd1.print("OutDoorTemp:");
        lcd1.print(OutDoorTemp);
        lcd1.write(byte(223));
        lcd1.print("C");
        lcd.setCursor(0, 1);
        lcd.print("Sensor 3: ");
        lcd.print(FloorTemp);
        lcd.write(byte(223));
        lcd.print("C");

      setAeroTemp = EEPROM.read(0);
      AeroTempGisteresis = EEPROM.read(7);                          //гистерезис температуры воздуха. Хранится в ЕПРОМ в 7-ой ячейке

    digitalWrite(ledPin, state);
    state = !state;
    //=========================================================================================
    // Модуль управления ТЕПЛЫМ ПОЛОМ
    //=========================================================================================
        Serial.println("----------------------------------------------------------------------------------------------------");
        Serial.println("ТЕПЛЫЙ ПОЛ");
        Serial.println("----------------------------------------------------------------------------------------------------");
        Serial.print ("температура  включения пола *C: ");
        Serial.println(setFloorTemp - FloorTempGisteresis);
        Serial.print ("температура  отключения пола *C: ");
        Serial.println(setFloorTemp);
        Serial.print ("гистерезис температуры  включения пола *C: ");
        Serial.println(FloorTempGisteresis);
        Serial.print ("температура  включения пола по воздуху *C: ");
        Serial.println(setAeroTemp - AeroTempGisteresis);
        Serial.print ("температура  воздухa над теплым полом *C: ");
        Serial.println(Temp);
      if (FloorTemp >= setFloorTemp||Temp >= setAeroTemp)
      {
        digitalWrite (floorPin, LOW);
        lcd.setCursor(37, 1);
        lcd.print("-");                             // Выводим: -
        Serial.println("Пол Выключен");
        Serial.print("достигнута температура пола *C: ");
        Serial.println(FloorTemp);
       
      }
      else
      {
        if (FloorTemp <= (setFloorTemp - FloorTempGisteresis) && Temp < (setAeroTemp - AeroTempGisteresis)||FloorTemp < comfortFloorTemp)
        {
          digitalWrite (floorPin, HIGH);
          lcd.setCursor(37, 1);
          lcd.print("|");                            // Выводим: |
          Serial.println("пол Включен");
          Serial.print("идет нагрев пола до температуры *C: ");
          Serial.println(setFloorTemp);
          Serial.print ("температура пола *C: ");
          Serial.println(FloorTemp);
         
        }
        else
        {
        //digitalWrite (floorPin, LOW);
        lcd.setCursor(37, 1);
        lcd.print("+");                             // Выводим: -
        Serial.println("Пол Выключен");
        Serial.print("достигнута температура пола *C: ");
        Serial.println(FloorTemp);
       
        }
      }
         
      Serial.println("----------------------------------------------");

    }
     
    при отключении библиотеки OneWire и Даласовской все компелиться тоже при отключении библиотек для передатчика. вместе не хотят.
    Подскажите плиз где грабли.
     
  2. DIYMan

    DIYMan Guest