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

Нет ответов
Ujine
Offline
Зарегистрирован: 06.04.2017
Не пинайте сильно уважаемый 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.
 
Вот код для передатчика 
#include <OneWire.h>
#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 и Даласовской все компелиться тоже при отключении библиотек для передатчика. вместе не хотят.
Подскажите плиз где грабли.